[Lldb-commits] [lldb] r167218 [2/3] - in /lldb/branches/windows: ./ examples/plugins/commands/ examples/python/ examples/summaries/cocoa/ examples/synthetic/ examples/synthetic/bitfield/ include/lldb/ include/lldb/API/ include/lldb/Breakpoint/ include/lldb/Core/ include/lldb/Expression/ include/lldb/Host/ include/lldb/Interpreter/ include/lldb/Symbol/ include/lldb/Target/ lib/ lldb.xcodeproj/ scripts/ scripts/Python/ scripts/Python/interface/ source/API/ source/Breakpoint/ source/Commands/ source/Core/ source/Expressio...

Carlo Kok ck at remobjects.com
Thu Nov 1 00:04:05 PDT 2012


Added: lldb/branches/windows/scripts/lldb_wrap.cxx
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/scripts/lldb_wrap.cxx?rev=167218&view=auto
==============================================================================
--- lldb/branches/windows/scripts/lldb_wrap.cxx (added)
+++ lldb/branches/windows/scripts/lldb_wrap.cxx Thu Nov  1 02:04:04 2012
@@ -0,0 +1,16594 @@
+/* ----------------------------------------------------------------------------
+ * This file was automatically generated by SWIG (http://www.swig.org).
+ * Version 2.0.8
+ * 
+ * This file is not intended to be easily readable and contains a number of 
+ * coding conventions designed to improve portability and efficiency. Do not make
+ * changes to this file unless you know what you are doing--modify the SWIG 
+ * interface file instead. 
+ * ----------------------------------------------------------------------------- */
+
+#define SWIGCSHARP
+
+
+#ifdef __cplusplus
+/* SwigValueWrapper is described in swig.swg */
+template<typename T> class SwigValueWrapper {
+  struct SwigMovePointer {
+    T *ptr;
+    SwigMovePointer(T *p) : ptr(p) { }
+    ~SwigMovePointer() { delete ptr; }
+    SwigMovePointer& operator=(SwigMovePointer& rhs) { T* oldptr = ptr; ptr = 0; delete oldptr; ptr = rhs.ptr; rhs.ptr = 0; return *this; }
+  } pointer;
+  SwigValueWrapper& operator=(const SwigValueWrapper<T>& rhs);
+  SwigValueWrapper(const SwigValueWrapper<T>& rhs);
+public:
+  SwigValueWrapper() : pointer(0) { }
+  SwigValueWrapper& operator=(const T& t) { SwigMovePointer tmp(new T(t)); pointer = tmp; return *this; }
+  operator T&() const { return *pointer.ptr; }
+  T *operator&() { return pointer.ptr; }
+};
+
+template <typename T> T SwigValueInit() {
+  return T();
+}
+#endif
+
+/* -----------------------------------------------------------------------------
+ *  This section contains generic SWIG labels for method/variable
+ *  declarations/attributes, and other compiler dependent labels.
+ * ----------------------------------------------------------------------------- */
+
+/* template workaround for compilers that cannot correctly implement the C++ standard */
+#ifndef SWIGTEMPLATEDISAMBIGUATOR
+# if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560)
+#  define SWIGTEMPLATEDISAMBIGUATOR template
+# elif defined(__HP_aCC)
+/* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
+/* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */
+#  define SWIGTEMPLATEDISAMBIGUATOR template
+# else
+#  define SWIGTEMPLATEDISAMBIGUATOR
+# endif
+#endif
+
+/* inline attribute */
+#ifndef SWIGINLINE
+# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
+#   define SWIGINLINE inline
+# else
+#   define SWIGINLINE
+# endif
+#endif
+
+/* attribute recognised by some compilers to avoid 'unused' warnings */
+#ifndef SWIGUNUSED
+# if defined(__GNUC__)
+#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#     define SWIGUNUSED __attribute__ ((__unused__)) 
+#   else
+#     define SWIGUNUSED
+#   endif
+# elif defined(__ICC)
+#   define SWIGUNUSED __attribute__ ((__unused__)) 
+# else
+#   define SWIGUNUSED 
+# endif
+#endif
+
+#ifndef SWIG_MSC_UNSUPPRESS_4505
+# if defined(_MSC_VER)
+#   pragma warning(disable : 4505) /* unreferenced local function has been removed */
+# endif 
+#endif
+
+#ifndef SWIGUNUSEDPARM
+# ifdef __cplusplus
+#   define SWIGUNUSEDPARM(p)
+# else
+#   define SWIGUNUSEDPARM(p) p SWIGUNUSED 
+# endif
+#endif
+
+/* internal SWIG method */
+#ifndef SWIGINTERN
+# define SWIGINTERN static SWIGUNUSED
+#endif
+
+/* internal inline SWIG method */
+#ifndef SWIGINTERNINLINE
+# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE
+#endif
+
+/* exporting methods */
+#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+#  ifndef GCC_HASCLASSVISIBILITY
+#    define GCC_HASCLASSVISIBILITY
+#  endif
+#endif
+
+#ifndef SWIGEXPORT
+# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+#   if defined(STATIC_LINKED)
+#     define SWIGEXPORT
+#   else
+#     define SWIGEXPORT __declspec(dllexport)
+#   endif
+# else
+#   if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
+#     define SWIGEXPORT __attribute__ ((visibility("default")))
+#   else
+#     define SWIGEXPORT
+#   endif
+# endif
+#endif
+
+/* calling conventions for Windows */
+#ifndef SWIGSTDCALL
+# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
+#   define SWIGSTDCALL __stdcall
+# else
+#   define SWIGSTDCALL
+# endif 
+#endif
+
+/* Deal with Microsoft's attempt at deprecating C standard runtime functions */
+#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
+# define _CRT_SECURE_NO_DEPRECATE
+#endif
+
+/* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */
+#if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE)
+# define _SCL_SECURE_NO_DEPRECATE
+#endif
+
+
+
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+
+
+/* Support for throwing C# exceptions from C/C++. There are two types: 
+ * Exceptions that take a message and ArgumentExceptions that take a message and a parameter name. */
+typedef enum {
+  SWIG_CSharpApplicationException,
+  SWIG_CSharpArithmeticException,
+  SWIG_CSharpDivideByZeroException,
+  SWIG_CSharpIndexOutOfRangeException,
+  SWIG_CSharpInvalidCastException,
+  SWIG_CSharpInvalidOperationException,
+  SWIG_CSharpIOException,
+  SWIG_CSharpNullReferenceException,
+  SWIG_CSharpOutOfMemoryException,
+  SWIG_CSharpOverflowException,
+  SWIG_CSharpSystemException
+} SWIG_CSharpExceptionCodes;
+
+typedef enum {
+  SWIG_CSharpArgumentException,
+  SWIG_CSharpArgumentNullException,
+  SWIG_CSharpArgumentOutOfRangeException
+} SWIG_CSharpExceptionArgumentCodes;
+
+typedef void (SWIGSTDCALL* SWIG_CSharpExceptionCallback_t)(const char *);
+typedef void (SWIGSTDCALL* SWIG_CSharpExceptionArgumentCallback_t)(const char *, const char *);
+
+typedef struct {
+  SWIG_CSharpExceptionCodes code;
+  SWIG_CSharpExceptionCallback_t callback;
+} SWIG_CSharpException_t;
+
+typedef struct {
+  SWIG_CSharpExceptionArgumentCodes code;
+  SWIG_CSharpExceptionArgumentCallback_t callback;
+} SWIG_CSharpExceptionArgument_t;
+
+static SWIG_CSharpException_t SWIG_csharp_exceptions[] = {
+  { SWIG_CSharpApplicationException, NULL },
+  { SWIG_CSharpArithmeticException, NULL },
+  { SWIG_CSharpDivideByZeroException, NULL },
+  { SWIG_CSharpIndexOutOfRangeException, NULL },
+  { SWIG_CSharpInvalidCastException, NULL },
+  { SWIG_CSharpInvalidOperationException, NULL },
+  { SWIG_CSharpIOException, NULL },
+  { SWIG_CSharpNullReferenceException, NULL },
+  { SWIG_CSharpOutOfMemoryException, NULL },
+  { SWIG_CSharpOverflowException, NULL },
+  { SWIG_CSharpSystemException, NULL }
+};
+
+static SWIG_CSharpExceptionArgument_t SWIG_csharp_exceptions_argument[] = {
+  { SWIG_CSharpArgumentException, NULL },
+  { SWIG_CSharpArgumentNullException, NULL },
+  { SWIG_CSharpArgumentOutOfRangeException, NULL }
+};
+
+static void SWIGUNUSED SWIG_CSharpSetPendingException(SWIG_CSharpExceptionCodes code, const char *msg) {
+  SWIG_CSharpExceptionCallback_t callback = SWIG_csharp_exceptions[SWIG_CSharpApplicationException].callback;
+  if ((size_t)code < sizeof(SWIG_csharp_exceptions)/sizeof(SWIG_CSharpException_t)) {
+    callback = SWIG_csharp_exceptions[code].callback;
+  }
+  callback(msg);
+}
+
+static void SWIGUNUSED SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpExceptionArgumentCodes code, const char *msg, const char *param_name) {
+  SWIG_CSharpExceptionArgumentCallback_t callback = SWIG_csharp_exceptions_argument[SWIG_CSharpArgumentException].callback;
+  if ((size_t)code < sizeof(SWIG_csharp_exceptions_argument)/sizeof(SWIG_CSharpExceptionArgument_t)) {
+    callback = SWIG_csharp_exceptions_argument[code].callback;
+  }
+  callback(msg, param_name);
+}
+
+
+#ifdef __cplusplus
+extern "C" 
+#endif
+SWIGEXPORT void SWIGSTDCALL SWIGRegisterExceptionCallbacks_lldb(
+                                                SWIG_CSharpExceptionCallback_t applicationCallback,
+                                                SWIG_CSharpExceptionCallback_t arithmeticCallback,
+                                                SWIG_CSharpExceptionCallback_t divideByZeroCallback, 
+                                                SWIG_CSharpExceptionCallback_t indexOutOfRangeCallback, 
+                                                SWIG_CSharpExceptionCallback_t invalidCastCallback,
+                                                SWIG_CSharpExceptionCallback_t invalidOperationCallback,
+                                                SWIG_CSharpExceptionCallback_t ioCallback,
+                                                SWIG_CSharpExceptionCallback_t nullReferenceCallback,
+                                                SWIG_CSharpExceptionCallback_t outOfMemoryCallback, 
+                                                SWIG_CSharpExceptionCallback_t overflowCallback, 
+                                                SWIG_CSharpExceptionCallback_t systemCallback) {
+  SWIG_csharp_exceptions[SWIG_CSharpApplicationException].callback = applicationCallback;
+  SWIG_csharp_exceptions[SWIG_CSharpArithmeticException].callback = arithmeticCallback;
+  SWIG_csharp_exceptions[SWIG_CSharpDivideByZeroException].callback = divideByZeroCallback;
+  SWIG_csharp_exceptions[SWIG_CSharpIndexOutOfRangeException].callback = indexOutOfRangeCallback;
+  SWIG_csharp_exceptions[SWIG_CSharpInvalidCastException].callback = invalidCastCallback;
+  SWIG_csharp_exceptions[SWIG_CSharpInvalidOperationException].callback = invalidOperationCallback;
+  SWIG_csharp_exceptions[SWIG_CSharpIOException].callback = ioCallback;
+  SWIG_csharp_exceptions[SWIG_CSharpNullReferenceException].callback = nullReferenceCallback;
+  SWIG_csharp_exceptions[SWIG_CSharpOutOfMemoryException].callback = outOfMemoryCallback;
+  SWIG_csharp_exceptions[SWIG_CSharpOverflowException].callback = overflowCallback;
+  SWIG_csharp_exceptions[SWIG_CSharpSystemException].callback = systemCallback;
+}
+
+#ifdef __cplusplus
+extern "C" 
+#endif
+SWIGEXPORT void SWIGSTDCALL SWIGRegisterExceptionArgumentCallbacks_lldb(
+                                                SWIG_CSharpExceptionArgumentCallback_t argumentCallback,
+                                                SWIG_CSharpExceptionArgumentCallback_t argumentNullCallback,
+                                                SWIG_CSharpExceptionArgumentCallback_t argumentOutOfRangeCallback) {
+  SWIG_csharp_exceptions_argument[SWIG_CSharpArgumentException].callback = argumentCallback;
+  SWIG_csharp_exceptions_argument[SWIG_CSharpArgumentNullException].callback = argumentNullCallback;
+  SWIG_csharp_exceptions_argument[SWIG_CSharpArgumentOutOfRangeException].callback = argumentOutOfRangeCallback;
+}
+
+
+/* Callback for returning strings to C# without leaking memory */
+typedef char * (SWIGSTDCALL* SWIG_CSharpStringHelperCallback)(const char *);
+static SWIG_CSharpStringHelperCallback SWIG_csharp_string_callback = NULL;
+
+
+#ifdef __cplusplus
+extern "C" 
+#endif
+SWIGEXPORT void SWIGSTDCALL SWIGRegisterStringCallback_lldb(SWIG_CSharpStringHelperCallback callback) {
+  SWIG_csharp_string_callback = callback;
+}
+
+
+/* Contract support */
+
+#define SWIG_contract_assert(nullreturn, expr, msg) if (!(expr)) {SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentOutOfRangeException, msg, ""); return nullreturn; } else
+
+
+#include <string>
+
+
+#include "lldb/lldb-public.h"
+#include "lldb/API/SBAddress.h"
+#include "lldb/API/SBBlock.h"
+#include "lldb/API/SBBreakpoint.h"
+#include "lldb/API/SBBreakpointLocation.h"
+#include "lldb/API/SBBroadcaster.h"
+#include "lldb/API/SBCommandInterpreter.h"
+#include "lldb/API/SBCommandReturnObject.h"
+#include "lldb/API/SBCommunication.h"
+#include "lldb/API/SBCompileUnit.h"
+#include "lldb/API/SBData.h"
+#include "lldb/API/SBDebugger.h"
+#include "lldb/API/SBError.h"
+#include "lldb/API/SBEvent.h"
+#include "lldb/API/SBFileSpec.h"
+#include "lldb/API/SBFileSpecList.h"
+#include "lldb/API/SBFrame.h"
+#include "lldb/API/SBFunction.h"
+#include "lldb/API/SBHostOS.h"
+#include "lldb/API/SBInputReader.h"
+#include "lldb/API/SBInstruction.h"
+#include "lldb/API/SBInstructionList.h"
+#include "lldb/API/SBLineEntry.h"
+#include "lldb/API/SBListener.h"
+#include "lldb/API/SBModule.h"
+#include "lldb/API/SBProcess.h"
+#include "lldb/API/SBSection.h"
+#include "lldb/API/SBSourceManager.h"
+#include "lldb/API/SBStream.h"
+#include "lldb/API/SBStringList.h"
+#include "lldb/API/SBSymbol.h"
+#include "lldb/API/SBSymbolContext.h"
+#include "lldb/API/SBSymbolContextList.h"
+#include "lldb/API/SBTarget.h"
+#include "lldb/API/SBThread.h"
+#include "lldb/API/SBType.h"
+#include "lldb/API/SBTypeCategory.h"
+#include "lldb/API/SBTypeFilter.h"
+#include "lldb/API/SBTypeFormat.h"
+#include "lldb/API/SBTypeNameSpecifier.h"
+#include "lldb/API/SBTypeSummary.h"
+#include "lldb/API/SBTypeSynthetic.h"
+#include "lldb/API/SBValue.h"
+#include "lldb/API/SBValueList.h"
+#include "lldb/API/SBWatchpoint.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_UINT32_MAX_get() {
+  unsigned int jresult ;
+  unsigned int result;
+  
+  result = (unsigned int)(4294967295U);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long long SWIGSTDCALL CSharp_UINT64_MAX_get() {
+  unsigned long long jresult ;
+  unsigned long long result;
+  
+  result = (unsigned long long)(18446744073709551615ULL);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_LLDB_GENERIC_ERROR_get() {
+  unsigned int jresult ;
+  unsigned int result;
+  
+  result = (unsigned int)(4294967295U);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_LLDB_INVALID_BREAK_ID_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)(0);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_LLDB_DEFAULT_BREAK_SIZE_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)(0);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_LLDB_INVALID_WATCH_ID_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)(0);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_LLDB_WATCH_TYPE_READ_get() {
+  unsigned int jresult ;
+  unsigned int result;
+  
+  result = (unsigned int)((1u << 0));
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_LLDB_WATCH_TYPE_WRITE_get() {
+  unsigned int jresult ;
+  unsigned int result;
+  
+  result = (unsigned int)((1u << 1));
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_LLDB_REGNUM_GENERIC_PC_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)(0);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_LLDB_REGNUM_GENERIC_SP_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)(1);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_LLDB_REGNUM_GENERIC_FP_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)(2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_LLDB_REGNUM_GENERIC_RA_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)(3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_LLDB_REGNUM_GENERIC_FLAGS_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)(4);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_LLDB_REGNUM_GENERIC_ARG1_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)(5);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_LLDB_REGNUM_GENERIC_ARG2_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)(6);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_LLDB_REGNUM_GENERIC_ARG3_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)(7);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_LLDB_REGNUM_GENERIC_ARG4_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)(8);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_LLDB_REGNUM_GENERIC_ARG5_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)(9);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_LLDB_REGNUM_GENERIC_ARG6_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)(10);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_LLDB_REGNUM_GENERIC_ARG7_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)(11);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_LLDB_REGNUM_GENERIC_ARG8_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)(12);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long long SWIGSTDCALL CSharp_LLDB_INVALID_ADDRESS_get() {
+  unsigned long long jresult ;
+  unsigned long long result;
+  
+  result = (unsigned long long)(18446744073709551615ULL);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_LLDB_INVALID_INDEX32_get() {
+  unsigned int jresult ;
+  unsigned int result;
+  
+  result = (unsigned int)(4294967295U);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_LLDB_INVALID_IVAR_OFFSET_get() {
+  unsigned int jresult ;
+  unsigned int result;
+  
+  result = (unsigned int)(4294967295U);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_LLDB_INVALID_IMAGE_TOKEN_get() {
+  unsigned int jresult ;
+  unsigned int result;
+  
+  result = (unsigned int)(4294967295U);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_LLDB_INVALID_REGNUM_get() {
+  unsigned int jresult ;
+  unsigned int result;
+  
+  result = (unsigned int)(4294967295U);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long long SWIGSTDCALL CSharp_LLDB_INVALID_UID_get() {
+  unsigned long long jresult ;
+  unsigned long long result;
+  
+  result = (unsigned long long)(18446744073709551615ULL);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_LLDB_INVALID_PROCESS_ID_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)(0);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_LLDB_INVALID_THREAD_ID_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)(0);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_LLDB_INVALID_FRAME_ID_get() {
+  unsigned int jresult ;
+  unsigned int result;
+  
+  result = (unsigned int)(4294967295U);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_LLDB_ARCH_DEFAULT_get() {
+  char * jresult ;
+  char *result = 0 ;
+  
+  result = (char *)("systemArch");
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_LLDB_ARCH_DEFAULT_32BIT_get() {
+  char * jresult ;
+  char *result = 0 ;
+  
+  result = (char *)("systemArch32");
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_LLDB_ARCH_DEFAULT_64BIT_get() {
+  char * jresult ;
+  char *result = 0 ;
+  
+  result = (char *)("systemArch64");
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_LLDB_INVALID_CPUTYPE_get() {
+  unsigned int jresult ;
+  unsigned int result;
+  
+  result = (unsigned int)((0xFFFFFFFEu));
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_LLDB_MAX_NUM_OPTION_SETS_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)(32);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_LLDB_OPT_SET_ALL_get() {
+  unsigned int jresult ;
+  unsigned int result;
+  
+  result = (unsigned int)(0xFFFFFFFFU);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_LLDB_OPT_SET_1_get() {
+  unsigned int jresult ;
+  unsigned int result;
+  
+  result = (unsigned int)((1U << 0));
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_LLDB_OPT_SET_2_get() {
+  unsigned int jresult ;
+  unsigned int result;
+  
+  result = (unsigned int)((1U << 1));
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_LLDB_OPT_SET_3_get() {
+  unsigned int jresult ;
+  unsigned int result;
+  
+  result = (unsigned int)((1U << 2));
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_LLDB_OPT_SET_4_get() {
+  unsigned int jresult ;
+  unsigned int result;
+  
+  result = (unsigned int)((1U << 3));
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_LLDB_OPT_SET_5_get() {
+  unsigned int jresult ;
+  unsigned int result;
+  
+  result = (unsigned int)((1U << 4));
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_LLDB_OPT_SET_6_get() {
+  unsigned int jresult ;
+  unsigned int result;
+  
+  result = (unsigned int)((1U << 5));
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_LLDB_OPT_SET_7_get() {
+  unsigned int jresult ;
+  unsigned int result;
+  
+  result = (unsigned int)((1U << 6));
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_LLDB_OPT_SET_8_get() {
+  unsigned int jresult ;
+  unsigned int result;
+  
+  result = (unsigned int)((1U << 7));
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_LLDB_OPT_SET_9_get() {
+  unsigned int jresult ;
+  unsigned int result;
+  
+  result = (unsigned int)((1U << 8));
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_LLDB_OPT_SET_10_get() {
+  unsigned int jresult ;
+  unsigned int result;
+  
+  result = (unsigned int)((1U << 9));
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBAddress__SWIG_0() {
+  void * jresult ;
+  lldb::SBAddress *result = 0 ;
+  
+  result = (lldb::SBAddress *)new lldb::SBAddress();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBAddress__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBAddress *arg1 = 0 ;
+  lldb::SBAddress *result = 0 ;
+  
+  arg1 = (lldb::SBAddress *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBAddress const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBAddress *)new lldb::SBAddress((lldb::SBAddress const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBAddress__SWIG_2(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBSection arg1 ;
+  lldb::addr_t arg2 ;
+  lldb::SBSection *argp1 ;
+  lldb::addr_t *argp2 ;
+  lldb::SBAddress *result = 0 ;
+  
+  argp1 = (lldb::SBSection *)jarg1; 
+  if (!argp1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBSection", 0);
+    return 0;
+  }
+  arg1 = *argp1; 
+  argp2 = (lldb::addr_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (lldb::SBAddress *)new lldb::SBAddress(arg1,arg2);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBAddress__SWIG_3(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::addr_t arg1 ;
+  lldb::SBTarget *arg2 = 0 ;
+  lldb::addr_t *argp1 ;
+  lldb::SBAddress *result = 0 ;
+  
+  argp1 = (lldb::addr_t *)jarg1; 
+  if (!argp1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return 0;
+  }
+  arg1 = *argp1; 
+  arg2 = (lldb::SBTarget *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBTarget & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBAddress *)new lldb::SBAddress(arg1,*arg2);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBAddress(void * jarg1) {
+  lldb::SBAddress *arg1 = (lldb::SBAddress *) 0 ;
+  
+  arg1 = (lldb::SBAddress *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBAddress_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBAddress *arg1 = (lldb::SBAddress *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBAddress *)jarg1; 
+  result = (bool)((lldb::SBAddress const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBAddress_Clear(void * jarg1) {
+  lldb::SBAddress *arg1 = (lldb::SBAddress *) 0 ;
+  
+  arg1 = (lldb::SBAddress *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBAddress_GetFileAddress(void * jarg1) {
+  void * jresult ;
+  lldb::SBAddress *arg1 = (lldb::SBAddress *) 0 ;
+  lldb::addr_t result;
+  
+  arg1 = (lldb::SBAddress *)jarg1; 
+  result = ((lldb::SBAddress const *)arg1)->GetFileAddress();
+  jresult = new lldb::addr_t((const lldb::addr_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBAddress_GetLoadAddress(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBAddress *arg1 = (lldb::SBAddress *) 0 ;
+  lldb::SBTarget *arg2 = 0 ;
+  lldb::addr_t result;
+  
+  arg1 = (lldb::SBAddress *)jarg1; 
+  arg2 = (lldb::SBTarget *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBTarget const & type is null", 0);
+    return 0;
+  } 
+  result = ((lldb::SBAddress const *)arg1)->GetLoadAddress((lldb::SBTarget const &)*arg2);
+  jresult = new lldb::addr_t((const lldb::addr_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBAddress_SetLoadAddress(void * jarg1, void * jarg2, void * jarg3) {
+  lldb::SBAddress *arg1 = (lldb::SBAddress *) 0 ;
+  lldb::addr_t arg2 ;
+  lldb::SBTarget *arg3 = 0 ;
+  lldb::addr_t *argp2 ;
+  
+  arg1 = (lldb::SBAddress *)jarg1; 
+  argp2 = (lldb::addr_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  arg3 = (lldb::SBTarget *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBTarget & type is null", 0);
+    return ;
+  } 
+  (arg1)->SetLoadAddress(arg2,*arg3);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBAddress_OffsetAddress(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBAddress *arg1 = (lldb::SBAddress *) 0 ;
+  lldb::addr_t arg2 ;
+  lldb::addr_t *argp2 ;
+  bool result;
+  
+  arg1 = (lldb::SBAddress *)jarg1; 
+  argp2 = (lldb::addr_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (bool)(arg1)->OffsetAddress(arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBAddress_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBAddress *arg1 = (lldb::SBAddress *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBAddress *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBAddress_GetSection(void * jarg1) {
+  void * jresult ;
+  lldb::SBAddress *arg1 = (lldb::SBAddress *) 0 ;
+  lldb::SBSection result;
+  
+  arg1 = (lldb::SBAddress *)jarg1; 
+  result = (arg1)->GetSection();
+  jresult = new lldb::SBSection((const lldb::SBSection &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBAddress_GetOffset(void * jarg1) {
+  void * jresult ;
+  lldb::SBAddress *arg1 = (lldb::SBAddress *) 0 ;
+  lldb::addr_t result;
+  
+  arg1 = (lldb::SBAddress *)jarg1; 
+  result = (arg1)->GetOffset();
+  jresult = new lldb::addr_t((const lldb::addr_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBAddress_SetAddress(void * jarg1, void * jarg2, void * jarg3) {
+  lldb::SBAddress *arg1 = (lldb::SBAddress *) 0 ;
+  lldb::SBSection arg2 ;
+  lldb::addr_t arg3 ;
+  lldb::SBSection *argp2 ;
+  lldb::addr_t *argp3 ;
+  
+  arg1 = (lldb::SBAddress *)jarg1; 
+  argp2 = (lldb::SBSection *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBSection", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  argp3 = (lldb::addr_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return ;
+  }
+  arg3 = *argp3; 
+  (arg1)->SetAddress(arg2,arg3);
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBAddress_GetAddressClass(void * jarg1) {
+  int jresult ;
+  lldb::SBAddress *arg1 = (lldb::SBAddress *) 0 ;
+  lldb::AddressClass result;
+  
+  arg1 = (lldb::SBAddress *)jarg1; 
+  result = (lldb::AddressClass)(arg1)->GetAddressClass();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBAddress_GetSymbolContext(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBAddress *arg1 = (lldb::SBAddress *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBSymbolContext result;
+  
+  arg1 = (lldb::SBAddress *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetSymbolContext(arg2);
+  jresult = new lldb::SBSymbolContext((const lldb::SBSymbolContext &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBAddress_GetModule(void * jarg1) {
+  void * jresult ;
+  lldb::SBAddress *arg1 = (lldb::SBAddress *) 0 ;
+  lldb::SBModule result;
+  
+  arg1 = (lldb::SBAddress *)jarg1; 
+  result = (arg1)->GetModule();
+  jresult = new lldb::SBModule((const lldb::SBModule &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBAddress_GetCompileUnit(void * jarg1) {
+  void * jresult ;
+  lldb::SBAddress *arg1 = (lldb::SBAddress *) 0 ;
+  lldb::SBCompileUnit result;
+  
+  arg1 = (lldb::SBAddress *)jarg1; 
+  result = (arg1)->GetCompileUnit();
+  jresult = new lldb::SBCompileUnit((const lldb::SBCompileUnit &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBAddress_GetFunction(void * jarg1) {
+  void * jresult ;
+  lldb::SBAddress *arg1 = (lldb::SBAddress *) 0 ;
+  lldb::SBFunction result;
+  
+  arg1 = (lldb::SBAddress *)jarg1; 
+  result = (arg1)->GetFunction();
+  jresult = new lldb::SBFunction((const lldb::SBFunction &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBAddress_GetBlock(void * jarg1) {
+  void * jresult ;
+  lldb::SBAddress *arg1 = (lldb::SBAddress *) 0 ;
+  lldb::SBBlock result;
+  
+  arg1 = (lldb::SBAddress *)jarg1; 
+  result = (arg1)->GetBlock();
+  jresult = new lldb::SBBlock((const lldb::SBBlock &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBAddress_GetSymbol(void * jarg1) {
+  void * jresult ;
+  lldb::SBAddress *arg1 = (lldb::SBAddress *) 0 ;
+  lldb::SBSymbol result;
+  
+  arg1 = (lldb::SBAddress *)jarg1; 
+  result = (arg1)->GetSymbol();
+  jresult = new lldb::SBSymbol((const lldb::SBSymbol &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBAddress_GetLineEntry(void * jarg1) {
+  void * jresult ;
+  lldb::SBAddress *arg1 = (lldb::SBAddress *) 0 ;
+  lldb::SBLineEntry result;
+  
+  arg1 = (lldb::SBAddress *)jarg1; 
+  result = (arg1)->GetLineEntry();
+  jresult = new lldb::SBLineEntry((const lldb::SBLineEntry &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBBlock__SWIG_0() {
+  void * jresult ;
+  lldb::SBBlock *result = 0 ;
+  
+  result = (lldb::SBBlock *)new lldb::SBBlock();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBBlock__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBBlock *arg1 = 0 ;
+  lldb::SBBlock *result = 0 ;
+  
+  arg1 = (lldb::SBBlock *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBBlock const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBBlock *)new lldb::SBBlock((lldb::SBBlock const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBBlock(void * jarg1) {
+  lldb::SBBlock *arg1 = (lldb::SBBlock *) 0 ;
+  
+  arg1 = (lldb::SBBlock *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBBlock_IsInlined(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBBlock *arg1 = (lldb::SBBlock *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBBlock *)jarg1; 
+  result = (bool)((lldb::SBBlock const *)arg1)->IsInlined();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBBlock_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBBlock *arg1 = (lldb::SBBlock *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBBlock *)jarg1; 
+  result = (bool)((lldb::SBBlock const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBBlock_GetInlinedName(void * jarg1) {
+  char * jresult ;
+  lldb::SBBlock *arg1 = (lldb::SBBlock *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBBlock *)jarg1; 
+  result = (char *)((lldb::SBBlock const *)arg1)->GetInlinedName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBlock_GetInlinedCallSiteFile(void * jarg1) {
+  void * jresult ;
+  lldb::SBBlock *arg1 = (lldb::SBBlock *) 0 ;
+  lldb::SBFileSpec result;
+  
+  arg1 = (lldb::SBBlock *)jarg1; 
+  result = ((lldb::SBBlock const *)arg1)->GetInlinedCallSiteFile();
+  jresult = new lldb::SBFileSpec((const lldb::SBFileSpec &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBlock_GetInlinedCallSiteLine(void * jarg1) {
+  void * jresult ;
+  lldb::SBBlock *arg1 = (lldb::SBBlock *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBBlock *)jarg1; 
+  result = ((lldb::SBBlock const *)arg1)->GetInlinedCallSiteLine();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBlock_GetInlinedCallSiteColumn(void * jarg1) {
+  void * jresult ;
+  lldb::SBBlock *arg1 = (lldb::SBBlock *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBBlock *)jarg1; 
+  result = ((lldb::SBBlock const *)arg1)->GetInlinedCallSiteColumn();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBlock_GetParent(void * jarg1) {
+  void * jresult ;
+  lldb::SBBlock *arg1 = (lldb::SBBlock *) 0 ;
+  lldb::SBBlock result;
+  
+  arg1 = (lldb::SBBlock *)jarg1; 
+  result = (arg1)->GetParent();
+  jresult = new lldb::SBBlock((const lldb::SBBlock &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBlock_GetContainingInlinedBlock(void * jarg1) {
+  void * jresult ;
+  lldb::SBBlock *arg1 = (lldb::SBBlock *) 0 ;
+  lldb::SBBlock result;
+  
+  arg1 = (lldb::SBBlock *)jarg1; 
+  result = (arg1)->GetContainingInlinedBlock();
+  jresult = new lldb::SBBlock((const lldb::SBBlock &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBlock_GetSibling(void * jarg1) {
+  void * jresult ;
+  lldb::SBBlock *arg1 = (lldb::SBBlock *) 0 ;
+  lldb::SBBlock result;
+  
+  arg1 = (lldb::SBBlock *)jarg1; 
+  result = (arg1)->GetSibling();
+  jresult = new lldb::SBBlock((const lldb::SBBlock &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBlock_GetFirstChild(void * jarg1) {
+  void * jresult ;
+  lldb::SBBlock *arg1 = (lldb::SBBlock *) 0 ;
+  lldb::SBBlock result;
+  
+  arg1 = (lldb::SBBlock *)jarg1; 
+  result = (arg1)->GetFirstChild();
+  jresult = new lldb::SBBlock((const lldb::SBBlock &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBlock_GetNumRanges(void * jarg1) {
+  void * jresult ;
+  lldb::SBBlock *arg1 = (lldb::SBBlock *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBBlock *)jarg1; 
+  result = (arg1)->GetNumRanges();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBlock_GetRangeStartAddress(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBBlock *arg1 = (lldb::SBBlock *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBAddress result;
+  
+  arg1 = (lldb::SBBlock *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetRangeStartAddress(arg2);
+  jresult = new lldb::SBAddress((const lldb::SBAddress &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBlock_GetRangeEndAddress(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBBlock *arg1 = (lldb::SBBlock *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBAddress result;
+  
+  arg1 = (lldb::SBBlock *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetRangeEndAddress(arg2);
+  jresult = new lldb::SBAddress((const lldb::SBAddress &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBlock_GetRangeIndexForBlockAddress(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBBlock *arg1 = (lldb::SBBlock *) 0 ;
+  lldb::SBAddress arg2 ;
+  lldb::SBAddress *argp2 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBBlock *)jarg1; 
+  argp2 = (lldb::SBAddress *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBAddress", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetRangeIndexForBlockAddress(arg2);
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBBlock_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBBlock *arg1 = (lldb::SBBlock *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBBlock *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBlock_GetVariables__SWIG_0(void * jarg1, void * jarg2, unsigned int jarg3, unsigned int jarg4, unsigned int jarg5, int jarg6) {
+  void * jresult ;
+  lldb::SBBlock *arg1 = (lldb::SBBlock *) 0 ;
+  lldb::SBFrame *arg2 = 0 ;
+  bool arg3 ;
+  bool arg4 ;
+  bool arg5 ;
+  lldb::DynamicValueType arg6 ;
+  lldb::SBValueList result;
+  
+  arg1 = (lldb::SBBlock *)jarg1; 
+  arg2 = (lldb::SBFrame *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFrame & type is null", 0);
+    return 0;
+  } 
+  arg3 = jarg3 ? true : false; 
+  arg4 = jarg4 ? true : false; 
+  arg5 = jarg5 ? true : false; 
+  arg6 = (lldb::DynamicValueType)jarg6; 
+  result = (arg1)->GetVariables(*arg2,arg3,arg4,arg5,arg6);
+  jresult = new lldb::SBValueList((const lldb::SBValueList &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBlock_GetVariables__SWIG_1(void * jarg1, void * jarg2, unsigned int jarg3, unsigned int jarg4, unsigned int jarg5) {
+  void * jresult ;
+  lldb::SBBlock *arg1 = (lldb::SBBlock *) 0 ;
+  lldb::SBTarget *arg2 = 0 ;
+  bool arg3 ;
+  bool arg4 ;
+  bool arg5 ;
+  lldb::SBValueList result;
+  
+  arg1 = (lldb::SBBlock *)jarg1; 
+  arg2 = (lldb::SBTarget *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBTarget & type is null", 0);
+    return 0;
+  } 
+  arg3 = jarg3 ? true : false; 
+  arg4 = jarg4 ? true : false; 
+  arg5 = jarg5 ? true : false; 
+  result = (arg1)->GetVariables(*arg2,arg3,arg4,arg5);
+  jresult = new lldb::SBValueList((const lldb::SBValueList &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBBreakpoint__SWIG_0() {
+  void * jresult ;
+  lldb::SBBreakpoint *result = 0 ;
+  
+  result = (lldb::SBBreakpoint *)new lldb::SBBreakpoint();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBBreakpoint__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBBreakpoint *arg1 = 0 ;
+  lldb::SBBreakpoint *result = 0 ;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBBreakpoint const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBBreakpoint *)new lldb::SBBreakpoint((lldb::SBBreakpoint const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBBreakpoint(void * jarg1) {
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBreakpoint_GetID(void * jarg1) {
+  void * jresult ;
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  lldb::break_id_t result;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  result = ((lldb::SBBreakpoint const *)arg1)->GetID();
+  jresult = new lldb::break_id_t((const lldb::break_id_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBBreakpoint_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  result = (bool)((lldb::SBBreakpoint const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBreakpoint_ClearAllBreakpointSites(void * jarg1) {
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  (arg1)->ClearAllBreakpointSites();
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBreakpoint_FindLocationByAddress(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  lldb::addr_t arg2 ;
+  lldb::addr_t *argp2 ;
+  lldb::SBBreakpointLocation result;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  argp2 = (lldb::addr_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->FindLocationByAddress(arg2);
+  jresult = new lldb::SBBreakpointLocation((const lldb::SBBreakpointLocation &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBreakpoint_FindLocationIDByAddress(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  lldb::addr_t arg2 ;
+  lldb::addr_t *argp2 ;
+  lldb::break_id_t result;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  argp2 = (lldb::addr_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->FindLocationIDByAddress(arg2);
+  jresult = new lldb::break_id_t((const lldb::break_id_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBreakpoint_FindLocationByID(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  lldb::break_id_t arg2 ;
+  lldb::break_id_t *argp2 ;
+  lldb::SBBreakpointLocation result;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  argp2 = (lldb::break_id_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::break_id_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->FindLocationByID(arg2);
+  jresult = new lldb::SBBreakpointLocation((const lldb::SBBreakpointLocation &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBreakpoint_GetLocationAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBBreakpointLocation result;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetLocationAtIndex(arg2);
+  jresult = new lldb::SBBreakpointLocation((const lldb::SBBreakpointLocation &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBreakpoint_SetEnabled(void * jarg1, unsigned int jarg2) {
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  bool arg2 ;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  arg2 = jarg2 ? true : false; 
+  (arg1)->SetEnabled(arg2);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBBreakpoint_IsEnabled(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  result = (bool)(arg1)->IsEnabled();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBreakpoint_GetHitCount(void * jarg1) {
+  void * jresult ;
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  result = ((lldb::SBBreakpoint const *)arg1)->GetHitCount();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBreakpoint_SetIgnoreCount(void * jarg1, void * jarg2) {
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetIgnoreCount(arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBreakpoint_GetIgnoreCount(void * jarg1) {
+  void * jresult ;
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  result = ((lldb::SBBreakpoint const *)arg1)->GetIgnoreCount();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBreakpoint_SetCondition(void * jarg1, char * jarg2) {
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->SetCondition((char const *)arg2);
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBBreakpoint_GetCondition(void * jarg1) {
+  char * jresult ;
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  result = (char *)(arg1)->GetCondition();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBreakpoint_SetThreadID(void * jarg1, void * jarg2) {
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  lldb::tid_t arg2 ;
+  lldb::tid_t *argp2 ;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  argp2 = (lldb::tid_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::tid_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetThreadID(arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBreakpoint_GetThreadID(void * jarg1) {
+  void * jresult ;
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  lldb::tid_t result;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  result = (arg1)->GetThreadID();
+  jresult = new lldb::tid_t((const lldb::tid_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBreakpoint_SetThreadIndex(void * jarg1, void * jarg2) {
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetThreadIndex(arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBreakpoint_GetThreadIndex(void * jarg1) {
+  void * jresult ;
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  result = ((lldb::SBBreakpoint const *)arg1)->GetThreadIndex();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBreakpoint_SetThreadName(void * jarg1, char * jarg2) {
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->SetThreadName((char const *)arg2);
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBBreakpoint_GetThreadName(void * jarg1) {
+  char * jresult ;
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  result = (char *)((lldb::SBBreakpoint const *)arg1)->GetThreadName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBreakpoint_SetQueueName(void * jarg1, char * jarg2) {
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->SetQueueName((char const *)arg2);
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBBreakpoint_GetQueueName(void * jarg1) {
+  char * jresult ;
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  result = (char *)((lldb::SBBreakpoint const *)arg1)->GetQueueName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBreakpoint_SetCallback(void * jarg1, void * jarg2, void* jarg3) {
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  lldb::SBBreakpoint::BreakpointHitCallback arg2 = (lldb::SBBreakpoint::BreakpointHitCallback) 0 ;
+  void *arg3 = (void *) 0 ;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  arg2 = (lldb::SBBreakpoint::BreakpointHitCallback)jarg2; 
+  arg3 = (void *)jarg3; /* IntPtr */ 
+  (arg1)->SetCallback(arg2,arg3);
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBBreakpoint_GetNumResolvedLocations(void * jarg1) {
+  unsigned long jresult ;
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  size_t result;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  result = ((lldb::SBBreakpoint const *)arg1)->GetNumResolvedLocations();
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBBreakpoint_GetNumLocations(void * jarg1) {
+  unsigned long jresult ;
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  size_t result;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  result = ((lldb::SBBreakpoint const *)arg1)->GetNumLocations();
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBBreakpoint_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBBreakpoint *arg1 = (lldb::SBBreakpoint *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBBreakpoint *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBBreakpoint_EventIsBreakpointEvent(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBEvent *arg1 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBEvent *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent const & type is null", 0);
+    return 0;
+  } 
+  result = (bool)lldb::SBBreakpoint::EventIsBreakpointEvent((lldb::SBEvent const &)*arg1);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBBreakpoint_GetBreakpointEventTypeFromEvent(void * jarg1) {
+  int jresult ;
+  lldb::SBEvent *arg1 = 0 ;
+  lldb::BreakpointEventType result;
+  
+  arg1 = (lldb::SBEvent *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::BreakpointEventType)lldb::SBBreakpoint::GetBreakpointEventTypeFromEvent((lldb::SBEvent const &)*arg1);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBreakpoint_GetBreakpointFromEvent(void * jarg1) {
+  void * jresult ;
+  lldb::SBEvent *arg1 = 0 ;
+  lldb::SBBreakpoint result;
+  
+  arg1 = (lldb::SBEvent *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent const & type is null", 0);
+    return 0;
+  } 
+  result = lldb::SBBreakpoint::GetBreakpointFromEvent((lldb::SBEvent const &)*arg1);
+  jresult = new lldb::SBBreakpoint((const lldb::SBBreakpoint &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBreakpoint_GetBreakpointLocationAtIndexFromEvent(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBEvent *arg1 = 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBBreakpointLocation result;
+  
+  arg1 = (lldb::SBEvent *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent const & type is null", 0);
+    return 0;
+  } 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = lldb::SBBreakpoint::GetBreakpointLocationAtIndexFromEvent((lldb::SBEvent const &)*arg1,arg2);
+  jresult = new lldb::SBBreakpointLocation((const lldb::SBBreakpointLocation &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBreakpoint_GetNumBreakpointLocationsFromEvent(void * jarg1) {
+  void * jresult ;
+  lldb::SBEvent *arg1 = 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBEvent *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent const & type is null", 0);
+    return 0;
+  } 
+  result = lldb::SBBreakpoint::GetNumBreakpointLocationsFromEvent((lldb::SBEvent const &)*arg1);
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBBreakpointLocation__SWIG_0() {
+  void * jresult ;
+  lldb::SBBreakpointLocation *result = 0 ;
+  
+  result = (lldb::SBBreakpointLocation *)new lldb::SBBreakpointLocation();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBBreakpointLocation__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBBreakpointLocation *arg1 = 0 ;
+  lldb::SBBreakpointLocation *result = 0 ;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBBreakpointLocation const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBBreakpointLocation *)new lldb::SBBreakpointLocation((lldb::SBBreakpointLocation const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBBreakpointLocation(void * jarg1) {
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBreakpointLocation_GetID(void * jarg1) {
+  void * jresult ;
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  lldb::break_id_t result;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  result = (arg1)->GetID();
+  jresult = new lldb::break_id_t((const lldb::break_id_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBBreakpointLocation_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  result = (bool)((lldb::SBBreakpointLocation const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBreakpointLocation_GetAddress(void * jarg1) {
+  void * jresult ;
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  lldb::SBAddress result;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  result = (arg1)->GetAddress();
+  jresult = new lldb::SBAddress((const lldb::SBAddress &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBreakpointLocation_GetLoadAddress(void * jarg1) {
+  void * jresult ;
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  lldb::addr_t result;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  result = (arg1)->GetLoadAddress();
+  jresult = new lldb::addr_t((const lldb::addr_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBreakpointLocation_SetEnabled(void * jarg1, unsigned int jarg2) {
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  bool arg2 ;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  arg2 = jarg2 ? true : false; 
+  (arg1)->SetEnabled(arg2);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBBreakpointLocation_IsEnabled(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  result = (bool)(arg1)->IsEnabled();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBreakpointLocation_GetIgnoreCount(void * jarg1) {
+  void * jresult ;
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  result = (arg1)->GetIgnoreCount();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBreakpointLocation_SetIgnoreCount(void * jarg1, void * jarg2) {
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetIgnoreCount(arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBreakpointLocation_SetCondition(void * jarg1, char * jarg2) {
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->SetCondition((char const *)arg2);
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBBreakpointLocation_GetCondition(void * jarg1) {
+  char * jresult ;
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  result = (char *)(arg1)->GetCondition();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBreakpointLocation_SetThreadID(void * jarg1, void * jarg2) {
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  lldb::tid_t arg2 ;
+  lldb::tid_t *argp2 ;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  argp2 = (lldb::tid_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::tid_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetThreadID(arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBreakpointLocation_GetThreadID(void * jarg1) {
+  void * jresult ;
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  lldb::tid_t result;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  result = (arg1)->GetThreadID();
+  jresult = new lldb::tid_t((const lldb::tid_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBreakpointLocation_SetThreadIndex(void * jarg1, void * jarg2) {
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetThreadIndex(arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBreakpointLocation_GetThreadIndex(void * jarg1) {
+  void * jresult ;
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  result = ((lldb::SBBreakpointLocation const *)arg1)->GetThreadIndex();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBreakpointLocation_SetThreadName(void * jarg1, char * jarg2) {
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->SetThreadName((char const *)arg2);
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBBreakpointLocation_GetThreadName(void * jarg1) {
+  char * jresult ;
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  result = (char *)((lldb::SBBreakpointLocation const *)arg1)->GetThreadName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBreakpointLocation_SetQueueName(void * jarg1, char * jarg2) {
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->SetQueueName((char const *)arg2);
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBBreakpointLocation_GetQueueName(void * jarg1) {
+  char * jresult ;
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  result = (char *)((lldb::SBBreakpointLocation const *)arg1)->GetQueueName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBBreakpointLocation_IsResolved(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  result = (bool)(arg1)->IsResolved();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBBreakpointLocation_GetDescription(void * jarg1, void * jarg2, int jarg3) {
+  unsigned int jresult ;
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  lldb::DescriptionLevel arg3 ;
+  bool result;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  arg3 = (lldb::DescriptionLevel)jarg3; 
+  result = (bool)(arg1)->GetDescription(*arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBreakpointLocation_GetBreakpoint(void * jarg1) {
+  void * jresult ;
+  lldb::SBBreakpointLocation *arg1 = (lldb::SBBreakpointLocation *) 0 ;
+  lldb::SBBreakpoint result;
+  
+  arg1 = (lldb::SBBreakpointLocation *)jarg1; 
+  result = (arg1)->GetBreakpoint();
+  jresult = new lldb::SBBreakpoint((const lldb::SBBreakpoint &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBBroadcaster__SWIG_0() {
+  void * jresult ;
+  lldb::SBBroadcaster *result = 0 ;
+  
+  result = (lldb::SBBroadcaster *)new lldb::SBBroadcaster();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBBroadcaster__SWIG_1(char * jarg1) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  lldb::SBBroadcaster *result = 0 ;
+  
+  arg1 = (char *)jarg1; 
+  result = (lldb::SBBroadcaster *)new lldb::SBBroadcaster((char const *)arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBBroadcaster__SWIG_2(void * jarg1) {
+  void * jresult ;
+  lldb::SBBroadcaster *arg1 = 0 ;
+  lldb::SBBroadcaster *result = 0 ;
+  
+  arg1 = (lldb::SBBroadcaster *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBBroadcaster const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBBroadcaster *)new lldb::SBBroadcaster((lldb::SBBroadcaster const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBBroadcaster(void * jarg1) {
+  lldb::SBBroadcaster *arg1 = (lldb::SBBroadcaster *) 0 ;
+  
+  arg1 = (lldb::SBBroadcaster *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBBroadcaster_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBBroadcaster *arg1 = (lldb::SBBroadcaster *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBBroadcaster *)jarg1; 
+  result = (bool)((lldb::SBBroadcaster const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBroadcaster_Clear(void * jarg1) {
+  lldb::SBBroadcaster *arg1 = (lldb::SBBroadcaster *) 0 ;
+  
+  arg1 = (lldb::SBBroadcaster *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBroadcaster_BroadcastEventByType__SWIG_0(void * jarg1, void * jarg2, unsigned int jarg3) {
+  lldb::SBBroadcaster *arg1 = (lldb::SBBroadcaster *) 0 ;
+  uint32_t arg2 ;
+  bool arg3 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBBroadcaster *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  arg3 = jarg3 ? true : false; 
+  (arg1)->BroadcastEventByType(arg2,arg3);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBroadcaster_BroadcastEventByType__SWIG_1(void * jarg1, void * jarg2) {
+  lldb::SBBroadcaster *arg1 = (lldb::SBBroadcaster *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBBroadcaster *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->BroadcastEventByType(arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBroadcaster_BroadcastEvent__SWIG_0(void * jarg1, void * jarg2, unsigned int jarg3) {
+  lldb::SBBroadcaster *arg1 = (lldb::SBBroadcaster *) 0 ;
+  lldb::SBEvent *arg2 = 0 ;
+  bool arg3 ;
+  
+  arg1 = (lldb::SBBroadcaster *)jarg1; 
+  arg2 = (lldb::SBEvent *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent const & type is null", 0);
+    return ;
+  } 
+  arg3 = jarg3 ? true : false; 
+  (arg1)->BroadcastEvent((lldb::SBEvent const &)*arg2,arg3);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBroadcaster_BroadcastEvent__SWIG_1(void * jarg1, void * jarg2) {
+  lldb::SBBroadcaster *arg1 = (lldb::SBBroadcaster *) 0 ;
+  lldb::SBEvent *arg2 = 0 ;
+  
+  arg1 = (lldb::SBBroadcaster *)jarg1; 
+  arg2 = (lldb::SBEvent *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent const & type is null", 0);
+    return ;
+  } 
+  (arg1)->BroadcastEvent((lldb::SBEvent const &)*arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBBroadcaster_AddInitialEventsToListener(void * jarg1, void * jarg2, void * jarg3) {
+  lldb::SBBroadcaster *arg1 = (lldb::SBBroadcaster *) 0 ;
+  lldb::SBListener *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  
+  arg1 = (lldb::SBBroadcaster *)jarg1; 
+  arg2 = (lldb::SBListener *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBListener const & type is null", 0);
+    return ;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg3 = *argp3; 
+  (arg1)->AddInitialEventsToListener((lldb::SBListener const &)*arg2,arg3);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBBroadcaster_AddListener(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBBroadcaster *arg1 = (lldb::SBBroadcaster *) 0 ;
+  lldb::SBListener *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBBroadcaster *)jarg1; 
+  arg2 = (lldb::SBListener *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBListener const & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->AddListener((lldb::SBListener const &)*arg2,arg3);
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBBroadcaster_GetName(void * jarg1) {
+  char * jresult ;
+  lldb::SBBroadcaster *arg1 = (lldb::SBBroadcaster *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBBroadcaster *)jarg1; 
+  result = (char *)((lldb::SBBroadcaster const *)arg1)->GetName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBBroadcaster_EventTypeHasListeners(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBBroadcaster *arg1 = (lldb::SBBroadcaster *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  bool result;
+  
+  arg1 = (lldb::SBBroadcaster *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (bool)(arg1)->EventTypeHasListeners(arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBBroadcaster_RemoveListener__SWIG_0(void * jarg1, void * jarg2, void * jarg3) {
+  unsigned int jresult ;
+  lldb::SBBroadcaster *arg1 = (lldb::SBBroadcaster *) 0 ;
+  lldb::SBListener *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  bool result;
+  
+  arg1 = (lldb::SBBroadcaster *)jarg1; 
+  arg2 = (lldb::SBListener *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBListener const & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (bool)(arg1)->RemoveListener((lldb::SBListener const &)*arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBBroadcaster_RemoveListener__SWIG_1(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBBroadcaster *arg1 = (lldb::SBBroadcaster *) 0 ;
+  lldb::SBListener *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBBroadcaster *)jarg1; 
+  arg2 = (lldb::SBListener *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBListener const & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->RemoveListener((lldb::SBListener const &)*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBCommandInterpreter_eBroadcastBitThreadShouldExit_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)lldb::SBCommandInterpreter::eBroadcastBitThreadShouldExit;
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBCommandInterpreter_eBroadcastBitResetPrompt_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)lldb::SBCommandInterpreter::eBroadcastBitResetPrompt;
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBCommandInterpreter_eBroadcastBitQuitCommandReceived_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)lldb::SBCommandInterpreter::eBroadcastBitQuitCommandReceived;
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBCommandInterpreter_eBroadcastBitAsynchronousOutputData_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)lldb::SBCommandInterpreter::eBroadcastBitAsynchronousOutputData;
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBCommandInterpreter_eBroadcastBitAsynchronousErrorData_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)lldb::SBCommandInterpreter::eBroadcastBitAsynchronousErrorData;
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBCommandInterpreter(void * jarg1) {
+  void * jresult ;
+  lldb::SBCommandInterpreter *arg1 = 0 ;
+  lldb::SBCommandInterpreter *result = 0 ;
+  
+  arg1 = (lldb::SBCommandInterpreter *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBCommandInterpreter const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBCommandInterpreter *)new lldb::SBCommandInterpreter((lldb::SBCommandInterpreter const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBCommandInterpreter(void * jarg1) {
+  lldb::SBCommandInterpreter *arg1 = (lldb::SBCommandInterpreter *) 0 ;
+  
+  arg1 = (lldb::SBCommandInterpreter *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBCommandInterpreter_GetArgumentTypeAsCString(int jarg1) {
+  char * jresult ;
+  lldb::CommandArgumentType arg1 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::CommandArgumentType)jarg1; 
+  result = (char *)lldb::SBCommandInterpreter::GetArgumentTypeAsCString(arg1);
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBCommandInterpreter_GetArgumentDescriptionAsCString(int jarg1) {
+  char * jresult ;
+  lldb::CommandArgumentType arg1 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::CommandArgumentType)jarg1; 
+  result = (char *)lldb::SBCommandInterpreter::GetArgumentDescriptionAsCString(arg1);
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBCommandInterpreter_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBCommandInterpreter *arg1 = (lldb::SBCommandInterpreter *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBCommandInterpreter *)jarg1; 
+  result = (bool)((lldb::SBCommandInterpreter const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBCommandInterpreter_CommandExists(void * jarg1, char * jarg2) {
+  unsigned int jresult ;
+  lldb::SBCommandInterpreter *arg1 = (lldb::SBCommandInterpreter *) 0 ;
+  char *arg2 = (char *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBCommandInterpreter *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (bool)(arg1)->CommandExists((char const *)arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBCommandInterpreter_AliasExists(void * jarg1, char * jarg2) {
+  unsigned int jresult ;
+  lldb::SBCommandInterpreter *arg1 = (lldb::SBCommandInterpreter *) 0 ;
+  char *arg2 = (char *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBCommandInterpreter *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (bool)(arg1)->AliasExists((char const *)arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBCommandInterpreter_GetBroadcaster(void * jarg1) {
+  void * jresult ;
+  lldb::SBCommandInterpreter *arg1 = (lldb::SBCommandInterpreter *) 0 ;
+  lldb::SBBroadcaster result;
+  
+  arg1 = (lldb::SBCommandInterpreter *)jarg1; 
+  result = (arg1)->GetBroadcaster();
+  jresult = new lldb::SBBroadcaster((const lldb::SBBroadcaster &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBCommandInterpreter_GetBroadcasterClass() {
+  char * jresult ;
+  char *result = 0 ;
+  
+  result = (char *)lldb::SBCommandInterpreter::GetBroadcasterClass();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBCommandInterpreter_HasCommands(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBCommandInterpreter *arg1 = (lldb::SBCommandInterpreter *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBCommandInterpreter *)jarg1; 
+  result = (bool)(arg1)->HasCommands();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBCommandInterpreter_HasAliases(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBCommandInterpreter *arg1 = (lldb::SBCommandInterpreter *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBCommandInterpreter *)jarg1; 
+  result = (bool)(arg1)->HasAliases();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBCommandInterpreter_HasAliasOptions(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBCommandInterpreter *arg1 = (lldb::SBCommandInterpreter *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBCommandInterpreter *)jarg1; 
+  result = (bool)(arg1)->HasAliasOptions();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBCommandInterpreter_GetProcess(void * jarg1) {
+  void * jresult ;
+  lldb::SBCommandInterpreter *arg1 = (lldb::SBCommandInterpreter *) 0 ;
+  lldb::SBProcess result;
+  
+  arg1 = (lldb::SBCommandInterpreter *)jarg1; 
+  result = (arg1)->GetProcess();
+  jresult = new lldb::SBProcess((const lldb::SBProcess &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBCommandInterpreter_SourceInitFileInHomeDirectory(void * jarg1, void * jarg2) {
+  lldb::SBCommandInterpreter *arg1 = (lldb::SBCommandInterpreter *) 0 ;
+  lldb::SBCommandReturnObject *arg2 = 0 ;
+  
+  arg1 = (lldb::SBCommandInterpreter *)jarg1; 
+  arg2 = (lldb::SBCommandReturnObject *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBCommandReturnObject & type is null", 0);
+    return ;
+  } 
+  (arg1)->SourceInitFileInHomeDirectory(*arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBCommandInterpreter_SourceInitFileInCurrentWorkingDirectory(void * jarg1, void * jarg2) {
+  lldb::SBCommandInterpreter *arg1 = (lldb::SBCommandInterpreter *) 0 ;
+  lldb::SBCommandReturnObject *arg2 = 0 ;
+  
+  arg1 = (lldb::SBCommandInterpreter *)jarg1; 
+  arg2 = (lldb::SBCommandReturnObject *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBCommandReturnObject & type is null", 0);
+    return ;
+  } 
+  (arg1)->SourceInitFileInCurrentWorkingDirectory(*arg2);
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBCommandInterpreter_HandleCommand__SWIG_0(void * jarg1, char * jarg2, void * jarg3, unsigned int jarg4) {
+  int jresult ;
+  lldb::SBCommandInterpreter *arg1 = (lldb::SBCommandInterpreter *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBCommandReturnObject *arg3 = 0 ;
+  bool arg4 ;
+  lldb::ReturnStatus result;
+  
+  arg1 = (lldb::SBCommandInterpreter *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (lldb::SBCommandReturnObject *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBCommandReturnObject & type is null", 0);
+    return 0;
+  } 
+  arg4 = jarg4 ? true : false; 
+  result = (lldb::ReturnStatus)(arg1)->HandleCommand((char const *)arg2,*arg3,arg4);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBCommandInterpreter_HandleCommand__SWIG_1(void * jarg1, char * jarg2, void * jarg3) {
+  int jresult ;
+  lldb::SBCommandInterpreter *arg1 = (lldb::SBCommandInterpreter *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBCommandReturnObject *arg3 = 0 ;
+  lldb::ReturnStatus result;
+  
+  arg1 = (lldb::SBCommandInterpreter *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (lldb::SBCommandReturnObject *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBCommandReturnObject & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::ReturnStatus)(arg1)->HandleCommand((char const *)arg2,*arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBCommandInterpreter_HandleCompletion(void * jarg1, char * jarg2, void * jarg3, int jarg4, int jarg5, void * jarg6) {
+  int jresult ;
+  lldb::SBCommandInterpreter *arg1 = (lldb::SBCommandInterpreter *) 0 ;
+  char *arg2 = (char *) 0 ;
+  uint32_t arg3 ;
+  int arg4 ;
+  int arg5 ;
+  lldb::SBStringList *arg6 = 0 ;
+  uint32_t *argp3 ;
+  int result;
+  
+  arg1 = (lldb::SBCommandInterpreter *)jarg1; 
+  arg2 = (char *)jarg2; 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  arg4 = (int)jarg4; 
+  arg5 = (int)jarg5; 
+  arg6 = (lldb::SBStringList *)jarg6;
+  if (!arg6) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStringList & type is null", 0);
+    return 0;
+  } 
+  result = (int)(arg1)->HandleCompletion((char const *)arg2,arg3,arg4,arg5,*arg6);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBCommandReturnObject__SWIG_0() {
+  void * jresult ;
+  lldb::SBCommandReturnObject *result = 0 ;
+  
+  result = (lldb::SBCommandReturnObject *)new lldb::SBCommandReturnObject();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBCommandReturnObject__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBCommandReturnObject *arg1 = 0 ;
+  lldb::SBCommandReturnObject *result = 0 ;
+  
+  arg1 = (lldb::SBCommandReturnObject *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBCommandReturnObject const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBCommandReturnObject *)new lldb::SBCommandReturnObject((lldb::SBCommandReturnObject const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBCommandReturnObject(void * jarg1) {
+  lldb::SBCommandReturnObject *arg1 = (lldb::SBCommandReturnObject *) 0 ;
+  
+  arg1 = (lldb::SBCommandReturnObject *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBCommandReturnObject_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBCommandReturnObject *arg1 = (lldb::SBCommandReturnObject *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBCommandReturnObject *)jarg1; 
+  result = (bool)((lldb::SBCommandReturnObject const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBCommandReturnObject_GetOutput(void * jarg1) {
+  char * jresult ;
+  lldb::SBCommandReturnObject *arg1 = (lldb::SBCommandReturnObject *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBCommandReturnObject *)jarg1; 
+  result = (char *)(arg1)->GetOutput();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBCommandReturnObject_GetError(void * jarg1) {
+  char * jresult ;
+  lldb::SBCommandReturnObject *arg1 = (lldb::SBCommandReturnObject *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBCommandReturnObject *)jarg1; 
+  result = (char *)(arg1)->GetError();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBCommandReturnObject_PutOutput(void * jarg1, void * jarg2) {
+  unsigned long jresult ;
+  lldb::SBCommandReturnObject *arg1 = (lldb::SBCommandReturnObject *) 0 ;
+  FILE *arg2 = (FILE *) 0 ;
+  size_t result;
+  
+  arg1 = (lldb::SBCommandReturnObject *)jarg1; 
+  arg2 = (FILE *)jarg2; 
+  result = (arg1)->PutOutput(arg2);
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBCommandReturnObject_GetOutputSize(void * jarg1) {
+  unsigned long jresult ;
+  lldb::SBCommandReturnObject *arg1 = (lldb::SBCommandReturnObject *) 0 ;
+  size_t result;
+  
+  arg1 = (lldb::SBCommandReturnObject *)jarg1; 
+  result = (arg1)->GetOutputSize();
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBCommandReturnObject_GetErrorSize(void * jarg1) {
+  unsigned long jresult ;
+  lldb::SBCommandReturnObject *arg1 = (lldb::SBCommandReturnObject *) 0 ;
+  size_t result;
+  
+  arg1 = (lldb::SBCommandReturnObject *)jarg1; 
+  result = (arg1)->GetErrorSize();
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBCommandReturnObject_PutError(void * jarg1, void * jarg2) {
+  unsigned long jresult ;
+  lldb::SBCommandReturnObject *arg1 = (lldb::SBCommandReturnObject *) 0 ;
+  FILE *arg2 = (FILE *) 0 ;
+  size_t result;
+  
+  arg1 = (lldb::SBCommandReturnObject *)jarg1; 
+  arg2 = (FILE *)jarg2; 
+  result = (arg1)->PutError(arg2);
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBCommandReturnObject_Clear(void * jarg1) {
+  lldb::SBCommandReturnObject *arg1 = (lldb::SBCommandReturnObject *) 0 ;
+  
+  arg1 = (lldb::SBCommandReturnObject *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBCommandReturnObject_SetStatus(void * jarg1, int jarg2) {
+  lldb::SBCommandReturnObject *arg1 = (lldb::SBCommandReturnObject *) 0 ;
+  lldb::ReturnStatus arg2 ;
+  
+  arg1 = (lldb::SBCommandReturnObject *)jarg1; 
+  arg2 = (lldb::ReturnStatus)jarg2; 
+  (arg1)->SetStatus(arg2);
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBCommandReturnObject_GetStatus(void * jarg1) {
+  int jresult ;
+  lldb::SBCommandReturnObject *arg1 = (lldb::SBCommandReturnObject *) 0 ;
+  lldb::ReturnStatus result;
+  
+  arg1 = (lldb::SBCommandReturnObject *)jarg1; 
+  result = (lldb::ReturnStatus)(arg1)->GetStatus();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBCommandReturnObject_Succeeded(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBCommandReturnObject *arg1 = (lldb::SBCommandReturnObject *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBCommandReturnObject *)jarg1; 
+  result = (bool)(arg1)->Succeeded();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBCommandReturnObject_HasResult(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBCommandReturnObject *arg1 = (lldb::SBCommandReturnObject *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBCommandReturnObject *)jarg1; 
+  result = (bool)(arg1)->HasResult();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBCommandReturnObject_AppendMessage(void * jarg1, char * jarg2) {
+  lldb::SBCommandReturnObject *arg1 = (lldb::SBCommandReturnObject *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBCommandReturnObject *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->AppendMessage((char const *)arg2);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBCommandReturnObject_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBCommandReturnObject *arg1 = (lldb::SBCommandReturnObject *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBCommandReturnObject *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBCommandReturnObject_SetImmediateOutputFile(void * jarg1, void * jarg2) {
+  lldb::SBCommandReturnObject *arg1 = (lldb::SBCommandReturnObject *) 0 ;
+  FILE *arg2 = (FILE *) 0 ;
+  
+  arg1 = (lldb::SBCommandReturnObject *)jarg1; 
+  arg2 = (FILE *)jarg2; 
+  (arg1)->SetImmediateOutputFile(arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBCommandReturnObject_SetImmediateErrorFile(void * jarg1, void * jarg2) {
+  lldb::SBCommandReturnObject *arg1 = (lldb::SBCommandReturnObject *) 0 ;
+  FILE *arg2 = (FILE *) 0 ;
+  
+  arg1 = (lldb::SBCommandReturnObject *)jarg1; 
+  arg2 = (FILE *)jarg2; 
+  (arg1)->SetImmediateErrorFile(arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBCommandReturnObject_PutCString__SWIG_0(void * jarg1, char * jarg2, int jarg3) {
+  lldb::SBCommandReturnObject *arg1 = (lldb::SBCommandReturnObject *) 0 ;
+  char *arg2 = (char *) 0 ;
+  int arg3 ;
+  
+  arg1 = (lldb::SBCommandReturnObject *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (int)jarg3; 
+  (arg1)->PutCString((char const *)arg2,arg3);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBCommandReturnObject_PutCString__SWIG_1(void * jarg1, char * jarg2) {
+  lldb::SBCommandReturnObject *arg1 = (lldb::SBCommandReturnObject *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBCommandReturnObject *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->PutCString((char const *)arg2);
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBCommandReturnObject_Printf(void * jarg1, char * jarg2) {
+  unsigned long jresult ;
+  lldb::SBCommandReturnObject *arg1 = (lldb::SBCommandReturnObject *) 0 ;
+  char *arg2 = (char *) 0 ;
+  void *arg3 = 0 ;
+  size_t result;
+  
+  arg1 = (lldb::SBCommandReturnObject *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (arg1)->Printf((char const *)arg2,arg3);
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBCommunication_eBroadcastBitDisconnected_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)lldb::SBCommunication::eBroadcastBitDisconnected;
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBCommunication_eBroadcastBitReadThreadGotBytes_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)lldb::SBCommunication::eBroadcastBitReadThreadGotBytes;
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBCommunication_eBroadcastBitReadThreadDidExit_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)lldb::SBCommunication::eBroadcastBitReadThreadDidExit;
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBCommunication_eBroadcastBitReadThreadShouldExit_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)lldb::SBCommunication::eBroadcastBitReadThreadShouldExit;
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBCommunication_eBroadcastBitPacketAvailable_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)lldb::SBCommunication::eBroadcastBitPacketAvailable;
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBCommunication_eAllEventBits_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)lldb::SBCommunication::eAllEventBits;
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBCommunication__SWIG_0() {
+  void * jresult ;
+  lldb::SBCommunication *result = 0 ;
+  
+  result = (lldb::SBCommunication *)new lldb::SBCommunication();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBCommunication__SWIG_1(char * jarg1) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  lldb::SBCommunication *result = 0 ;
+  
+  arg1 = (char *)jarg1; 
+  result = (lldb::SBCommunication *)new lldb::SBCommunication((char const *)arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBCommunication(void * jarg1) {
+  lldb::SBCommunication *arg1 = (lldb::SBCommunication *) 0 ;
+  
+  arg1 = (lldb::SBCommunication *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBCommunication_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBCommunication *arg1 = (lldb::SBCommunication *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBCommunication *)jarg1; 
+  result = (bool)((lldb::SBCommunication const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBCommunication_GetBroadcaster(void * jarg1) {
+  void * jresult ;
+  lldb::SBCommunication *arg1 = (lldb::SBCommunication *) 0 ;
+  lldb::SBBroadcaster result;
+  
+  arg1 = (lldb::SBCommunication *)jarg1; 
+  result = (arg1)->GetBroadcaster();
+  jresult = new lldb::SBBroadcaster((const lldb::SBBroadcaster &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBCommunication_GetBroadcasterClass() {
+  char * jresult ;
+  char *result = 0 ;
+  
+  result = (char *)lldb::SBCommunication::GetBroadcasterClass();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBCommunication_AdoptFileDesriptor(void * jarg1, int jarg2, unsigned int jarg3) {
+  int jresult ;
+  lldb::SBCommunication *arg1 = (lldb::SBCommunication *) 0 ;
+  int arg2 ;
+  bool arg3 ;
+  lldb::ConnectionStatus result;
+  
+  arg1 = (lldb::SBCommunication *)jarg1; 
+  arg2 = (int)jarg2; 
+  arg3 = jarg3 ? true : false; 
+  result = (lldb::ConnectionStatus)(arg1)->AdoptFileDesriptor(arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBCommunication_Connect(void * jarg1, char * jarg2) {
+  int jresult ;
+  lldb::SBCommunication *arg1 = (lldb::SBCommunication *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::ConnectionStatus result;
+  
+  arg1 = (lldb::SBCommunication *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (lldb::ConnectionStatus)(arg1)->Connect((char const *)arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBCommunication_Disconnect(void * jarg1) {
+  int jresult ;
+  lldb::SBCommunication *arg1 = (lldb::SBCommunication *) 0 ;
+  lldb::ConnectionStatus result;
+  
+  arg1 = (lldb::SBCommunication *)jarg1; 
+  result = (lldb::ConnectionStatus)(arg1)->Disconnect();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBCommunication_IsConnected(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBCommunication *arg1 = (lldb::SBCommunication *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBCommunication *)jarg1; 
+  result = (bool)((lldb::SBCommunication const *)arg1)->IsConnected();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBCommunication_GetCloseOnEOF(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBCommunication *arg1 = (lldb::SBCommunication *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBCommunication *)jarg1; 
+  result = (bool)(arg1)->GetCloseOnEOF();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBCommunication_SetCloseOnEOF(void * jarg1, unsigned int jarg2) {
+  lldb::SBCommunication *arg1 = (lldb::SBCommunication *) 0 ;
+  bool arg2 ;
+  
+  arg1 = (lldb::SBCommunication *)jarg1; 
+  arg2 = jarg2 ? true : false; 
+  (arg1)->SetCloseOnEOF(arg2);
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBCommunication_Read(void * jarg1, void* jarg2, unsigned long jarg3, void * jarg4, void * jarg5) {
+  unsigned long jresult ;
+  lldb::SBCommunication *arg1 = (lldb::SBCommunication *) 0 ;
+  void *arg2 = (void *) 0 ;
+  size_t arg3 ;
+  uint32_t arg4 ;
+  lldb::ConnectionStatus *arg5 = 0 ;
+  uint32_t *argp4 ;
+  size_t result;
+  
+  arg1 = (lldb::SBCommunication *)jarg1; 
+  arg2 = (void *)jarg2; /* IntPtr */ 
+  arg3 = (size_t)jarg3; 
+  argp4 = (uint32_t *)jarg4; 
+  if (!argp4) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg4 = *argp4; 
+  arg5 = (lldb::ConnectionStatus *)jarg5;
+  if (!arg5) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::ConnectionStatus & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->Read(arg2,arg3,arg4,*arg5);
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBCommunication_Write(void * jarg1, void* jarg2, unsigned long jarg3, void * jarg4) {
+  unsigned long jresult ;
+  lldb::SBCommunication *arg1 = (lldb::SBCommunication *) 0 ;
+  void *arg2 = (void *) 0 ;
+  size_t arg3 ;
+  lldb::ConnectionStatus *arg4 = 0 ;
+  size_t result;
+  
+  arg1 = (lldb::SBCommunication *)jarg1; 
+  arg2 = (void *)jarg2; /* IntPtr */ 
+  arg3 = (size_t)jarg3; 
+  arg4 = (lldb::ConnectionStatus *)jarg4;
+  if (!arg4) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::ConnectionStatus & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->Write((void const *)arg2,arg3,*arg4);
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBCommunication_ReadThreadStart(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBCommunication *arg1 = (lldb::SBCommunication *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBCommunication *)jarg1; 
+  result = (bool)(arg1)->ReadThreadStart();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBCommunication_ReadThreadStop(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBCommunication *arg1 = (lldb::SBCommunication *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBCommunication *)jarg1; 
+  result = (bool)(arg1)->ReadThreadStop();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBCommunication_ReadThreadIsRunning(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBCommunication *arg1 = (lldb::SBCommunication *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBCommunication *)jarg1; 
+  result = (bool)(arg1)->ReadThreadIsRunning();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBCommunication_SetReadThreadBytesReceivedCallback(void * jarg1, void * jarg2, void* jarg3) {
+  unsigned int jresult ;
+  lldb::SBCommunication *arg1 = (lldb::SBCommunication *) 0 ;
+  lldb::SBCommunication::ReadThreadBytesReceived arg2 = (lldb::SBCommunication::ReadThreadBytesReceived) 0 ;
+  void *arg3 = (void *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBCommunication *)jarg1; 
+  arg2 = (lldb::SBCommunication::ReadThreadBytesReceived)jarg2; 
+  arg3 = (void *)jarg3; /* IntPtr */ 
+  result = (bool)(arg1)->SetReadThreadBytesReceivedCallback(arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBCompileUnit__SWIG_0() {
+  void * jresult ;
+  lldb::SBCompileUnit *result = 0 ;
+  
+  result = (lldb::SBCompileUnit *)new lldb::SBCompileUnit();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBCompileUnit__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBCompileUnit *arg1 = 0 ;
+  lldb::SBCompileUnit *result = 0 ;
+  
+  arg1 = (lldb::SBCompileUnit *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBCompileUnit const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBCompileUnit *)new lldb::SBCompileUnit((lldb::SBCompileUnit const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBCompileUnit(void * jarg1) {
+  lldb::SBCompileUnit *arg1 = (lldb::SBCompileUnit *) 0 ;
+  
+  arg1 = (lldb::SBCompileUnit *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBCompileUnit_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBCompileUnit *arg1 = (lldb::SBCompileUnit *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBCompileUnit *)jarg1; 
+  result = (bool)((lldb::SBCompileUnit const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBCompileUnit_GetFileSpec(void * jarg1) {
+  void * jresult ;
+  lldb::SBCompileUnit *arg1 = (lldb::SBCompileUnit *) 0 ;
+  lldb::SBFileSpec result;
+  
+  arg1 = (lldb::SBCompileUnit *)jarg1; 
+  result = ((lldb::SBCompileUnit const *)arg1)->GetFileSpec();
+  jresult = new lldb::SBFileSpec((const lldb::SBFileSpec &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBCompileUnit_GetNumLineEntries(void * jarg1) {
+  void * jresult ;
+  lldb::SBCompileUnit *arg1 = (lldb::SBCompileUnit *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBCompileUnit *)jarg1; 
+  result = ((lldb::SBCompileUnit const *)arg1)->GetNumLineEntries();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBCompileUnit_GetLineEntryAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBCompileUnit *arg1 = (lldb::SBCompileUnit *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBLineEntry result;
+  
+  arg1 = (lldb::SBCompileUnit *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = ((lldb::SBCompileUnit const *)arg1)->GetLineEntryAtIndex(arg2);
+  jresult = new lldb::SBLineEntry((const lldb::SBLineEntry &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBCompileUnit_FindLineEntryIndex__SWIG_0(void * jarg1, void * jarg2, void * jarg3, void * jarg4) {
+  void * jresult ;
+  lldb::SBCompileUnit *arg1 = (lldb::SBCompileUnit *) 0 ;
+  uint32_t arg2 ;
+  uint32_t arg3 ;
+  lldb::SBFileSpec *arg4 = (lldb::SBFileSpec *) 0 ;
+  uint32_t *argp2 ;
+  uint32_t *argp3 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBCompileUnit *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  arg4 = (lldb::SBFileSpec *)jarg4; 
+  result = ((lldb::SBCompileUnit const *)arg1)->FindLineEntryIndex(arg2,arg3,arg4);
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBCompileUnit_FindLineEntryIndex__SWIG_1(void * jarg1, void * jarg2, void * jarg3, void * jarg4, unsigned int jarg5) {
+  void * jresult ;
+  lldb::SBCompileUnit *arg1 = (lldb::SBCompileUnit *) 0 ;
+  uint32_t arg2 ;
+  uint32_t arg3 ;
+  lldb::SBFileSpec *arg4 = (lldb::SBFileSpec *) 0 ;
+  bool arg5 ;
+  uint32_t *argp2 ;
+  uint32_t *argp3 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBCompileUnit *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  arg4 = (lldb::SBFileSpec *)jarg4; 
+  arg5 = jarg5 ? true : false; 
+  result = ((lldb::SBCompileUnit const *)arg1)->FindLineEntryIndex(arg2,arg3,arg4,arg5);
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBCompileUnit_GetSupportFileAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBCompileUnit *arg1 = (lldb::SBCompileUnit *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBFileSpec result;
+  
+  arg1 = (lldb::SBCompileUnit *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = ((lldb::SBCompileUnit const *)arg1)->GetSupportFileAtIndex(arg2);
+  jresult = new lldb::SBFileSpec((const lldb::SBFileSpec &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBCompileUnit_GetNumSupportFiles(void * jarg1) {
+  void * jresult ;
+  lldb::SBCompileUnit *arg1 = (lldb::SBCompileUnit *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBCompileUnit *)jarg1; 
+  result = ((lldb::SBCompileUnit const *)arg1)->GetNumSupportFiles();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBCompileUnit_FindSupportFileIndex(void * jarg1, void * jarg2, void * jarg3, unsigned int jarg4) {
+  void * jresult ;
+  lldb::SBCompileUnit *arg1 = (lldb::SBCompileUnit *) 0 ;
+  uint32_t arg2 ;
+  lldb::SBFileSpec *arg3 = 0 ;
+  bool arg4 ;
+  uint32_t *argp2 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBCompileUnit *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  arg3 = (lldb::SBFileSpec *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFileSpec const & type is null", 0);
+    return 0;
+  } 
+  arg4 = jarg4 ? true : false; 
+  result = (arg1)->FindSupportFileIndex(arg2,(lldb::SBFileSpec const &)*arg3,arg4);
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBCompileUnit_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBCompileUnit *arg1 = (lldb::SBCompileUnit *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBCompileUnit *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBData__SWIG_0() {
+  void * jresult ;
+  lldb::SBData *result = 0 ;
+  
+  result = (lldb::SBData *)new lldb::SBData();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBData__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBData *arg1 = 0 ;
+  lldb::SBData *result = 0 ;
+  
+  arg1 = (lldb::SBData *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBData const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBData *)new lldb::SBData((lldb::SBData const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBData(void * jarg1) {
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBData_GetAddressByteSize(void * jarg1) {
+  void * jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  uint8_t result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  result = (arg1)->GetAddressByteSize();
+  jresult = new uint8_t((const uint8_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBData_SetAddressByteSize(void * jarg1, void * jarg2) {
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  uint8_t arg2 ;
+  uint8_t *argp2 ;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  argp2 = (uint8_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint8_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetAddressByteSize(arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBData_Clear(void * jarg1) {
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBData_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  result = (bool)(arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBData_GetByteSize(void * jarg1) {
+  unsigned long jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  size_t result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  result = (arg1)->GetByteSize();
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBData_GetByteOrder(void * jarg1) {
+  int jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  lldb::ByteOrder result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  result = (lldb::ByteOrder)(arg1)->GetByteOrder();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBData_SetByteOrder(void * jarg1, int jarg2) {
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  lldb::ByteOrder arg2 ;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (lldb::ByteOrder)jarg2; 
+  (arg1)->SetByteOrder(arg2);
+}
+
+
+SWIGEXPORT float SWIGSTDCALL CSharp_SBData_GetFloat(void * jarg1, void * jarg2, void * jarg3) {
+  float jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  lldb::SBError *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  float result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (lldb::SBError *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (float)(arg1)->GetFloat(*arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT double SWIGSTDCALL CSharp_SBData_GetDouble(void * jarg1, void * jarg2, void * jarg3) {
+  double jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  lldb::SBError *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  double result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (lldb::SBError *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (double)(arg1)->GetDouble(*arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBData_GetLongDouble(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  lldb::SBError *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  long double result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (lldb::SBError *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (long double)(arg1)->GetLongDouble(*arg2,arg3);
+  jresult = new long double((const long double &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBData_GetAddress(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  lldb::SBError *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  lldb::addr_t result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (lldb::SBError *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->GetAddress(*arg2,arg3);
+  jresult = new lldb::addr_t((const lldb::addr_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBData_GetUnsignedInt8(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  lldb::SBError *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  uint8_t result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (lldb::SBError *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->GetUnsignedInt8(*arg2,arg3);
+  jresult = new uint8_t((const uint8_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBData_GetUnsignedInt16(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  lldb::SBError *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  uint16_t result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (lldb::SBError *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->GetUnsignedInt16(*arg2,arg3);
+  jresult = new uint16_t((const uint16_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBData_GetUnsignedInt32(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  lldb::SBError *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (lldb::SBError *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->GetUnsignedInt32(*arg2,arg3);
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBData_GetUnsignedInt64(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  lldb::SBError *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  uint64_t result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (lldb::SBError *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->GetUnsignedInt64(*arg2,arg3);
+  jresult = new uint64_t((const uint64_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBData_GetSignedInt8(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  lldb::SBError *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  int8_t result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (lldb::SBError *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->GetSignedInt8(*arg2,arg3);
+  jresult = new int8_t((const int8_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBData_GetSignedInt16(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  lldb::SBError *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  int16_t result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (lldb::SBError *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->GetSignedInt16(*arg2,arg3);
+  jresult = new int16_t((const int16_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBData_GetSignedInt32(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  lldb::SBError *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  int32_t result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (lldb::SBError *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->GetSignedInt32(*arg2,arg3);
+  jresult = new int32_t((const int32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBData_GetSignedInt64(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  lldb::SBError *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  int64_t result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (lldb::SBError *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->GetSignedInt64(*arg2,arg3);
+  jresult = new int64_t((const int64_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBData_GetString(void * jarg1, void * jarg2, void * jarg3) {
+  char * jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  lldb::SBError *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (lldb::SBError *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (char *)(arg1)->GetString(*arg2,arg3);
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBData_GetDescription(void * jarg1, void * jarg2, void * jarg3) {
+  unsigned int jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  lldb::addr_t arg3 ;
+  lldb::addr_t *argp3 ;
+  bool result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  argp3 = (lldb::addr_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (bool)(arg1)->GetDescription(*arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBData_ReadRawData(void * jarg1, void * jarg2, void * jarg3, void* jarg4, unsigned long jarg5) {
+  unsigned long jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  lldb::SBError *arg2 = 0 ;
+  uint32_t arg3 ;
+  void *arg4 = (void *) 0 ;
+  size_t arg5 ;
+  uint32_t *argp3 ;
+  size_t result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (lldb::SBError *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  arg4 = (void *)jarg4; /* IntPtr */ 
+  arg5 = (size_t)jarg5; 
+  result = (arg1)->ReadRawData(*arg2,arg3,arg4,arg5);
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBData_SetData(void * jarg1, void * jarg2, void* jarg3, unsigned long jarg4, int jarg5, void * jarg6) {
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  lldb::SBError *arg2 = 0 ;
+  void *arg3 = (void *) 0 ;
+  size_t arg4 ;
+  lldb::ByteOrder arg5 ;
+  uint8_t arg6 ;
+  uint8_t *argp6 ;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (lldb::SBError *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return ;
+  } 
+  arg3 = (void *)jarg3; /* IntPtr */ 
+  arg4 = (size_t)jarg4; 
+  arg5 = (lldb::ByteOrder)jarg5; 
+  argp6 = (uint8_t *)jarg6; 
+  if (!argp6) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint8_t", 0);
+    return ;
+  }
+  arg6 = *argp6; 
+  (arg1)->SetData(*arg2,(void const *)arg3,arg4,arg5,arg6);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBData_Append(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  lldb::SBData *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (lldb::SBData *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBData const & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->Append((lldb::SBData const &)*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBData_CreateDataFromCString(int jarg1, void * jarg2, char * jarg3) {
+  void * jresult ;
+  lldb::ByteOrder arg1 ;
+  uint32_t arg2 ;
+  char *arg3 = (char *) 0 ;
+  uint32_t *argp2 ;
+  lldb::SBData result;
+  
+  arg1 = (lldb::ByteOrder)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  arg3 = (char *)jarg3; 
+  result = lldb::SBData::CreateDataFromCString(arg1,arg2,(char const *)arg3);
+  jresult = new lldb::SBData((const lldb::SBData &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBData_CreateDataFromUInt64Array(int jarg1, void * jarg2, void * jarg3, unsigned long jarg4) {
+  void * jresult ;
+  lldb::ByteOrder arg1 ;
+  uint32_t arg2 ;
+  uint64_t *arg3 = (uint64_t *) 0 ;
+  size_t arg4 ;
+  uint32_t *argp2 ;
+  lldb::SBData result;
+  
+  arg1 = (lldb::ByteOrder)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  arg3 = (uint64_t *)jarg3; 
+  arg4 = (size_t)jarg4; 
+  result = lldb::SBData::CreateDataFromUInt64Array(arg1,arg2,arg3,arg4);
+  jresult = new lldb::SBData((const lldb::SBData &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBData_CreateDataFromUInt32Array(int jarg1, void * jarg2, void * jarg3, unsigned long jarg4) {
+  void * jresult ;
+  lldb::ByteOrder arg1 ;
+  uint32_t arg2 ;
+  uint32_t *arg3 = (uint32_t *) 0 ;
+  size_t arg4 ;
+  uint32_t *argp2 ;
+  lldb::SBData result;
+  
+  arg1 = (lldb::ByteOrder)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  arg3 = (uint32_t *)jarg3; 
+  arg4 = (size_t)jarg4; 
+  result = lldb::SBData::CreateDataFromUInt32Array(arg1,arg2,arg3,arg4);
+  jresult = new lldb::SBData((const lldb::SBData &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBData_CreateDataFromSInt64Array(int jarg1, void * jarg2, void * jarg3, unsigned long jarg4) {
+  void * jresult ;
+  lldb::ByteOrder arg1 ;
+  uint32_t arg2 ;
+  int64_t *arg3 = (int64_t *) 0 ;
+  size_t arg4 ;
+  uint32_t *argp2 ;
+  lldb::SBData result;
+  
+  arg1 = (lldb::ByteOrder)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  arg3 = (int64_t *)jarg3; 
+  arg4 = (size_t)jarg4; 
+  result = lldb::SBData::CreateDataFromSInt64Array(arg1,arg2,arg3,arg4);
+  jresult = new lldb::SBData((const lldb::SBData &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBData_CreateDataFromSInt32Array(int jarg1, void * jarg2, void * jarg3, unsigned long jarg4) {
+  void * jresult ;
+  lldb::ByteOrder arg1 ;
+  uint32_t arg2 ;
+  int32_t *arg3 = (int32_t *) 0 ;
+  size_t arg4 ;
+  uint32_t *argp2 ;
+  lldb::SBData result;
+  
+  arg1 = (lldb::ByteOrder)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  arg3 = (int32_t *)jarg3; 
+  arg4 = (size_t)jarg4; 
+  result = lldb::SBData::CreateDataFromSInt32Array(arg1,arg2,arg3,arg4);
+  jresult = new lldb::SBData((const lldb::SBData &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBData_CreateDataFromDoubleArray(int jarg1, void * jarg2, void * jarg3, unsigned long jarg4) {
+  void * jresult ;
+  lldb::ByteOrder arg1 ;
+  uint32_t arg2 ;
+  double *arg3 = (double *) 0 ;
+  size_t arg4 ;
+  uint32_t *argp2 ;
+  lldb::SBData result;
+  
+  arg1 = (lldb::ByteOrder)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  arg3 = (double *)jarg3; 
+  arg4 = (size_t)jarg4; 
+  result = lldb::SBData::CreateDataFromDoubleArray(arg1,arg2,arg3,arg4);
+  jresult = new lldb::SBData((const lldb::SBData &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBData_SetDataFromCString(void * jarg1, char * jarg2) {
+  unsigned int jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  char *arg2 = (char *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (bool)(arg1)->SetDataFromCString((char const *)arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBData_SetDataFromUInt64Array(void * jarg1, void * jarg2, unsigned long jarg3) {
+  unsigned int jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  uint64_t *arg2 = (uint64_t *) 0 ;
+  size_t arg3 ;
+  bool result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (uint64_t *)jarg2; 
+  arg3 = (size_t)jarg3; 
+  result = (bool)(arg1)->SetDataFromUInt64Array(arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBData_SetDataFromUInt32Array(void * jarg1, void * jarg2, unsigned long jarg3) {
+  unsigned int jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  uint32_t *arg2 = (uint32_t *) 0 ;
+  size_t arg3 ;
+  bool result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (uint32_t *)jarg2; 
+  arg3 = (size_t)jarg3; 
+  result = (bool)(arg1)->SetDataFromUInt32Array(arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBData_SetDataFromSInt64Array(void * jarg1, void * jarg2, unsigned long jarg3) {
+  unsigned int jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  int64_t *arg2 = (int64_t *) 0 ;
+  size_t arg3 ;
+  bool result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (int64_t *)jarg2; 
+  arg3 = (size_t)jarg3; 
+  result = (bool)(arg1)->SetDataFromSInt64Array(arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBData_SetDataFromSInt32Array(void * jarg1, void * jarg2, unsigned long jarg3) {
+  unsigned int jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  int32_t *arg2 = (int32_t *) 0 ;
+  size_t arg3 ;
+  bool result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (int32_t *)jarg2; 
+  arg3 = (size_t)jarg3; 
+  result = (bool)(arg1)->SetDataFromSInt32Array(arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBData_SetDataFromDoubleArray(void * jarg1, void * jarg2, unsigned long jarg3) {
+  unsigned int jresult ;
+  lldb::SBData *arg1 = (lldb::SBData *) 0 ;
+  double *arg2 = (double *) 0 ;
+  size_t arg3 ;
+  bool result;
+  
+  arg1 = (lldb::SBData *)jarg1; 
+  arg2 = (double *)jarg2; 
+  arg3 = (size_t)jarg3; 
+  result = (bool)(arg1)->SetDataFromDoubleArray(arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_Initialize() {
+  lldb::SBDebugger::Initialize();
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_Terminate() {
+  lldb::SBDebugger::Terminate();
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_Create__SWIG_0() {
+  void * jresult ;
+  lldb::SBDebugger result;
+  
+  result = lldb::SBDebugger::Create();
+  jresult = new lldb::SBDebugger((const lldb::SBDebugger &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_Create__SWIG_1(unsigned int jarg1) {
+  void * jresult ;
+  bool arg1 ;
+  lldb::SBDebugger result;
+  
+  arg1 = jarg1 ? true : false; 
+  result = lldb::SBDebugger::Create(arg1);
+  jresult = new lldb::SBDebugger((const lldb::SBDebugger &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_Create__SWIG_2(unsigned int jarg1, void * jarg2, void* jarg3) {
+  void * jresult ;
+  bool arg1 ;
+  lldb::LogOutputCallback arg2 = (lldb::LogOutputCallback) 0 ;
+  void *arg3 = (void *) 0 ;
+  lldb::SBDebugger result;
+  
+  arg1 = jarg1 ? true : false; 
+  arg2 = (lldb::LogOutputCallback)jarg2; 
+  arg3 = (void *)jarg3; /* IntPtr */ 
+  result = lldb::SBDebugger::Create(arg1,arg2,arg3);
+  jresult = new lldb::SBDebugger((const lldb::SBDebugger &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_Destroy(void * jarg1) {
+  lldb::SBDebugger *arg1 = 0 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBDebugger & type is null", 0);
+    return ;
+  } 
+  lldb::SBDebugger::Destroy(*arg1);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_MemoryPressureDetected() {
+  lldb::SBDebugger::MemoryPressureDetected();
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBDebugger__SWIG_0() {
+  void * jresult ;
+  lldb::SBDebugger *result = 0 ;
+  
+  result = (lldb::SBDebugger *)new lldb::SBDebugger();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBDebugger__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = 0 ;
+  lldb::SBDebugger *result = 0 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBDebugger const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBDebugger *)new lldb::SBDebugger((lldb::SBDebugger const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBDebugger(void * jarg1) {
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBDebugger_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  result = (bool)((lldb::SBDebugger const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_Clear(void * jarg1) {
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_SetAsync(void * jarg1, unsigned int jarg2) {
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  bool arg2 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = jarg2 ? true : false; 
+  (arg1)->SetAsync(arg2);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBDebugger_GetAsync(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  result = (bool)(arg1)->GetAsync();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_SkipLLDBInitFiles(void * jarg1, unsigned int jarg2) {
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  bool arg2 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = jarg2 ? true : false; 
+  (arg1)->SkipLLDBInitFiles(arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_SetInputFileHandle(void * jarg1, void * jarg2, unsigned int jarg3) {
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  FILE *arg2 = (FILE *) 0 ;
+  bool arg3 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (FILE *)jarg2; 
+  arg3 = jarg3 ? true : false; 
+  (arg1)->SetInputFileHandle(arg2,arg3);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_SetOutputFileHandle(void * jarg1, void * jarg2, unsigned int jarg3) {
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  FILE *arg2 = (FILE *) 0 ;
+  bool arg3 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (FILE *)jarg2; 
+  arg3 = jarg3 ? true : false; 
+  (arg1)->SetOutputFileHandle(arg2,arg3);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_SetErrorFileHandle(void * jarg1, void * jarg2, unsigned int jarg3) {
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  FILE *arg2 = (FILE *) 0 ;
+  bool arg3 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (FILE *)jarg2; 
+  arg3 = jarg3 ? true : false; 
+  (arg1)->SetErrorFileHandle(arg2,arg3);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_GetInputFileHandle(void * jarg1) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  FILE *result = 0 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  result = (FILE *)(arg1)->GetInputFileHandle();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_GetOutputFileHandle(void * jarg1) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  FILE *result = 0 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  result = (FILE *)(arg1)->GetOutputFileHandle();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_GetErrorFileHandle(void * jarg1) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  FILE *result = 0 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  result = (FILE *)(arg1)->GetErrorFileHandle();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_GetCommandInterpreter(void * jarg1) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  SwigValueWrapper< lldb::SBCommandInterpreter > result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  result = (arg1)->GetCommandInterpreter();
+  jresult = new lldb::SBCommandInterpreter((const lldb::SBCommandInterpreter &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_HandleCommand(void * jarg1, char * jarg2) {
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->HandleCommand((char const *)arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_GetListener(void * jarg1) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  lldb::SBListener result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  result = (arg1)->GetListener();
+  jresult = new lldb::SBListener((const lldb::SBListener &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_HandleProcessEvent(void * jarg1, void * jarg2, void * jarg3, void * jarg4, void * jarg5) {
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  lldb::SBProcess *arg2 = 0 ;
+  lldb::SBEvent *arg3 = 0 ;
+  FILE *arg4 = (FILE *) 0 ;
+  FILE *arg5 = (FILE *) 0 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (lldb::SBProcess *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBProcess const & type is null", 0);
+    return ;
+  } 
+  arg3 = (lldb::SBEvent *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent const & type is null", 0);
+    return ;
+  } 
+  arg4 = (FILE *)jarg4; 
+  arg5 = (FILE *)jarg5; 
+  (arg1)->HandleProcessEvent((lldb::SBProcess const &)*arg2,(lldb::SBEvent const &)*arg3,arg4,arg5);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_CreateTarget__SWIG_0(void * jarg1, char * jarg2, char * jarg3, char * jarg4, unsigned int jarg5, void * jarg6) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  char *arg2 = (char *) 0 ;
+  char *arg3 = (char *) 0 ;
+  char *arg4 = (char *) 0 ;
+  bool arg5 ;
+  lldb::SBError *arg6 = 0 ;
+  lldb::SBTarget result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (char *)jarg3; 
+  arg4 = (char *)jarg4; 
+  arg5 = jarg5 ? true : false; 
+  arg6 = (lldb::SBError *)jarg6;
+  if (!arg6) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->CreateTarget((char const *)arg2,(char const *)arg3,(char const *)arg4,arg5,*arg6);
+  jresult = new lldb::SBTarget((const lldb::SBTarget &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_CreateTargetWithFileAndTargetTriple(void * jarg1, char * jarg2, char * jarg3) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  char *arg2 = (char *) 0 ;
+  char *arg3 = (char *) 0 ;
+  lldb::SBTarget result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (char *)jarg3; 
+  result = (arg1)->CreateTargetWithFileAndTargetTriple((char const *)arg2,(char const *)arg3);
+  jresult = new lldb::SBTarget((const lldb::SBTarget &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_CreateTargetWithFileAndArch(void * jarg1, char * jarg2, char * jarg3) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  char *arg2 = (char *) 0 ;
+  char *arg3 = (char *) 0 ;
+  lldb::SBTarget result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (char *)jarg3; 
+  result = (arg1)->CreateTargetWithFileAndArch((char const *)arg2,(char const *)arg3);
+  jresult = new lldb::SBTarget((const lldb::SBTarget &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_CreateTarget__SWIG_1(void * jarg1, char * jarg2) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBTarget result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (arg1)->CreateTarget((char const *)arg2);
+  jresult = new lldb::SBTarget((const lldb::SBTarget &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBDebugger_DeleteTarget(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  lldb::SBTarget *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (lldb::SBTarget *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBTarget & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->DeleteTarget(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_GetTargetAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBTarget result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetTargetAtIndex(arg2);
+  jresult = new lldb::SBTarget((const lldb::SBTarget &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_GetIndexOfTarget(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  lldb::SBTarget arg2 ;
+  lldb::SBTarget *argp2 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  argp2 = (lldb::SBTarget *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTarget", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetIndexOfTarget(arg2);
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_FindTargetWithProcessID(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  lldb::pid_t arg2 ;
+  lldb::pid_t *argp2 ;
+  lldb::SBTarget result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  argp2 = (lldb::pid_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::pid_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->FindTargetWithProcessID(arg2);
+  jresult = new lldb::SBTarget((const lldb::SBTarget &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_FindTargetWithFileAndArch(void * jarg1, char * jarg2, char * jarg3) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  char *arg2 = (char *) 0 ;
+  char *arg3 = (char *) 0 ;
+  lldb::SBTarget result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (char *)jarg3; 
+  result = (arg1)->FindTargetWithFileAndArch((char const *)arg2,(char const *)arg3);
+  jresult = new lldb::SBTarget((const lldb::SBTarget &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_GetNumTargets(void * jarg1) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  result = (arg1)->GetNumTargets();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_GetSelectedTarget(void * jarg1) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  lldb::SBTarget result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  result = (arg1)->GetSelectedTarget();
+  jresult = new lldb::SBTarget((const lldb::SBTarget &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_SetSelectedTarget(void * jarg1, void * jarg2) {
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  lldb::SBTarget *arg2 = 0 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (lldb::SBTarget *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBTarget & type is null", 0);
+    return ;
+  } 
+  (arg1)->SetSelectedTarget(*arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_GetSourceManager(void * jarg1) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  SwigValueWrapper< lldb::SBSourceManager > result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  result = (arg1)->GetSourceManager();
+  jresult = new lldb::SBSourceManager((const lldb::SBSourceManager &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_SetCurrentPlatform(void * jarg1, char * jarg2) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBError result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (arg1)->SetCurrentPlatform((char const *)arg2);
+  jresult = new lldb::SBError((const lldb::SBError &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBDebugger_SetCurrentPlatformSDKRoot(void * jarg1, char * jarg2) {
+  unsigned int jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  char *arg2 = (char *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (bool)(arg1)->SetCurrentPlatformSDKRoot((char const *)arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBDebugger_SetUseExternalEditor(void * jarg1, unsigned int jarg2) {
+  unsigned int jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  bool arg2 ;
+  bool result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = jarg2 ? true : false; 
+  result = (bool)(arg1)->SetUseExternalEditor(arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBDebugger_GetUseExternalEditor(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  result = (bool)(arg1)->GetUseExternalEditor();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBDebugger_GetDefaultArchitecture(char * jarg1, unsigned long jarg2) {
+  unsigned int jresult ;
+  char *arg1 = (char *) 0 ;
+  size_t arg2 ;
+  bool result;
+  
+  arg1 = (char *)jarg1; 
+  arg2 = (size_t)jarg2; 
+  result = (bool)lldb::SBDebugger::GetDefaultArchitecture(arg1,arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBDebugger_SetDefaultArchitecture(char * jarg1) {
+  unsigned int jresult ;
+  char *arg1 = (char *) 0 ;
+  bool result;
+  
+  arg1 = (char *)jarg1; 
+  result = (bool)lldb::SBDebugger::SetDefaultArchitecture((char const *)arg1);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBDebugger_GetScriptingLanguage(void * jarg1, char * jarg2) {
+  int jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::ScriptLanguage result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (lldb::ScriptLanguage)(arg1)->GetScriptingLanguage((char const *)arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBDebugger_GetVersionString() {
+  char * jresult ;
+  char *result = 0 ;
+  
+  result = (char *)lldb::SBDebugger::GetVersionString();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBDebugger_StateAsCString(int jarg1) {
+  char * jresult ;
+  lldb::StateType arg1 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::StateType)jarg1; 
+  result = (char *)lldb::SBDebugger::StateAsCString(arg1);
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBDebugger_StateIsRunningState(int jarg1) {
+  unsigned int jresult ;
+  lldb::StateType arg1 ;
+  bool result;
+  
+  arg1 = (lldb::StateType)jarg1; 
+  result = (bool)lldb::SBDebugger::StateIsRunningState(arg1);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBDebugger_StateIsStoppedState(int jarg1) {
+  unsigned int jresult ;
+  lldb::StateType arg1 ;
+  bool result;
+  
+  arg1 = (lldb::StateType)jarg1; 
+  result = (bool)lldb::SBDebugger::StateIsStoppedState(arg1);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBDebugger_EnableLog(void * jarg1, char * jarg2, void * jarg3) {
+  unsigned int jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  char *arg2 = (char *) 0 ;
+  char **arg3 = (char **) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (char **)jarg3; 
+  result = (bool)(arg1)->EnableLog((char const *)arg2,(char const **)arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_SetLoggingCallback(void * jarg1, void * jarg2, void* jarg3) {
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  lldb::LogOutputCallback arg2 = (lldb::LogOutputCallback) 0 ;
+  void *arg3 = (void *) 0 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (lldb::LogOutputCallback)jarg2; 
+  arg3 = (void *)jarg3; /* IntPtr */ 
+  (arg1)->SetLoggingCallback(arg2,arg3);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_DispatchInput(void * jarg1, void* jarg2, unsigned long jarg3) {
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  void *arg2 = (void *) 0 ;
+  size_t arg3 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (void *)jarg2; /* IntPtr */ 
+  arg3 = (size_t)jarg3; 
+  (arg1)->DispatchInput((void const *)arg2,arg3);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_DispatchInputInterrupt(void * jarg1) {
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  (arg1)->DispatchInputInterrupt();
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_DispatchInputEndOfFile(void * jarg1) {
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  (arg1)->DispatchInputEndOfFile();
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_PushInputReader(void * jarg1, void * jarg2) {
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  lldb::SBInputReader *arg2 = 0 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (lldb::SBInputReader *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBInputReader & type is null", 0);
+    return ;
+  } 
+  (arg1)->PushInputReader(*arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_NotifyTopInputReader(void * jarg1, int jarg2) {
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  lldb::InputReaderAction arg2 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (lldb::InputReaderAction)jarg2; 
+  (arg1)->NotifyTopInputReader(arg2);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBDebugger_InputReaderIsTopReader(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  lldb::SBInputReader *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (lldb::SBInputReader *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBInputReader const & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->InputReaderIsTopReader((lldb::SBInputReader const &)*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBDebugger_GetInstanceName(void * jarg1) {
+  char * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  result = (char *)(arg1)->GetInstanceName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_FindDebuggerWithID(int jarg1) {
+  void * jresult ;
+  int arg1 ;
+  lldb::SBDebugger result;
+  
+  arg1 = (int)jarg1; 
+  result = lldb::SBDebugger::FindDebuggerWithID(arg1);
+  jresult = new lldb::SBDebugger((const lldb::SBDebugger &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_SetInternalVariable(char * jarg1, char * jarg2, char * jarg3) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  char *arg2 = (char *) 0 ;
+  char *arg3 = (char *) 0 ;
+  lldb::SBError result;
+  
+  arg1 = (char *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (char *)jarg3; 
+  result = lldb::SBDebugger::SetInternalVariable((char const *)arg1,(char const *)arg2,(char const *)arg3);
+  jresult = new lldb::SBError((const lldb::SBError &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_GetInternalVariableValue(char * jarg1, char * jarg2) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBStringList result;
+  
+  arg1 = (char *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = lldb::SBDebugger::GetInternalVariableValue((char const *)arg1,(char const *)arg2);
+  jresult = new lldb::SBStringList((const lldb::SBStringList &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBDebugger_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_GetTerminalWidth(void * jarg1) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  result = ((lldb::SBDebugger const *)arg1)->GetTerminalWidth();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_SetTerminalWidth(void * jarg1, void * jarg2) {
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetTerminalWidth(arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_GetID(void * jarg1) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  lldb::user_id_t result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  result = (arg1)->GetID();
+  jresult = new lldb::user_id_t((const lldb::user_id_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBDebugger_GetPrompt(void * jarg1) {
+  char * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  result = (char *)((lldb::SBDebugger const *)arg1)->GetPrompt();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_SetPrompt(void * jarg1, char * jarg2) {
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->SetPrompt((char const *)arg2);
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBDebugger_GetScriptLanguage(void * jarg1) {
+  int jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  lldb::ScriptLanguage result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  result = (lldb::ScriptLanguage)((lldb::SBDebugger const *)arg1)->GetScriptLanguage();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_SetScriptLanguage(void * jarg1, int jarg2) {
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  lldb::ScriptLanguage arg2 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (lldb::ScriptLanguage)jarg2; 
+  (arg1)->SetScriptLanguage(arg2);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBDebugger_GetCloseInputOnEOF(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  result = (bool)((lldb::SBDebugger const *)arg1)->GetCloseInputOnEOF();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBDebugger_SetCloseInputOnEOF(void * jarg1, unsigned int jarg2) {
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  bool arg2 ;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = jarg2 ? true : false; 
+  (arg1)->SetCloseInputOnEOF(arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_GetCategory(void * jarg1, char * jarg2) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBTypeCategory result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (arg1)->GetCategory((char const *)arg2);
+  jresult = new lldb::SBTypeCategory((const lldb::SBTypeCategory &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_CreateCategory(void * jarg1, char * jarg2) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBTypeCategory result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (arg1)->CreateCategory((char const *)arg2);
+  jresult = new lldb::SBTypeCategory((const lldb::SBTypeCategory &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBDebugger_DeleteCategory(void * jarg1, char * jarg2) {
+  unsigned int jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  char *arg2 = (char *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (bool)(arg1)->DeleteCategory((char const *)arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_GetNumCategories(void * jarg1) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  result = (arg1)->GetNumCategories();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_GetCategoryAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBTypeCategory result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetCategoryAtIndex(arg2);
+  jresult = new lldb::SBTypeCategory((const lldb::SBTypeCategory &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_GetDefaultCategory(void * jarg1) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  lldb::SBTypeCategory result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  result = (arg1)->GetDefaultCategory();
+  jresult = new lldb::SBTypeCategory((const lldb::SBTypeCategory &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_GetFormatForType(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  lldb::SBTypeNameSpecifier arg2 ;
+  lldb::SBTypeNameSpecifier *argp2 ;
+  lldb::SBTypeFormat result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  argp2 = (lldb::SBTypeNameSpecifier *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTypeNameSpecifier", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetFormatForType(arg2);
+  jresult = new lldb::SBTypeFormat((const lldb::SBTypeFormat &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_GetSummaryForType(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  lldb::SBTypeNameSpecifier arg2 ;
+  lldb::SBTypeNameSpecifier *argp2 ;
+  lldb::SBTypeSummary result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  argp2 = (lldb::SBTypeNameSpecifier *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTypeNameSpecifier", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetSummaryForType(arg2);
+  jresult = new lldb::SBTypeSummary((const lldb::SBTypeSummary &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_GetFilterForType(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  lldb::SBTypeNameSpecifier arg2 ;
+  lldb::SBTypeNameSpecifier *argp2 ;
+  lldb::SBTypeFilter result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  argp2 = (lldb::SBTypeNameSpecifier *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTypeNameSpecifier", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetFilterForType(arg2);
+  jresult = new lldb::SBTypeFilter((const lldb::SBTypeFilter &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBDebugger_GetSyntheticForType(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBDebugger *arg1 = (lldb::SBDebugger *) 0 ;
+  lldb::SBTypeNameSpecifier arg2 ;
+  lldb::SBTypeNameSpecifier *argp2 ;
+  lldb::SBTypeSynthetic result;
+  
+  arg1 = (lldb::SBDebugger *)jarg1; 
+  argp2 = (lldb::SBTypeNameSpecifier *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTypeNameSpecifier", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetSyntheticForType(arg2);
+  jresult = new lldb::SBTypeSynthetic((const lldb::SBTypeSynthetic &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBError__SWIG_0() {
+  void * jresult ;
+  lldb::SBError *result = 0 ;
+  
+  result = (lldb::SBError *)new lldb::SBError();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBError__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBError *arg1 = 0 ;
+  lldb::SBError *result = 0 ;
+  
+  arg1 = (lldb::SBError *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBError *)new lldb::SBError((lldb::SBError const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBError(void * jarg1) {
+  lldb::SBError *arg1 = (lldb::SBError *) 0 ;
+  
+  arg1 = (lldb::SBError *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBError_GetCString(void * jarg1) {
+  char * jresult ;
+  lldb::SBError *arg1 = (lldb::SBError *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBError *)jarg1; 
+  result = (char *)((lldb::SBError const *)arg1)->GetCString();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBError_Clear(void * jarg1) {
+  lldb::SBError *arg1 = (lldb::SBError *) 0 ;
+  
+  arg1 = (lldb::SBError *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBError_Fail(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBError *arg1 = (lldb::SBError *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBError *)jarg1; 
+  result = (bool)((lldb::SBError const *)arg1)->Fail();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBError_Success(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBError *arg1 = (lldb::SBError *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBError *)jarg1; 
+  result = (bool)((lldb::SBError const *)arg1)->Success();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBError_GetError(void * jarg1) {
+  void * jresult ;
+  lldb::SBError *arg1 = (lldb::SBError *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBError *)jarg1; 
+  result = ((lldb::SBError const *)arg1)->GetError();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBError_GetType(void * jarg1) {
+  int jresult ;
+  lldb::SBError *arg1 = (lldb::SBError *) 0 ;
+  lldb::ErrorType result;
+  
+  arg1 = (lldb::SBError *)jarg1; 
+  result = (lldb::ErrorType)((lldb::SBError const *)arg1)->GetType();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBError_SetError(void * jarg1, void * jarg2, int jarg3) {
+  lldb::SBError *arg1 = (lldb::SBError *) 0 ;
+  uint32_t arg2 ;
+  lldb::ErrorType arg3 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBError *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  arg3 = (lldb::ErrorType)jarg3; 
+  (arg1)->SetError(arg2,arg3);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBError_SetErrorToErrno(void * jarg1) {
+  lldb::SBError *arg1 = (lldb::SBError *) 0 ;
+  
+  arg1 = (lldb::SBError *)jarg1; 
+  (arg1)->SetErrorToErrno();
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBError_SetErrorToGenericError(void * jarg1) {
+  lldb::SBError *arg1 = (lldb::SBError *) 0 ;
+  
+  arg1 = (lldb::SBError *)jarg1; 
+  (arg1)->SetErrorToGenericError();
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBError_SetErrorString(void * jarg1, char * jarg2) {
+  lldb::SBError *arg1 = (lldb::SBError *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBError *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->SetErrorString((char const *)arg2);
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBError_SetErrorStringWithFormat(void * jarg1, char * jarg2) {
+  int jresult ;
+  lldb::SBError *arg1 = (lldb::SBError *) 0 ;
+  char *arg2 = (char *) 0 ;
+  void *arg3 = 0 ;
+  int result;
+  
+  arg1 = (lldb::SBError *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (int)(arg1)->SetErrorStringWithFormat((char const *)arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBError_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBError *arg1 = (lldb::SBError *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBError *)jarg1; 
+  result = (bool)((lldb::SBError const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBError_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBError *arg1 = (lldb::SBError *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBError *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBEvent__SWIG_0() {
+  void * jresult ;
+  lldb::SBEvent *result = 0 ;
+  
+  result = (lldb::SBEvent *)new lldb::SBEvent();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBEvent__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBEvent *arg1 = 0 ;
+  lldb::SBEvent *result = 0 ;
+  
+  arg1 = (lldb::SBEvent *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBEvent *)new lldb::SBEvent((lldb::SBEvent const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBEvent__SWIG_2(void * jarg1, char * jarg2, void * jarg3) {
+  void * jresult ;
+  uint32_t arg1 ;
+  char *arg2 = (char *) 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp1 ;
+  uint32_t *argp3 ;
+  lldb::SBEvent *result = 0 ;
+  
+  argp1 = (uint32_t *)jarg1; 
+  if (!argp1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg1 = *argp1; 
+  arg2 = (char *)jarg2; 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (lldb::SBEvent *)new lldb::SBEvent(arg1,(char const *)arg2,arg3);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBEvent(void * jarg1) {
+  lldb::SBEvent *arg1 = (lldb::SBEvent *) 0 ;
+  
+  arg1 = (lldb::SBEvent *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBEvent_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBEvent *arg1 = (lldb::SBEvent *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBEvent *)jarg1; 
+  result = (bool)((lldb::SBEvent const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBEvent_GetDataFlavor(void * jarg1) {
+  char * jresult ;
+  lldb::SBEvent *arg1 = (lldb::SBEvent *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBEvent *)jarg1; 
+  result = (char *)(arg1)->GetDataFlavor();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBEvent_GetType(void * jarg1) {
+  void * jresult ;
+  lldb::SBEvent *arg1 = (lldb::SBEvent *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBEvent *)jarg1; 
+  result = ((lldb::SBEvent const *)arg1)->GetType();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBEvent_GetBroadcaster(void * jarg1) {
+  void * jresult ;
+  lldb::SBEvent *arg1 = (lldb::SBEvent *) 0 ;
+  lldb::SBBroadcaster result;
+  
+  arg1 = (lldb::SBEvent *)jarg1; 
+  result = ((lldb::SBEvent const *)arg1)->GetBroadcaster();
+  jresult = new lldb::SBBroadcaster((const lldb::SBBroadcaster &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBEvent_GetBroadcasterClass(void * jarg1) {
+  char * jresult ;
+  lldb::SBEvent *arg1 = (lldb::SBEvent *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBEvent *)jarg1; 
+  result = (char *)((lldb::SBEvent const *)arg1)->GetBroadcasterClass();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBEvent_BroadcasterMatchesRef(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBEvent *arg1 = (lldb::SBEvent *) 0 ;
+  lldb::SBBroadcaster *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBEvent *)jarg1; 
+  arg2 = (lldb::SBBroadcaster *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBBroadcaster const & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->BroadcasterMatchesRef((lldb::SBBroadcaster const &)*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBEvent_Clear(void * jarg1) {
+  lldb::SBEvent *arg1 = (lldb::SBEvent *) 0 ;
+  
+  arg1 = (lldb::SBEvent *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBEvent_GetCStringFromEvent(void * jarg1) {
+  char * jresult ;
+  lldb::SBEvent *arg1 = 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBEvent *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent const & type is null", 0);
+    return 0;
+  } 
+  result = (char *)lldb::SBEvent::GetCStringFromEvent((lldb::SBEvent const &)*arg1);
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBEvent_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBEvent *arg1 = (lldb::SBEvent *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBEvent *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)((lldb::SBEvent const *)arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBFileSpec__SWIG_0() {
+  void * jresult ;
+  lldb::SBFileSpec *result = 0 ;
+  
+  result = (lldb::SBFileSpec *)new lldb::SBFileSpec();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBFileSpec__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBFileSpec *arg1 = 0 ;
+  lldb::SBFileSpec *result = 0 ;
+  
+  arg1 = (lldb::SBFileSpec *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFileSpec const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBFileSpec *)new lldb::SBFileSpec((lldb::SBFileSpec const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBFileSpec__SWIG_2(char * jarg1) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  lldb::SBFileSpec *result = 0 ;
+  
+  arg1 = (char *)jarg1; 
+  result = (lldb::SBFileSpec *)new lldb::SBFileSpec((char const *)arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBFileSpec__SWIG_3(char * jarg1, unsigned int jarg2) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  bool arg2 ;
+  lldb::SBFileSpec *result = 0 ;
+  
+  arg1 = (char *)jarg1; 
+  arg2 = jarg2 ? true : false; 
+  result = (lldb::SBFileSpec *)new lldb::SBFileSpec((char const *)arg1,arg2);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBFileSpec(void * jarg1) {
+  lldb::SBFileSpec *arg1 = (lldb::SBFileSpec *) 0 ;
+  
+  arg1 = (lldb::SBFileSpec *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBFileSpec_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBFileSpec *arg1 = (lldb::SBFileSpec *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBFileSpec *)jarg1; 
+  result = (bool)((lldb::SBFileSpec const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBFileSpec_Exists(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBFileSpec *arg1 = (lldb::SBFileSpec *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBFileSpec *)jarg1; 
+  result = (bool)((lldb::SBFileSpec const *)arg1)->Exists();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBFileSpec_ResolveExecutableLocation(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBFileSpec *arg1 = (lldb::SBFileSpec *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBFileSpec *)jarg1; 
+  result = (bool)(arg1)->ResolveExecutableLocation();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBFileSpec_GetFilename(void * jarg1) {
+  char * jresult ;
+  lldb::SBFileSpec *arg1 = (lldb::SBFileSpec *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBFileSpec *)jarg1; 
+  result = (char *)((lldb::SBFileSpec const *)arg1)->GetFilename();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBFileSpec_GetDirectory(void * jarg1) {
+  char * jresult ;
+  lldb::SBFileSpec *arg1 = (lldb::SBFileSpec *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBFileSpec *)jarg1; 
+  result = (char *)((lldb::SBFileSpec const *)arg1)->GetDirectory();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFileSpec_GetPath(void * jarg1, char * jarg2, unsigned long jarg3) {
+  void * jresult ;
+  lldb::SBFileSpec *arg1 = (lldb::SBFileSpec *) 0 ;
+  char *arg2 = (char *) 0 ;
+  size_t arg3 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBFileSpec *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (size_t)jarg3; 
+  result = ((lldb::SBFileSpec const *)arg1)->GetPath(arg2,arg3);
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBFileSpec_ResolvePath(char * jarg1, char * jarg2, unsigned long jarg3) {
+  int jresult ;
+  char *arg1 = (char *) 0 ;
+  char *arg2 = (char *) 0 ;
+  size_t arg3 ;
+  int result;
+  
+  arg1 = (char *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (size_t)jarg3; 
+  result = (int)lldb::SBFileSpec::ResolvePath((char const *)arg1,arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBFileSpec_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBFileSpec *arg1 = (lldb::SBFileSpec *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBFileSpec *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)((lldb::SBFileSpec const *)arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBFileSpecList__SWIG_0() {
+  void * jresult ;
+  lldb::SBFileSpecList *result = 0 ;
+  
+  result = (lldb::SBFileSpecList *)new lldb::SBFileSpecList();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBFileSpecList__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBFileSpecList *arg1 = 0 ;
+  lldb::SBFileSpecList *result = 0 ;
+  
+  arg1 = (lldb::SBFileSpecList *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFileSpecList const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBFileSpecList *)new lldb::SBFileSpecList((lldb::SBFileSpecList const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBFileSpecList(void * jarg1) {
+  lldb::SBFileSpecList *arg1 = (lldb::SBFileSpecList *) 0 ;
+  
+  arg1 = (lldb::SBFileSpecList *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFileSpecList_GetSize(void * jarg1) {
+  void * jresult ;
+  lldb::SBFileSpecList *arg1 = (lldb::SBFileSpecList *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBFileSpecList *)jarg1; 
+  result = ((lldb::SBFileSpecList const *)arg1)->GetSize();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBFileSpecList_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBFileSpecList *arg1 = (lldb::SBFileSpecList *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBFileSpecList *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)((lldb::SBFileSpecList const *)arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBFileSpecList_Append(void * jarg1, void * jarg2) {
+  lldb::SBFileSpecList *arg1 = (lldb::SBFileSpecList *) 0 ;
+  lldb::SBFileSpec *arg2 = 0 ;
+  
+  arg1 = (lldb::SBFileSpecList *)jarg1; 
+  arg2 = (lldb::SBFileSpec *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFileSpec const & type is null", 0);
+    return ;
+  } 
+  (arg1)->Append((lldb::SBFileSpec const &)*arg2);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBFileSpecList_AppendIfUnique(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBFileSpecList *arg1 = (lldb::SBFileSpecList *) 0 ;
+  lldb::SBFileSpec *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBFileSpecList *)jarg1; 
+  arg2 = (lldb::SBFileSpec *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFileSpec const & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->AppendIfUnique((lldb::SBFileSpec const &)*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBFileSpecList_Clear(void * jarg1) {
+  lldb::SBFileSpecList *arg1 = (lldb::SBFileSpecList *) 0 ;
+  
+  arg1 = (lldb::SBFileSpecList *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFileSpecList_FindFileIndex(void * jarg1, void * jarg2, void * jarg3, unsigned int jarg4) {
+  void * jresult ;
+  lldb::SBFileSpecList *arg1 = (lldb::SBFileSpecList *) 0 ;
+  uint32_t arg2 ;
+  lldb::SBFileSpec *arg3 = 0 ;
+  bool arg4 ;
+  uint32_t *argp2 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBFileSpecList *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  arg3 = (lldb::SBFileSpec *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFileSpec const & type is null", 0);
+    return 0;
+  } 
+  arg4 = jarg4 ? true : false; 
+  result = (arg1)->FindFileIndex(arg2,(lldb::SBFileSpec const &)*arg3,arg4);
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFileSpecList_GetFileSpecAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBFileSpecList *arg1 = (lldb::SBFileSpecList *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBFileSpec result;
+  
+  arg1 = (lldb::SBFileSpecList *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = ((lldb::SBFileSpecList const *)arg1)->GetFileSpecAtIndex(arg2);
+  jresult = new lldb::SBFileSpec((const lldb::SBFileSpec &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBFrame__SWIG_0() {
+  void * jresult ;
+  lldb::SBFrame *result = 0 ;
+  
+  result = (lldb::SBFrame *)new lldb::SBFrame();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBFrame__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = 0 ;
+  lldb::SBFrame *result = 0 ;
+  
+  arg1 = (lldb::SBFrame *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFrame const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBFrame *)new lldb::SBFrame((lldb::SBFrame const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBFrame(void * jarg1) {
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBFrame_IsEqual(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  lldb::SBFrame *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  arg2 = (lldb::SBFrame *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFrame const & type is null", 0);
+    return 0;
+  } 
+  result = (bool)((lldb::SBFrame const *)arg1)->IsEqual((lldb::SBFrame const &)*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBFrame_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  result = (bool)((lldb::SBFrame const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_GetFrameID(void * jarg1) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  result = ((lldb::SBFrame const *)arg1)->GetFrameID();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_GetPC(void * jarg1) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  lldb::addr_t result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  result = ((lldb::SBFrame const *)arg1)->GetPC();
+  jresult = new lldb::addr_t((const lldb::addr_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBFrame_SetPC(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  lldb::addr_t arg2 ;
+  lldb::addr_t *argp2 ;
+  bool result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  argp2 = (lldb::addr_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (bool)(arg1)->SetPC(arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_GetSP(void * jarg1) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  lldb::addr_t result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  result = ((lldb::SBFrame const *)arg1)->GetSP();
+  jresult = new lldb::addr_t((const lldb::addr_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_GetFP(void * jarg1) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  lldb::addr_t result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  result = ((lldb::SBFrame const *)arg1)->GetFP();
+  jresult = new lldb::addr_t((const lldb::addr_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_GetPCAddress(void * jarg1) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  lldb::SBAddress result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  result = ((lldb::SBFrame const *)arg1)->GetPCAddress();
+  jresult = new lldb::SBAddress((const lldb::SBAddress &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_GetSymbolContext(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBSymbolContext result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = ((lldb::SBFrame const *)arg1)->GetSymbolContext(arg2);
+  jresult = new lldb::SBSymbolContext((const lldb::SBSymbolContext &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_GetModule(void * jarg1) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  lldb::SBModule result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  result = ((lldb::SBFrame const *)arg1)->GetModule();
+  jresult = new lldb::SBModule((const lldb::SBModule &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_GetCompileUnit(void * jarg1) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  lldb::SBCompileUnit result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  result = ((lldb::SBFrame const *)arg1)->GetCompileUnit();
+  jresult = new lldb::SBCompileUnit((const lldb::SBCompileUnit &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_GetFunction(void * jarg1) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  lldb::SBFunction result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  result = ((lldb::SBFrame const *)arg1)->GetFunction();
+  jresult = new lldb::SBFunction((const lldb::SBFunction &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_GetSymbol(void * jarg1) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  lldb::SBSymbol result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  result = ((lldb::SBFrame const *)arg1)->GetSymbol();
+  jresult = new lldb::SBSymbol((const lldb::SBSymbol &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_GetBlock(void * jarg1) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  lldb::SBBlock result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  result = ((lldb::SBFrame const *)arg1)->GetBlock();
+  jresult = new lldb::SBBlock((const lldb::SBBlock &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBFrame_GetFunctionName(void * jarg1) {
+  char * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  result = (char *)(arg1)->GetFunctionName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBFrame_IsInlined(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  result = (bool)(arg1)->IsInlined();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_EvaluateExpression__SWIG_0(void * jarg1, char * jarg2) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (arg1)->EvaluateExpression((char const *)arg2);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_EvaluateExpression__SWIG_1(void * jarg1, char * jarg2, int jarg3) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::DynamicValueType arg3 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (lldb::DynamicValueType)jarg3; 
+  result = (arg1)->EvaluateExpression((char const *)arg2,arg3);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_EvaluateExpression__SWIG_2(void * jarg1, char * jarg2, int jarg3, unsigned int jarg4) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::DynamicValueType arg3 ;
+  bool arg4 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (lldb::DynamicValueType)jarg3; 
+  arg4 = jarg4 ? true : false; 
+  result = (arg1)->EvaluateExpression((char const *)arg2,arg3,arg4);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_GetFrameBlock(void * jarg1) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  lldb::SBBlock result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  result = ((lldb::SBFrame const *)arg1)->GetFrameBlock();
+  jresult = new lldb::SBBlock((const lldb::SBBlock &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_GetLineEntry(void * jarg1) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  lldb::SBLineEntry result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  result = ((lldb::SBFrame const *)arg1)->GetLineEntry();
+  jresult = new lldb::SBLineEntry((const lldb::SBLineEntry &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_GetThread(void * jarg1) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  lldb::SBThread result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  result = ((lldb::SBFrame const *)arg1)->GetThread();
+  jresult = new lldb::SBThread((const lldb::SBThread &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBFrame_Disassemble(void * jarg1) {
+  char * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  result = (char *)((lldb::SBFrame const *)arg1)->Disassemble();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBFrame_Clear(void * jarg1) {
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_GetVariables__SWIG_0(void * jarg1, unsigned int jarg2, unsigned int jarg3, unsigned int jarg4, unsigned int jarg5) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  bool arg2 ;
+  bool arg3 ;
+  bool arg4 ;
+  bool arg5 ;
+  lldb::SBValueList result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  arg2 = jarg2 ? true : false; 
+  arg3 = jarg3 ? true : false; 
+  arg4 = jarg4 ? true : false; 
+  arg5 = jarg5 ? true : false; 
+  result = (arg1)->GetVariables(arg2,arg3,arg4,arg5);
+  jresult = new lldb::SBValueList((const lldb::SBValueList &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_GetVariables__SWIG_1(void * jarg1, unsigned int jarg2, unsigned int jarg3, unsigned int jarg4, unsigned int jarg5, int jarg6) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  bool arg2 ;
+  bool arg3 ;
+  bool arg4 ;
+  bool arg5 ;
+  lldb::DynamicValueType arg6 ;
+  lldb::SBValueList result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  arg2 = jarg2 ? true : false; 
+  arg3 = jarg3 ? true : false; 
+  arg4 = jarg4 ? true : false; 
+  arg5 = jarg5 ? true : false; 
+  arg6 = (lldb::DynamicValueType)jarg6; 
+  result = (arg1)->GetVariables(arg2,arg3,arg4,arg5,arg6);
+  jresult = new lldb::SBValueList((const lldb::SBValueList &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_GetRegisters(void * jarg1) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  lldb::SBValueList result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  result = (arg1)->GetRegisters();
+  jresult = new lldb::SBValueList((const lldb::SBValueList &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_FindVariable__SWIG_0(void * jarg1, char * jarg2) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (arg1)->FindVariable((char const *)arg2);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_FindVariable__SWIG_1(void * jarg1, char * jarg2, int jarg3) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::DynamicValueType arg3 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (lldb::DynamicValueType)jarg3; 
+  result = (arg1)->FindVariable((char const *)arg2,arg3);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_GetValueForVariablePath__SWIG_0(void * jarg1, char * jarg2) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (arg1)->GetValueForVariablePath((char const *)arg2);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_GetValueForVariablePath__SWIG_1(void * jarg1, char * jarg2, int jarg3) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::DynamicValueType arg3 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (lldb::DynamicValueType)jarg3; 
+  result = (arg1)->GetValueForVariablePath((char const *)arg2,arg3);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_FindValue__SWIG_0(void * jarg1, char * jarg2, int jarg3) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::ValueType arg3 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (lldb::ValueType)jarg3; 
+  result = (arg1)->FindValue((char const *)arg2,arg3);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFrame_FindValue__SWIG_1(void * jarg1, char * jarg2, int jarg3, int jarg4) {
+  void * jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::ValueType arg3 ;
+  lldb::DynamicValueType arg4 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (lldb::ValueType)jarg3; 
+  arg4 = (lldb::DynamicValueType)jarg4; 
+  result = (arg1)->FindValue((char const *)arg2,arg3,arg4);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBFrame_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBFrame *arg1 = (lldb::SBFrame *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBFrame *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBFunction__SWIG_0() {
+  void * jresult ;
+  lldb::SBFunction *result = 0 ;
+  
+  result = (lldb::SBFunction *)new lldb::SBFunction();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBFunction__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBFunction *arg1 = 0 ;
+  lldb::SBFunction *result = 0 ;
+  
+  arg1 = (lldb::SBFunction *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFunction const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBFunction *)new lldb::SBFunction((lldb::SBFunction const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBFunction(void * jarg1) {
+  lldb::SBFunction *arg1 = (lldb::SBFunction *) 0 ;
+  
+  arg1 = (lldb::SBFunction *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBFunction_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBFunction *arg1 = (lldb::SBFunction *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBFunction *)jarg1; 
+  result = (bool)((lldb::SBFunction const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBFunction_GetName(void * jarg1) {
+  char * jresult ;
+  lldb::SBFunction *arg1 = (lldb::SBFunction *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBFunction *)jarg1; 
+  result = (char *)((lldb::SBFunction const *)arg1)->GetName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBFunction_GetMangledName(void * jarg1) {
+  char * jresult ;
+  lldb::SBFunction *arg1 = (lldb::SBFunction *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBFunction *)jarg1; 
+  result = (char *)((lldb::SBFunction const *)arg1)->GetMangledName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFunction_GetInstructions(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBFunction *arg1 = (lldb::SBFunction *) 0 ;
+  lldb::SBTarget arg2 ;
+  lldb::SBTarget *argp2 ;
+  lldb::SBInstructionList result;
+  
+  arg1 = (lldb::SBFunction *)jarg1; 
+  argp2 = (lldb::SBTarget *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTarget", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetInstructions(arg2);
+  jresult = new lldb::SBInstructionList((const lldb::SBInstructionList &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFunction_GetStartAddress(void * jarg1) {
+  void * jresult ;
+  lldb::SBFunction *arg1 = (lldb::SBFunction *) 0 ;
+  lldb::SBAddress result;
+  
+  arg1 = (lldb::SBFunction *)jarg1; 
+  result = (arg1)->GetStartAddress();
+  jresult = new lldb::SBAddress((const lldb::SBAddress &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFunction_GetEndAddress(void * jarg1) {
+  void * jresult ;
+  lldb::SBFunction *arg1 = (lldb::SBFunction *) 0 ;
+  lldb::SBAddress result;
+  
+  arg1 = (lldb::SBFunction *)jarg1; 
+  result = (arg1)->GetEndAddress();
+  jresult = new lldb::SBAddress((const lldb::SBAddress &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFunction_GetPrologueByteSize(void * jarg1) {
+  void * jresult ;
+  lldb::SBFunction *arg1 = (lldb::SBFunction *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBFunction *)jarg1; 
+  result = (arg1)->GetPrologueByteSize();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFunction_GetType(void * jarg1) {
+  void * jresult ;
+  lldb::SBFunction *arg1 = (lldb::SBFunction *) 0 ;
+  lldb::SBType result;
+  
+  arg1 = (lldb::SBFunction *)jarg1; 
+  result = (arg1)->GetType();
+  jresult = new lldb::SBType((const lldb::SBType &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBFunction_GetBlock(void * jarg1) {
+  void * jresult ;
+  lldb::SBFunction *arg1 = (lldb::SBFunction *) 0 ;
+  lldb::SBBlock result;
+  
+  arg1 = (lldb::SBFunction *)jarg1; 
+  result = (arg1)->GetBlock();
+  jresult = new lldb::SBBlock((const lldb::SBBlock &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBFunction_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBFunction *arg1 = (lldb::SBFunction *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBFunction *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBHostOS_GetProgramFileSpec() {
+  void * jresult ;
+  lldb::SBFileSpec result;
+  
+  result = lldb::SBHostOS::GetProgramFileSpec();
+  jresult = new lldb::SBFileSpec((const lldb::SBFileSpec &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBHostOS_ThreadCreated(char * jarg1) {
+  char *arg1 = (char *) 0 ;
+  
+  arg1 = (char *)jarg1; 
+  lldb::SBHostOS::ThreadCreated((char const *)arg1);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBHostOS_ThreadCreate(char * jarg1, void * jarg2, void* jarg3, void * jarg4) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  void *(*arg2)(void *) = (void *(*)(void *)) 0 ;
+  void *arg3 = (void *) 0 ;
+  lldb::SBError *arg4 = (lldb::SBError *) 0 ;
+  lldb::thread_t result;
+  
+  arg1 = (char *)jarg1; 
+  arg2 = (void *(*)(void *))jarg2; 
+  arg3 = (void *)jarg3; /* IntPtr */ 
+  arg4 = (lldb::SBError *)jarg4; 
+  result = lldb::SBHostOS::ThreadCreate((char const *)arg1,arg2,arg3,arg4);
+  jresult = new lldb::thread_t((const lldb::thread_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBHostOS_ThreadCancel(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::thread_t arg1 ;
+  lldb::SBError *arg2 = (lldb::SBError *) 0 ;
+  lldb::thread_t *argp1 ;
+  bool result;
+  
+  argp1 = (lldb::thread_t *)jarg1; 
+  if (!argp1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::thread_t", 0);
+    return 0;
+  }
+  arg1 = *argp1; 
+  arg2 = (lldb::SBError *)jarg2; 
+  result = (bool)lldb::SBHostOS::ThreadCancel(arg1,arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBHostOS_ThreadDetach(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::thread_t arg1 ;
+  lldb::SBError *arg2 = (lldb::SBError *) 0 ;
+  lldb::thread_t *argp1 ;
+  bool result;
+  
+  argp1 = (lldb::thread_t *)jarg1; 
+  if (!argp1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::thread_t", 0);
+    return 0;
+  }
+  arg1 = *argp1; 
+  arg2 = (lldb::SBError *)jarg2; 
+  result = (bool)lldb::SBHostOS::ThreadDetach(arg1,arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBHostOS_ThreadJoin(void * jarg1, void * jarg2, void * jarg3) {
+  unsigned int jresult ;
+  lldb::thread_t arg1 ;
+  void **arg2 = (void **) 0 ;
+  lldb::SBError *arg3 = (lldb::SBError *) 0 ;
+  lldb::thread_t *argp1 ;
+  bool result;
+  
+  argp1 = (lldb::thread_t *)jarg1; 
+  if (!argp1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::thread_t", 0);
+    return 0;
+  }
+  arg1 = *argp1; 
+  arg2 = (void **)jarg2; 
+  arg3 = (lldb::SBError *)jarg3; 
+  result = (bool)lldb::SBHostOS::ThreadJoin(arg1,arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBHostOS() {
+  void * jresult ;
+  lldb::SBHostOS *result = 0 ;
+  
+  result = (lldb::SBHostOS *)new lldb::SBHostOS();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBHostOS(void * jarg1) {
+  lldb::SBHostOS *arg1 = (lldb::SBHostOS *) 0 ;
+  
+  arg1 = (lldb::SBHostOS *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBInputReader__SWIG_0() {
+  void * jresult ;
+  lldb::SBInputReader *result = 0 ;
+  
+  result = (lldb::SBInputReader *)new lldb::SBInputReader();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBInputReader__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBInputReader *arg1 = 0 ;
+  lldb::SBInputReader *result = 0 ;
+  
+  arg1 = (lldb::SBInputReader *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBInputReader const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBInputReader *)new lldb::SBInputReader((lldb::SBInputReader const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBInputReader(void * jarg1) {
+  lldb::SBInputReader *arg1 = (lldb::SBInputReader *) 0 ;
+  
+  arg1 = (lldb::SBInputReader *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBInputReader_Initialize(void * jarg1, void * jarg2, void * jarg3, void* jarg4, int jarg5, char * jarg6, char * jarg7, unsigned int jarg8) {
+  void * jresult ;
+  lldb::SBInputReader *arg1 = (lldb::SBInputReader *) 0 ;
+  lldb::SBDebugger *arg2 = 0 ;
+  lldb::SBInputReader::Callback arg3 = (lldb::SBInputReader::Callback) 0 ;
+  void *arg4 = (void *) 0 ;
+  lldb::InputReaderGranularity arg5 ;
+  char *arg6 = (char *) 0 ;
+  char *arg7 = (char *) 0 ;
+  bool arg8 ;
+  lldb::SBError result;
+  
+  arg1 = (lldb::SBInputReader *)jarg1; 
+  arg2 = (lldb::SBDebugger *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBDebugger & type is null", 0);
+    return 0;
+  } 
+  arg3 = (lldb::SBInputReader::Callback)jarg3; 
+  arg4 = (void *)jarg4; /* IntPtr */ 
+  arg5 = (lldb::InputReaderGranularity)jarg5; 
+  arg6 = (char *)jarg6; 
+  arg7 = (char *)jarg7; 
+  arg8 = jarg8 ? true : false; 
+  result = (arg1)->Initialize(*arg2,arg3,arg4,arg5,(char const *)arg6,(char const *)arg7,arg8);
+  jresult = new lldb::SBError((const lldb::SBError &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBInputReader_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBInputReader *arg1 = (lldb::SBInputReader *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBInputReader *)jarg1; 
+  result = (bool)((lldb::SBInputReader const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBInputReader_IsActive(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBInputReader *arg1 = (lldb::SBInputReader *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBInputReader *)jarg1; 
+  result = (bool)((lldb::SBInputReader const *)arg1)->IsActive();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBInputReader_IsDone(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBInputReader *arg1 = (lldb::SBInputReader *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBInputReader *)jarg1; 
+  result = (bool)((lldb::SBInputReader const *)arg1)->IsDone();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBInputReader_SetIsDone(void * jarg1, unsigned int jarg2) {
+  lldb::SBInputReader *arg1 = (lldb::SBInputReader *) 0 ;
+  bool arg2 ;
+  
+  arg1 = (lldb::SBInputReader *)jarg1; 
+  arg2 = jarg2 ? true : false; 
+  (arg1)->SetIsDone(arg2);
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBInputReader_GetGranularity(void * jarg1) {
+  int jresult ;
+  lldb::SBInputReader *arg1 = (lldb::SBInputReader *) 0 ;
+  lldb::InputReaderGranularity result;
+  
+  arg1 = (lldb::SBInputReader *)jarg1; 
+  result = (lldb::InputReaderGranularity)(arg1)->GetGranularity();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBInstruction__SWIG_0() {
+  void * jresult ;
+  lldb::SBInstruction *result = 0 ;
+  
+  result = (lldb::SBInstruction *)new lldb::SBInstruction();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBInstruction__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBInstruction *arg1 = 0 ;
+  lldb::SBInstruction *result = 0 ;
+  
+  arg1 = (lldb::SBInstruction *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBInstruction const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBInstruction *)new lldb::SBInstruction((lldb::SBInstruction const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBInstruction(void * jarg1) {
+  lldb::SBInstruction *arg1 = (lldb::SBInstruction *) 0 ;
+  
+  arg1 = (lldb::SBInstruction *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBInstruction_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBInstruction *arg1 = (lldb::SBInstruction *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBInstruction *)jarg1; 
+  result = (bool)(arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBInstruction_GetAddress(void * jarg1) {
+  void * jresult ;
+  lldb::SBInstruction *arg1 = (lldb::SBInstruction *) 0 ;
+  lldb::SBAddress result;
+  
+  arg1 = (lldb::SBInstruction *)jarg1; 
+  result = (arg1)->GetAddress();
+  jresult = new lldb::SBAddress((const lldb::SBAddress &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBInstruction_GetAddressClass(void * jarg1) {
+  int jresult ;
+  lldb::SBInstruction *arg1 = (lldb::SBInstruction *) 0 ;
+  lldb::AddressClass result;
+  
+  arg1 = (lldb::SBInstruction *)jarg1; 
+  result = (lldb::AddressClass)(arg1)->GetAddressClass();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBInstruction_GetMnemonic(void * jarg1, void * jarg2) {
+  char * jresult ;
+  lldb::SBInstruction *arg1 = (lldb::SBInstruction *) 0 ;
+  lldb::SBTarget arg2 ;
+  lldb::SBTarget *argp2 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBInstruction *)jarg1; 
+  argp2 = (lldb::SBTarget *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTarget", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (char *)(arg1)->GetMnemonic(arg2);
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBInstruction_GetOperands(void * jarg1, void * jarg2) {
+  char * jresult ;
+  lldb::SBInstruction *arg1 = (lldb::SBInstruction *) 0 ;
+  lldb::SBTarget arg2 ;
+  lldb::SBTarget *argp2 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBInstruction *)jarg1; 
+  argp2 = (lldb::SBTarget *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTarget", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (char *)(arg1)->GetOperands(arg2);
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBInstruction_GetComment(void * jarg1, void * jarg2) {
+  char * jresult ;
+  lldb::SBInstruction *arg1 = (lldb::SBInstruction *) 0 ;
+  lldb::SBTarget arg2 ;
+  lldb::SBTarget *argp2 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBInstruction *)jarg1; 
+  argp2 = (lldb::SBTarget *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTarget", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (char *)(arg1)->GetComment(arg2);
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBInstruction_GetData(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBInstruction *arg1 = (lldb::SBInstruction *) 0 ;
+  lldb::SBTarget arg2 ;
+  lldb::SBTarget *argp2 ;
+  lldb::SBData result;
+  
+  arg1 = (lldb::SBInstruction *)jarg1; 
+  argp2 = (lldb::SBTarget *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTarget", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetData(arg2);
+  jresult = new lldb::SBData((const lldb::SBData &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBInstruction_GetByteSize(void * jarg1) {
+  unsigned long jresult ;
+  lldb::SBInstruction *arg1 = (lldb::SBInstruction *) 0 ;
+  size_t result;
+  
+  arg1 = (lldb::SBInstruction *)jarg1; 
+  result = (arg1)->GetByteSize();
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBInstruction_DoesBranch(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBInstruction *arg1 = (lldb::SBInstruction *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBInstruction *)jarg1; 
+  result = (bool)(arg1)->DoesBranch();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBInstruction_Print(void * jarg1, void * jarg2) {
+  lldb::SBInstruction *arg1 = (lldb::SBInstruction *) 0 ;
+  FILE *arg2 = (FILE *) 0 ;
+  
+  arg1 = (lldb::SBInstruction *)jarg1; 
+  arg2 = (FILE *)jarg2; 
+  (arg1)->Print(arg2);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBInstruction_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBInstruction *arg1 = (lldb::SBInstruction *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBInstruction *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBInstruction_EmulateWithFrame(void * jarg1, void * jarg2, void * jarg3) {
+  unsigned int jresult ;
+  lldb::SBInstruction *arg1 = (lldb::SBInstruction *) 0 ;
+  lldb::SBFrame *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  bool result;
+  
+  arg1 = (lldb::SBInstruction *)jarg1; 
+  arg2 = (lldb::SBFrame *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFrame & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (bool)(arg1)->EmulateWithFrame(*arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBInstruction_DumpEmulation(void * jarg1, char * jarg2) {
+  unsigned int jresult ;
+  lldb::SBInstruction *arg1 = (lldb::SBInstruction *) 0 ;
+  char *arg2 = (char *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBInstruction *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (bool)(arg1)->DumpEmulation((char const *)arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBInstruction_TestEmulation(void * jarg1, void * jarg2, char * jarg3) {
+  unsigned int jresult ;
+  lldb::SBInstruction *arg1 = (lldb::SBInstruction *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  char *arg3 = (char *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBInstruction *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  arg3 = (char *)jarg3; 
+  result = (bool)(arg1)->TestEmulation(*arg2,(char const *)arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBInstructionList__SWIG_0() {
+  void * jresult ;
+  lldb::SBInstructionList *result = 0 ;
+  
+  result = (lldb::SBInstructionList *)new lldb::SBInstructionList();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBInstructionList__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBInstructionList *arg1 = 0 ;
+  lldb::SBInstructionList *result = 0 ;
+  
+  arg1 = (lldb::SBInstructionList *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBInstructionList const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBInstructionList *)new lldb::SBInstructionList((lldb::SBInstructionList const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBInstructionList(void * jarg1) {
+  lldb::SBInstructionList *arg1 = (lldb::SBInstructionList *) 0 ;
+  
+  arg1 = (lldb::SBInstructionList *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBInstructionList_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBInstructionList *arg1 = (lldb::SBInstructionList *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBInstructionList *)jarg1; 
+  result = (bool)((lldb::SBInstructionList const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBInstructionList_GetSize(void * jarg1) {
+  unsigned long jresult ;
+  lldb::SBInstructionList *arg1 = (lldb::SBInstructionList *) 0 ;
+  size_t result;
+  
+  arg1 = (lldb::SBInstructionList *)jarg1; 
+  result = (arg1)->GetSize();
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBInstructionList_GetInstructionAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBInstructionList *arg1 = (lldb::SBInstructionList *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBInstruction result;
+  
+  arg1 = (lldb::SBInstructionList *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetInstructionAtIndex(arg2);
+  jresult = new lldb::SBInstruction((const lldb::SBInstruction &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBInstructionList_Clear(void * jarg1) {
+  lldb::SBInstructionList *arg1 = (lldb::SBInstructionList *) 0 ;
+  
+  arg1 = (lldb::SBInstructionList *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBInstructionList_AppendInstruction(void * jarg1, void * jarg2) {
+  lldb::SBInstructionList *arg1 = (lldb::SBInstructionList *) 0 ;
+  lldb::SBInstruction arg2 ;
+  lldb::SBInstruction *argp2 ;
+  
+  arg1 = (lldb::SBInstructionList *)jarg1; 
+  argp2 = (lldb::SBInstruction *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBInstruction", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->AppendInstruction(arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBInstructionList_Print(void * jarg1, void * jarg2) {
+  lldb::SBInstructionList *arg1 = (lldb::SBInstructionList *) 0 ;
+  FILE *arg2 = (FILE *) 0 ;
+  
+  arg1 = (lldb::SBInstructionList *)jarg1; 
+  arg2 = (FILE *)jarg2; 
+  (arg1)->Print(arg2);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBInstructionList_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBInstructionList *arg1 = (lldb::SBInstructionList *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBInstructionList *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBInstructionList_DumpEmulationForAllInstructions(void * jarg1, char * jarg2) {
+  unsigned int jresult ;
+  lldb::SBInstructionList *arg1 = (lldb::SBInstructionList *) 0 ;
+  char *arg2 = (char *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBInstructionList *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (bool)(arg1)->DumpEmulationForAllInstructions((char const *)arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBLineEntry__SWIG_0() {
+  void * jresult ;
+  lldb::SBLineEntry *result = 0 ;
+  
+  result = (lldb::SBLineEntry *)new lldb::SBLineEntry();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBLineEntry__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBLineEntry *arg1 = 0 ;
+  lldb::SBLineEntry *result = 0 ;
+  
+  arg1 = (lldb::SBLineEntry *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBLineEntry const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBLineEntry *)new lldb::SBLineEntry((lldb::SBLineEntry const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBLineEntry(void * jarg1) {
+  lldb::SBLineEntry *arg1 = (lldb::SBLineEntry *) 0 ;
+  
+  arg1 = (lldb::SBLineEntry *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBLineEntry_GetStartAddress(void * jarg1) {
+  void * jresult ;
+  lldb::SBLineEntry *arg1 = (lldb::SBLineEntry *) 0 ;
+  lldb::SBAddress result;
+  
+  arg1 = (lldb::SBLineEntry *)jarg1; 
+  result = ((lldb::SBLineEntry const *)arg1)->GetStartAddress();
+  jresult = new lldb::SBAddress((const lldb::SBAddress &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBLineEntry_GetEndAddress(void * jarg1) {
+  void * jresult ;
+  lldb::SBLineEntry *arg1 = (lldb::SBLineEntry *) 0 ;
+  lldb::SBAddress result;
+  
+  arg1 = (lldb::SBLineEntry *)jarg1; 
+  result = ((lldb::SBLineEntry const *)arg1)->GetEndAddress();
+  jresult = new lldb::SBAddress((const lldb::SBAddress &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBLineEntry_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBLineEntry *arg1 = (lldb::SBLineEntry *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBLineEntry *)jarg1; 
+  result = (bool)((lldb::SBLineEntry const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBLineEntry_GetFileSpec(void * jarg1) {
+  void * jresult ;
+  lldb::SBLineEntry *arg1 = (lldb::SBLineEntry *) 0 ;
+  lldb::SBFileSpec result;
+  
+  arg1 = (lldb::SBLineEntry *)jarg1; 
+  result = ((lldb::SBLineEntry const *)arg1)->GetFileSpec();
+  jresult = new lldb::SBFileSpec((const lldb::SBFileSpec &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBLineEntry_GetLine(void * jarg1) {
+  void * jresult ;
+  lldb::SBLineEntry *arg1 = (lldb::SBLineEntry *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBLineEntry *)jarg1; 
+  result = ((lldb::SBLineEntry const *)arg1)->GetLine();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBLineEntry_GetColumn(void * jarg1) {
+  void * jresult ;
+  lldb::SBLineEntry *arg1 = (lldb::SBLineEntry *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBLineEntry *)jarg1; 
+  result = ((lldb::SBLineEntry const *)arg1)->GetColumn();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBLineEntry_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBLineEntry *arg1 = (lldb::SBLineEntry *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBLineEntry *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBLineEntry_SetFileSpec(void * jarg1, void * jarg2) {
+  lldb::SBLineEntry *arg1 = (lldb::SBLineEntry *) 0 ;
+  lldb::SBFileSpec arg2 ;
+  lldb::SBFileSpec *argp2 ;
+  
+  arg1 = (lldb::SBLineEntry *)jarg1; 
+  argp2 = (lldb::SBFileSpec *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBFileSpec", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetFileSpec(arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBLineEntry_SetLine(void * jarg1, void * jarg2) {
+  lldb::SBLineEntry *arg1 = (lldb::SBLineEntry *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBLineEntry *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetLine(arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBLineEntry_SetColumn(void * jarg1, void * jarg2) {
+  lldb::SBLineEntry *arg1 = (lldb::SBLineEntry *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBLineEntry *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetColumn(arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBListener__SWIG_0() {
+  void * jresult ;
+  lldb::SBListener *result = 0 ;
+  
+  result = (lldb::SBListener *)new lldb::SBListener();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBListener__SWIG_1(char * jarg1) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  lldb::SBListener *result = 0 ;
+  
+  arg1 = (char *)jarg1; 
+  result = (lldb::SBListener *)new lldb::SBListener((char const *)arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBListener__SWIG_2(void * jarg1) {
+  void * jresult ;
+  lldb::SBListener *arg1 = 0 ;
+  lldb::SBListener *result = 0 ;
+  
+  arg1 = (lldb::SBListener *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBListener const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBListener *)new lldb::SBListener((lldb::SBListener const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBListener(void * jarg1) {
+  lldb::SBListener *arg1 = (lldb::SBListener *) 0 ;
+  
+  arg1 = (lldb::SBListener *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBListener_AddEvent(void * jarg1, void * jarg2) {
+  lldb::SBListener *arg1 = (lldb::SBListener *) 0 ;
+  lldb::SBEvent *arg2 = 0 ;
+  
+  arg1 = (lldb::SBListener *)jarg1; 
+  arg2 = (lldb::SBEvent *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent const & type is null", 0);
+    return ;
+  } 
+  (arg1)->AddEvent((lldb::SBEvent const &)*arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBListener_Clear(void * jarg1) {
+  lldb::SBListener *arg1 = (lldb::SBListener *) 0 ;
+  
+  arg1 = (lldb::SBListener *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBListener_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBListener *arg1 = (lldb::SBListener *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBListener *)jarg1; 
+  result = (bool)((lldb::SBListener const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBListener_StartListeningForEventClass(void * jarg1, void * jarg2, char * jarg3, void * jarg4) {
+  void * jresult ;
+  lldb::SBListener *arg1 = (lldb::SBListener *) 0 ;
+  lldb::SBDebugger *arg2 = 0 ;
+  char *arg3 = (char *) 0 ;
+  uint32_t arg4 ;
+  uint32_t *argp4 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBListener *)jarg1; 
+  arg2 = (lldb::SBDebugger *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBDebugger & type is null", 0);
+    return 0;
+  } 
+  arg3 = (char *)jarg3; 
+  argp4 = (uint32_t *)jarg4; 
+  if (!argp4) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg4 = *argp4; 
+  result = (arg1)->StartListeningForEventClass(*arg2,(char const *)arg3,arg4);
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBListener_StopListeningForEventClass(void * jarg1, void * jarg2, char * jarg3, void * jarg4) {
+  void * jresult ;
+  lldb::SBListener *arg1 = (lldb::SBListener *) 0 ;
+  lldb::SBDebugger *arg2 = 0 ;
+  char *arg3 = (char *) 0 ;
+  uint32_t arg4 ;
+  uint32_t *argp4 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBListener *)jarg1; 
+  arg2 = (lldb::SBDebugger *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBDebugger & type is null", 0);
+    return 0;
+  } 
+  arg3 = (char *)jarg3; 
+  argp4 = (uint32_t *)jarg4; 
+  if (!argp4) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg4 = *argp4; 
+  result = (arg1)->StopListeningForEventClass(*arg2,(char const *)arg3,arg4);
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBListener_StartListeningForEvents(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBListener *arg1 = (lldb::SBListener *) 0 ;
+  lldb::SBBroadcaster *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBListener *)jarg1; 
+  arg2 = (lldb::SBBroadcaster *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBBroadcaster const & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->StartListeningForEvents((lldb::SBBroadcaster const &)*arg2,arg3);
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBListener_StopListeningForEvents(void * jarg1, void * jarg2, void * jarg3) {
+  unsigned int jresult ;
+  lldb::SBListener *arg1 = (lldb::SBListener *) 0 ;
+  lldb::SBBroadcaster *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  bool result;
+  
+  arg1 = (lldb::SBListener *)jarg1; 
+  arg2 = (lldb::SBBroadcaster *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBBroadcaster const & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (bool)(arg1)->StopListeningForEvents((lldb::SBBroadcaster const &)*arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBListener_WaitForEvent(void * jarg1, void * jarg2, void * jarg3) {
+  unsigned int jresult ;
+  lldb::SBListener *arg1 = (lldb::SBListener *) 0 ;
+  uint32_t arg2 ;
+  lldb::SBEvent *arg3 = 0 ;
+  uint32_t *argp2 ;
+  bool result;
+  
+  arg1 = (lldb::SBListener *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  arg3 = (lldb::SBEvent *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->WaitForEvent(arg2,*arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBListener_WaitForEventForBroadcaster(void * jarg1, void * jarg2, void * jarg3, void * jarg4) {
+  unsigned int jresult ;
+  lldb::SBListener *arg1 = (lldb::SBListener *) 0 ;
+  uint32_t arg2 ;
+  lldb::SBBroadcaster *arg3 = 0 ;
+  lldb::SBEvent *arg4 = 0 ;
+  uint32_t *argp2 ;
+  bool result;
+  
+  arg1 = (lldb::SBListener *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  arg3 = (lldb::SBBroadcaster *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBBroadcaster const & type is null", 0);
+    return 0;
+  } 
+  arg4 = (lldb::SBEvent *)jarg4;
+  if (!arg4) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->WaitForEventForBroadcaster(arg2,(lldb::SBBroadcaster const &)*arg3,*arg4);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBListener_WaitForEventForBroadcasterWithType(void * jarg1, void * jarg2, void * jarg3, void * jarg4, void * jarg5) {
+  unsigned int jresult ;
+  lldb::SBListener *arg1 = (lldb::SBListener *) 0 ;
+  uint32_t arg2 ;
+  lldb::SBBroadcaster *arg3 = 0 ;
+  uint32_t arg4 ;
+  lldb::SBEvent *arg5 = 0 ;
+  uint32_t *argp2 ;
+  uint32_t *argp4 ;
+  bool result;
+  
+  arg1 = (lldb::SBListener *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  arg3 = (lldb::SBBroadcaster *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBBroadcaster const & type is null", 0);
+    return 0;
+  } 
+  argp4 = (uint32_t *)jarg4; 
+  if (!argp4) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg4 = *argp4; 
+  arg5 = (lldb::SBEvent *)jarg5;
+  if (!arg5) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->WaitForEventForBroadcasterWithType(arg2,(lldb::SBBroadcaster const &)*arg3,arg4,*arg5);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBListener_PeekAtNextEvent(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBListener *arg1 = (lldb::SBListener *) 0 ;
+  lldb::SBEvent *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBListener *)jarg1; 
+  arg2 = (lldb::SBEvent *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->PeekAtNextEvent(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBListener_PeekAtNextEventForBroadcaster(void * jarg1, void * jarg2, void * jarg3) {
+  unsigned int jresult ;
+  lldb::SBListener *arg1 = (lldb::SBListener *) 0 ;
+  lldb::SBBroadcaster *arg2 = 0 ;
+  lldb::SBEvent *arg3 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBListener *)jarg1; 
+  arg2 = (lldb::SBBroadcaster *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBBroadcaster const & type is null", 0);
+    return 0;
+  } 
+  arg3 = (lldb::SBEvent *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->PeekAtNextEventForBroadcaster((lldb::SBBroadcaster const &)*arg2,*arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBListener_PeekAtNextEventForBroadcasterWithType(void * jarg1, void * jarg2, void * jarg3, void * jarg4) {
+  unsigned int jresult ;
+  lldb::SBListener *arg1 = (lldb::SBListener *) 0 ;
+  lldb::SBBroadcaster *arg2 = 0 ;
+  uint32_t arg3 ;
+  lldb::SBEvent *arg4 = 0 ;
+  uint32_t *argp3 ;
+  bool result;
+  
+  arg1 = (lldb::SBListener *)jarg1; 
+  arg2 = (lldb::SBBroadcaster *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBBroadcaster const & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  arg4 = (lldb::SBEvent *)jarg4;
+  if (!arg4) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->PeekAtNextEventForBroadcasterWithType((lldb::SBBroadcaster const &)*arg2,arg3,*arg4);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBListener_GetNextEvent(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBListener *arg1 = (lldb::SBListener *) 0 ;
+  lldb::SBEvent *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBListener *)jarg1; 
+  arg2 = (lldb::SBEvent *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetNextEvent(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBListener_GetNextEventForBroadcaster(void * jarg1, void * jarg2, void * jarg3) {
+  unsigned int jresult ;
+  lldb::SBListener *arg1 = (lldb::SBListener *) 0 ;
+  lldb::SBBroadcaster *arg2 = 0 ;
+  lldb::SBEvent *arg3 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBListener *)jarg1; 
+  arg2 = (lldb::SBBroadcaster *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBBroadcaster const & type is null", 0);
+    return 0;
+  } 
+  arg3 = (lldb::SBEvent *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetNextEventForBroadcaster((lldb::SBBroadcaster const &)*arg2,*arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBListener_GetNextEventForBroadcasterWithType(void * jarg1, void * jarg2, void * jarg3, void * jarg4) {
+  unsigned int jresult ;
+  lldb::SBListener *arg1 = (lldb::SBListener *) 0 ;
+  lldb::SBBroadcaster *arg2 = 0 ;
+  uint32_t arg3 ;
+  lldb::SBEvent *arg4 = 0 ;
+  uint32_t *argp3 ;
+  bool result;
+  
+  arg1 = (lldb::SBListener *)jarg1; 
+  arg2 = (lldb::SBBroadcaster *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBBroadcaster const & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  arg4 = (lldb::SBEvent *)jarg4;
+  if (!arg4) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetNextEventForBroadcasterWithType((lldb::SBBroadcaster const &)*arg2,arg3,*arg4);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBListener_HandleBroadcastEvent(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBListener *arg1 = (lldb::SBListener *) 0 ;
+  lldb::SBEvent *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBListener *)jarg1; 
+  arg2 = (lldb::SBEvent *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent const & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->HandleBroadcastEvent((lldb::SBEvent const &)*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBModule__SWIG_0() {
+  void * jresult ;
+  lldb::SBModule *result = 0 ;
+  
+  result = (lldb::SBModule *)new lldb::SBModule();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBModule__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBModule *arg1 = 0 ;
+  lldb::SBModule *result = 0 ;
+  
+  arg1 = (lldb::SBModule *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBModule const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBModule *)new lldb::SBModule((lldb::SBModule const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBModule__SWIG_2(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = 0 ;
+  lldb::addr_t arg2 ;
+  lldb::addr_t *argp2 ;
+  lldb::SBModule *result = 0 ;
+  
+  arg1 = (lldb::SBProcess *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBProcess & type is null", 0);
+    return 0;
+  } 
+  argp2 = (lldb::addr_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (lldb::SBModule *)new lldb::SBModule(*arg1,arg2);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBModule(void * jarg1) {
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBModule_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  result = (bool)((lldb::SBModule const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBModule_Clear(void * jarg1) {
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBModule_GetFileSpec(void * jarg1) {
+  void * jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  lldb::SBFileSpec result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  result = ((lldb::SBModule const *)arg1)->GetFileSpec();
+  jresult = new lldb::SBFileSpec((const lldb::SBFileSpec &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBModule_GetPlatformFileSpec(void * jarg1) {
+  void * jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  lldb::SBFileSpec result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  result = ((lldb::SBModule const *)arg1)->GetPlatformFileSpec();
+  jresult = new lldb::SBFileSpec((const lldb::SBFileSpec &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBModule_SetPlatformFileSpec(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  lldb::SBFileSpec *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  arg2 = (lldb::SBFileSpec *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFileSpec const & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->SetPlatformFileSpec((lldb::SBFileSpec const &)*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBModule_GetUUIDString(void * jarg1) {
+  char * jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  result = (char *)((lldb::SBModule const *)arg1)->GetUUIDString();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBModule_FindSection(void * jarg1, char * jarg2) {
+  void * jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBSection result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (arg1)->FindSection((char const *)arg2);
+  jresult = new lldb::SBSection((const lldb::SBSection &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBModule_ResolveFileAddress(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  lldb::addr_t arg2 ;
+  lldb::addr_t *argp2 ;
+  lldb::SBAddress result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  argp2 = (lldb::addr_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->ResolveFileAddress(arg2);
+  jresult = new lldb::SBAddress((const lldb::SBAddress &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBModule_ResolveSymbolContextForAddress(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  lldb::SBAddress *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  lldb::SBSymbolContext result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  arg2 = (lldb::SBAddress *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBAddress const & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->ResolveSymbolContextForAddress((lldb::SBAddress const &)*arg2,arg3);
+  jresult = new lldb::SBSymbolContext((const lldb::SBSymbolContext &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBModule_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBModule_GetNumCompileUnits(void * jarg1) {
+  void * jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  result = (arg1)->GetNumCompileUnits();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBModule_GetCompileUnitAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBCompileUnit result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetCompileUnitAtIndex(arg2);
+  jresult = new lldb::SBCompileUnit((const lldb::SBCompileUnit &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBModule_GetNumSymbols(void * jarg1) {
+  unsigned long jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  size_t result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  result = (arg1)->GetNumSymbols();
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBModule_GetSymbolAtIndex(void * jarg1, unsigned long jarg2) {
+  void * jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  size_t arg2 ;
+  lldb::SBSymbol result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  arg2 = (size_t)jarg2; 
+  result = (arg1)->GetSymbolAtIndex(arg2);
+  jresult = new lldb::SBSymbol((const lldb::SBSymbol &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBModule_GetNumSections(void * jarg1) {
+  unsigned long jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  size_t result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  result = (arg1)->GetNumSections();
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBModule_GetSectionAtIndex(void * jarg1, unsigned long jarg2) {
+  void * jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  size_t arg2 ;
+  lldb::SBSection result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  arg2 = (size_t)jarg2; 
+  result = (arg1)->GetSectionAtIndex(arg2);
+  jresult = new lldb::SBSection((const lldb::SBSection &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBModule_FindFunctions__SWIG_0(void * jarg1, char * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  char *arg2 = (char *) 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  lldb::SBSymbolContextList result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  arg2 = (char *)jarg2; 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->FindFunctions((char const *)arg2,arg3);
+  jresult = new lldb::SBSymbolContextList((const lldb::SBSymbolContextList &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBModule_FindFunctions__SWIG_1(void * jarg1, char * jarg2) {
+  void * jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBSymbolContextList result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (arg1)->FindFunctions((char const *)arg2);
+  jresult = new lldb::SBSymbolContextList((const lldb::SBSymbolContextList &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBModule_FindFirstType(void * jarg1, char * jarg2) {
+  void * jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBType result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (arg1)->FindFirstType((char const *)arg2);
+  jresult = new lldb::SBType((const lldb::SBType &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBModule_FindTypes(void * jarg1, char * jarg2) {
+  void * jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBTypeList result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (arg1)->FindTypes((char const *)arg2);
+  jresult = new lldb::SBTypeList((const lldb::SBTypeList &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBModule_FindGlobalVariables(void * jarg1, void * jarg2, char * jarg3, void * jarg4) {
+  void * jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  lldb::SBTarget *arg2 = 0 ;
+  char *arg3 = (char *) 0 ;
+  uint32_t arg4 ;
+  uint32_t *argp4 ;
+  lldb::SBValueList result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  arg2 = (lldb::SBTarget *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBTarget & type is null", 0);
+    return 0;
+  } 
+  arg3 = (char *)jarg3; 
+  argp4 = (uint32_t *)jarg4; 
+  if (!argp4) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg4 = *argp4; 
+  result = (arg1)->FindGlobalVariables(*arg2,(char const *)arg3,arg4);
+  jresult = new lldb::SBValueList((const lldb::SBValueList &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBModule_GetByteOrder(void * jarg1) {
+  int jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  lldb::ByteOrder result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  result = (lldb::ByteOrder)(arg1)->GetByteOrder();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBModule_GetAddressByteSize(void * jarg1) {
+  void * jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  result = (arg1)->GetAddressByteSize();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBModule_GetTriple(void * jarg1) {
+  char * jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  result = (char *)(arg1)->GetTriple();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBModule_GetVersion(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBModule *arg1 = (lldb::SBModule *) 0 ;
+  uint32_t *arg2 = (uint32_t *) 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBModule *)jarg1; 
+  arg2 = (uint32_t *)jarg2; 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->GetVersion(arg2,arg3);
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBProcess_eBroadcastBitStateChanged_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)lldb::SBProcess::eBroadcastBitStateChanged;
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBProcess_eBroadcastBitInterrupt_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)lldb::SBProcess::eBroadcastBitInterrupt;
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBProcess_eBroadcastBitSTDOUT_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)lldb::SBProcess::eBroadcastBitSTDOUT;
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBProcess_eBroadcastBitSTDERR_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)lldb::SBProcess::eBroadcastBitSTDERR;
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBProcess__SWIG_0() {
+  void * jresult ;
+  lldb::SBProcess *result = 0 ;
+  
+  result = (lldb::SBProcess *)new lldb::SBProcess();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBProcess__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = 0 ;
+  lldb::SBProcess *result = 0 ;
+  
+  arg1 = (lldb::SBProcess *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBProcess const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBProcess *)new lldb::SBProcess((lldb::SBProcess const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBProcess(void * jarg1) {
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBProcess_GetBroadcasterClassName() {
+  char * jresult ;
+  char *result = 0 ;
+  
+  result = (char *)lldb::SBProcess::GetBroadcasterClassName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBProcess_Clear(void * jarg1) {
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBProcess_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  result = (bool)((lldb::SBProcess const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBProcess_GetTarget(void * jarg1) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::SBTarget result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  result = ((lldb::SBProcess const *)arg1)->GetTarget();
+  jresult = new lldb::SBTarget((const lldb::SBTarget &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBProcess_GetByteOrder(void * jarg1) {
+  int jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::ByteOrder result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  result = (lldb::ByteOrder)((lldb::SBProcess const *)arg1)->GetByteOrder();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBProcess_PutSTDIN(void * jarg1, char * jarg2, unsigned long jarg3) {
+  unsigned long jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  char *arg2 = (char *) 0 ;
+  size_t arg3 ;
+  size_t result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (size_t)jarg3; 
+  result = (arg1)->PutSTDIN((char const *)arg2,arg3);
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBProcess_GetSTDOUT(void * jarg1, char * jarg2, unsigned long jarg3) {
+  unsigned long jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  char *arg2 = (char *) 0 ;
+  size_t arg3 ;
+  size_t result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (size_t)jarg3; 
+  result = ((lldb::SBProcess const *)arg1)->GetSTDOUT(arg2,arg3);
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBProcess_GetSTDERR(void * jarg1, char * jarg2, unsigned long jarg3) {
+  unsigned long jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  char *arg2 = (char *) 0 ;
+  size_t arg3 ;
+  size_t result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (size_t)jarg3; 
+  result = ((lldb::SBProcess const *)arg1)->GetSTDERR(arg2,arg3);
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBProcess_ReportEventState(void * jarg1, void * jarg2, void * jarg3) {
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::SBEvent *arg2 = 0 ;
+  FILE *arg3 = (FILE *) 0 ;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  arg2 = (lldb::SBEvent *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent const & type is null", 0);
+    return ;
+  } 
+  arg3 = (FILE *)jarg3; 
+  ((lldb::SBProcess const *)arg1)->ReportEventState((lldb::SBEvent const &)*arg2,arg3);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBProcess_AppendEventStateReport(void * jarg1, void * jarg2, void * jarg3) {
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::SBEvent *arg2 = 0 ;
+  lldb::SBCommandReturnObject *arg3 = 0 ;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  arg2 = (lldb::SBEvent *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent const & type is null", 0);
+    return ;
+  } 
+  arg3 = (lldb::SBCommandReturnObject *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBCommandReturnObject & type is null", 0);
+    return ;
+  } 
+  (arg1)->AppendEventStateReport((lldb::SBEvent const &)*arg2,*arg3);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBProcess_RemoteAttachToProcessWithID(void * jarg1, void * jarg2, void * jarg3) {
+  unsigned int jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::pid_t arg2 ;
+  lldb::SBError *arg3 = 0 ;
+  lldb::pid_t *argp2 ;
+  bool result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  argp2 = (lldb::pid_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::pid_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  arg3 = (lldb::SBError *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->RemoteAttachToProcessWithID(arg2,*arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBProcess_RemoteLaunch(void * jarg1, void * jarg2, void * jarg3, char * jarg4, char * jarg5, char * jarg6, char * jarg7, void * jarg8, unsigned int jarg9, void * jarg10) {
+  unsigned int jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  char **arg2 = (char **) 0 ;
+  char **arg3 = (char **) 0 ;
+  char *arg4 = (char *) 0 ;
+  char *arg5 = (char *) 0 ;
+  char *arg6 = (char *) 0 ;
+  char *arg7 = (char *) 0 ;
+  uint32_t arg8 ;
+  bool arg9 ;
+  lldb::SBError *arg10 = 0 ;
+  uint32_t *argp8 ;
+  bool result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  arg2 = (char **)jarg2; 
+  arg3 = (char **)jarg3; 
+  arg4 = (char *)jarg4; 
+  arg5 = (char *)jarg5; 
+  arg6 = (char *)jarg6; 
+  arg7 = (char *)jarg7; 
+  argp8 = (uint32_t *)jarg8; 
+  if (!argp8) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg8 = *argp8; 
+  arg9 = jarg9 ? true : false; 
+  arg10 = (lldb::SBError *)jarg10;
+  if (!arg10) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->RemoteLaunch((char const **)arg2,(char const **)arg3,(char const *)arg4,(char const *)arg5,(char const *)arg6,(char const *)arg7,arg8,arg9,*arg10);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBProcess_GetNumThreads(void * jarg1) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  result = (arg1)->GetNumThreads();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBProcess_GetThreadAtIndex(void * jarg1, unsigned long jarg2) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  size_t arg2 ;
+  lldb::SBThread result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  arg2 = (size_t)jarg2; 
+  result = (arg1)->GetThreadAtIndex(arg2);
+  jresult = new lldb::SBThread((const lldb::SBThread &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBProcess_GetThreadByID(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::tid_t arg2 ;
+  lldb::tid_t *argp2 ;
+  lldb::SBThread result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  argp2 = (lldb::tid_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::tid_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetThreadByID(arg2);
+  jresult = new lldb::SBThread((const lldb::SBThread &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBProcess_GetThreadByIndexID(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBThread result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetThreadByIndexID(arg2);
+  jresult = new lldb::SBThread((const lldb::SBThread &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBProcess_GetSelectedThread(void * jarg1) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::SBThread result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  result = ((lldb::SBProcess const *)arg1)->GetSelectedThread();
+  jresult = new lldb::SBThread((const lldb::SBThread &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBProcess_SetSelectedThread(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::SBThread *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  arg2 = (lldb::SBThread *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBThread const & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->SetSelectedThread((lldb::SBThread const &)*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBProcess_SetSelectedThreadByID(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  bool result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (bool)(arg1)->SetSelectedThreadByID(arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBProcess_SetSelectedThreadByIndexID(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  bool result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (bool)(arg1)->SetSelectedThreadByIndexID(arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBProcess_GetState(void * jarg1) {
+  int jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::StateType result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  result = (lldb::StateType)(arg1)->GetState();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBProcess_GetExitStatus(void * jarg1) {
+  int jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  int result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  result = (int)(arg1)->GetExitStatus();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBProcess_GetExitDescription(void * jarg1) {
+  char * jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  result = (char *)(arg1)->GetExitDescription();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBProcess_GetProcessID(void * jarg1) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::pid_t result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  result = (arg1)->GetProcessID();
+  jresult = new lldb::pid_t((const lldb::pid_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBProcess_GetAddressByteSize(void * jarg1) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  result = ((lldb::SBProcess const *)arg1)->GetAddressByteSize();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBProcess_Destroy(void * jarg1) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::SBError result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  result = (arg1)->Destroy();
+  jresult = new lldb::SBError((const lldb::SBError &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBProcess_Continue(void * jarg1) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::SBError result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  result = (arg1)->Continue();
+  jresult = new lldb::SBError((const lldb::SBError &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBProcess_Stop(void * jarg1) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::SBError result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  result = (arg1)->Stop();
+  jresult = new lldb::SBError((const lldb::SBError &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBProcess_Kill(void * jarg1) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::SBError result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  result = (arg1)->Kill();
+  jresult = new lldb::SBError((const lldb::SBError &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBProcess_Detach(void * jarg1) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::SBError result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  result = (arg1)->Detach();
+  jresult = new lldb::SBError((const lldb::SBError &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBProcess_Signal(void * jarg1, int jarg2) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  int arg2 ;
+  lldb::SBError result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  arg2 = (int)jarg2; 
+  result = (arg1)->Signal(arg2);
+  jresult = new lldb::SBError((const lldb::SBError &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBProcess_SendAsyncInterrupt(void * jarg1) {
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  (arg1)->SendAsyncInterrupt();
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBProcess_ReadMemory(void * jarg1, void * jarg2, void* jarg3, unsigned long jarg4, void * jarg5) {
+  unsigned long jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::addr_t arg2 ;
+  void *arg3 = (void *) 0 ;
+  size_t arg4 ;
+  lldb::SBError *arg5 = 0 ;
+  lldb::addr_t *argp2 ;
+  size_t result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  argp2 = (lldb::addr_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  arg3 = (void *)jarg3; /* IntPtr */ 
+  arg4 = (size_t)jarg4; 
+  arg5 = (lldb::SBError *)jarg5;
+  if (!arg5) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->ReadMemory(arg2,arg3,arg4,*arg5);
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBProcess_WriteMemory(void * jarg1, void * jarg2, void* jarg3, unsigned long jarg4, void * jarg5) {
+  unsigned long jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::addr_t arg2 ;
+  void *arg3 = (void *) 0 ;
+  size_t arg4 ;
+  lldb::SBError *arg5 = 0 ;
+  lldb::addr_t *argp2 ;
+  size_t result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  argp2 = (lldb::addr_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  arg3 = (void *)jarg3; /* IntPtr */ 
+  arg4 = (size_t)jarg4; 
+  arg5 = (lldb::SBError *)jarg5;
+  if (!arg5) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->WriteMemory(arg2,(void const *)arg3,arg4,*arg5);
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBProcess_ReadCStringFromMemory(void * jarg1, void * jarg2, void* jarg3, unsigned long jarg4, void * jarg5) {
+  unsigned long jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::addr_t arg2 ;
+  void *arg3 = (void *) 0 ;
+  size_t arg4 ;
+  lldb::SBError *arg5 = 0 ;
+  lldb::addr_t *argp2 ;
+  size_t result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  argp2 = (lldb::addr_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  arg3 = (void *)jarg3; /* IntPtr */ 
+  arg4 = (size_t)jarg4; 
+  arg5 = (lldb::SBError *)jarg5;
+  if (!arg5) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->ReadCStringFromMemory(arg2,arg3,arg4,*arg5);
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBProcess_ReadUnsignedFromMemory(void * jarg1, void * jarg2, void * jarg3, void * jarg4) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::addr_t arg2 ;
+  uint32_t arg3 ;
+  lldb::SBError *arg4 = 0 ;
+  lldb::addr_t *argp2 ;
+  uint32_t *argp3 ;
+  uint64_t result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  argp2 = (lldb::addr_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  arg4 = (lldb::SBError *)jarg4;
+  if (!arg4) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->ReadUnsignedFromMemory(arg2,arg3,*arg4);
+  jresult = new uint64_t((const uint64_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBProcess_ReadPointerFromMemory(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::addr_t arg2 ;
+  lldb::SBError *arg3 = 0 ;
+  lldb::addr_t *argp2 ;
+  lldb::addr_t result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  argp2 = (lldb::addr_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  arg3 = (lldb::SBError *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->ReadPointerFromMemory(arg2,*arg3);
+  jresult = new lldb::addr_t((const lldb::addr_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBProcess_GetStateFromEvent(void * jarg1) {
+  int jresult ;
+  lldb::SBEvent *arg1 = 0 ;
+  lldb::StateType result;
+  
+  arg1 = (lldb::SBEvent *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::StateType)lldb::SBProcess::GetStateFromEvent((lldb::SBEvent const &)*arg1);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBProcess_GetRestartedFromEvent(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBEvent *arg1 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBEvent *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent const & type is null", 0);
+    return 0;
+  } 
+  result = (bool)lldb::SBProcess::GetRestartedFromEvent((lldb::SBEvent const &)*arg1);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBProcess_GetProcessFromEvent(void * jarg1) {
+  void * jresult ;
+  lldb::SBEvent *arg1 = 0 ;
+  lldb::SBProcess result;
+  
+  arg1 = (lldb::SBEvent *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent const & type is null", 0);
+    return 0;
+  } 
+  result = lldb::SBProcess::GetProcessFromEvent((lldb::SBEvent const &)*arg1);
+  jresult = new lldb::SBProcess((const lldb::SBProcess &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBProcess_EventIsProcessEvent(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBEvent *arg1 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBEvent *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBEvent const & type is null", 0);
+    return 0;
+  } 
+  result = (bool)lldb::SBProcess::EventIsProcessEvent((lldb::SBEvent const &)*arg1);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBProcess_GetBroadcaster(void * jarg1) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::SBBroadcaster result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  result = ((lldb::SBProcess const *)arg1)->GetBroadcaster();
+  jresult = new lldb::SBBroadcaster((const lldb::SBBroadcaster &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBProcess_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBProcess_GetNumSupportedHardwareWatchpoints(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::SBError *arg2 = 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  arg2 = (lldb::SBError *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = ((lldb::SBProcess const *)arg1)->GetNumSupportedHardwareWatchpoints(*arg2);
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBProcess_LoadImage(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  lldb::SBFileSpec *arg2 = 0 ;
+  lldb::SBError *arg3 = 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  arg2 = (lldb::SBFileSpec *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFileSpec & type is null", 0);
+    return 0;
+  } 
+  arg3 = (lldb::SBError *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->LoadImage(*arg2,*arg3);
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBProcess_UnloadImage(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBProcess *arg1 = (lldb::SBProcess *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBError result;
+  
+  arg1 = (lldb::SBProcess *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->UnloadImage(arg2);
+  jresult = new lldb::SBError((const lldb::SBError &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBSection__SWIG_0() {
+  void * jresult ;
+  lldb::SBSection *result = 0 ;
+  
+  result = (lldb::SBSection *)new lldb::SBSection();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBSection__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBSection *arg1 = 0 ;
+  lldb::SBSection *result = 0 ;
+  
+  arg1 = (lldb::SBSection *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBSection const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBSection *)new lldb::SBSection((lldb::SBSection const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBSection(void * jarg1) {
+  lldb::SBSection *arg1 = (lldb::SBSection *) 0 ;
+  
+  arg1 = (lldb::SBSection *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBSection_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBSection *arg1 = (lldb::SBSection *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBSection *)jarg1; 
+  result = (bool)((lldb::SBSection const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBSection_GetName(void * jarg1) {
+  char * jresult ;
+  lldb::SBSection *arg1 = (lldb::SBSection *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBSection *)jarg1; 
+  result = (char *)(arg1)->GetName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSection_FindSubSection(void * jarg1, char * jarg2) {
+  void * jresult ;
+  lldb::SBSection *arg1 = (lldb::SBSection *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBSection result;
+  
+  arg1 = (lldb::SBSection *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (arg1)->FindSubSection((char const *)arg2);
+  jresult = new lldb::SBSection((const lldb::SBSection &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBSection_GetNumSubSections(void * jarg1) {
+  unsigned long jresult ;
+  lldb::SBSection *arg1 = (lldb::SBSection *) 0 ;
+  size_t result;
+  
+  arg1 = (lldb::SBSection *)jarg1; 
+  result = (arg1)->GetNumSubSections();
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSection_GetSubSectionAtIndex(void * jarg1, unsigned long jarg2) {
+  void * jresult ;
+  lldb::SBSection *arg1 = (lldb::SBSection *) 0 ;
+  size_t arg2 ;
+  lldb::SBSection result;
+  
+  arg1 = (lldb::SBSection *)jarg1; 
+  arg2 = (size_t)jarg2; 
+  result = (arg1)->GetSubSectionAtIndex(arg2);
+  jresult = new lldb::SBSection((const lldb::SBSection &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSection_GetFileAddress(void * jarg1) {
+  void * jresult ;
+  lldb::SBSection *arg1 = (lldb::SBSection *) 0 ;
+  lldb::addr_t result;
+  
+  arg1 = (lldb::SBSection *)jarg1; 
+  result = (arg1)->GetFileAddress();
+  jresult = new lldb::addr_t((const lldb::addr_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSection_GetLoadAddress(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBSection *arg1 = (lldb::SBSection *) 0 ;
+  lldb::SBTarget *arg2 = 0 ;
+  lldb::addr_t result;
+  
+  arg1 = (lldb::SBSection *)jarg1; 
+  arg2 = (lldb::SBTarget *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBTarget & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->GetLoadAddress(*arg2);
+  jresult = new lldb::addr_t((const lldb::addr_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSection_GetByteSize(void * jarg1) {
+  void * jresult ;
+  lldb::SBSection *arg1 = (lldb::SBSection *) 0 ;
+  lldb::addr_t result;
+  
+  arg1 = (lldb::SBSection *)jarg1; 
+  result = (arg1)->GetByteSize();
+  jresult = new lldb::addr_t((const lldb::addr_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSection_GetFileOffset(void * jarg1) {
+  void * jresult ;
+  lldb::SBSection *arg1 = (lldb::SBSection *) 0 ;
+  uint64_t result;
+  
+  arg1 = (lldb::SBSection *)jarg1; 
+  result = (arg1)->GetFileOffset();
+  jresult = new uint64_t((const uint64_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSection_GetFileByteSize(void * jarg1) {
+  void * jresult ;
+  lldb::SBSection *arg1 = (lldb::SBSection *) 0 ;
+  uint64_t result;
+  
+  arg1 = (lldb::SBSection *)jarg1; 
+  result = (arg1)->GetFileByteSize();
+  jresult = new uint64_t((const uint64_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSection_GetSectionData__SWIG_0(void * jarg1) {
+  void * jresult ;
+  lldb::SBSection *arg1 = (lldb::SBSection *) 0 ;
+  lldb::SBData result;
+  
+  arg1 = (lldb::SBSection *)jarg1; 
+  result = (arg1)->GetSectionData();
+  jresult = new lldb::SBData((const lldb::SBData &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSection_GetSectionData__SWIG_1(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBSection *arg1 = (lldb::SBSection *) 0 ;
+  uint64_t arg2 ;
+  uint64_t arg3 ;
+  uint64_t *argp2 ;
+  uint64_t *argp3 ;
+  lldb::SBData result;
+  
+  arg1 = (lldb::SBSection *)jarg1; 
+  argp2 = (uint64_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint64_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  argp3 = (uint64_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint64_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->GetSectionData(arg2,arg3);
+  jresult = new lldb::SBData((const lldb::SBData &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBSection_GetSectionType(void * jarg1) {
+  int jresult ;
+  lldb::SBSection *arg1 = (lldb::SBSection *) 0 ;
+  lldb::SectionType result;
+  
+  arg1 = (lldb::SBSection *)jarg1; 
+  result = (lldb::SectionType)(arg1)->GetSectionType();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBSection_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBSection *arg1 = (lldb::SBSection *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBSection *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBSourceManager(void * jarg1) {
+  void * jresult ;
+  lldb::SBSourceManager *arg1 = 0 ;
+  lldb::SBSourceManager *result = 0 ;
+  
+  arg1 = (lldb::SBSourceManager *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBSourceManager const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBSourceManager *)new lldb::SBSourceManager((lldb::SBSourceManager const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBSourceManager(void * jarg1) {
+  lldb::SBSourceManager *arg1 = (lldb::SBSourceManager *) 0 ;
+  
+  arg1 = (lldb::SBSourceManager *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBSourceManager_DisplaySourceLinesWithLineNumbers(void * jarg1, void * jarg2, void * jarg3, void * jarg4, void * jarg5, char * jarg6, void * jarg7) {
+  unsigned long jresult ;
+  lldb::SBSourceManager *arg1 = (lldb::SBSourceManager *) 0 ;
+  lldb::SBFileSpec *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t arg4 ;
+  uint32_t arg5 ;
+  char *arg6 = (char *) 0 ;
+  lldb::SBStream *arg7 = 0 ;
+  uint32_t *argp3 ;
+  uint32_t *argp4 ;
+  uint32_t *argp5 ;
+  size_t result;
+  
+  arg1 = (lldb::SBSourceManager *)jarg1; 
+  arg2 = (lldb::SBFileSpec *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFileSpec const & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  argp4 = (uint32_t *)jarg4; 
+  if (!argp4) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg4 = *argp4; 
+  argp5 = (uint32_t *)jarg5; 
+  if (!argp5) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg5 = *argp5; 
+  arg6 = (char *)jarg6; 
+  arg7 = (lldb::SBStream *)jarg7;
+  if (!arg7) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->DisplaySourceLinesWithLineNumbers((lldb::SBFileSpec const &)*arg2,arg3,arg4,arg5,(char const *)arg6,*arg7);
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBStream() {
+  void * jresult ;
+  lldb::SBStream *result = 0 ;
+  
+  result = (lldb::SBStream *)new lldb::SBStream();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBStream(void * jarg1) {
+  lldb::SBStream *arg1 = (lldb::SBStream *) 0 ;
+  
+  arg1 = (lldb::SBStream *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBStream_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBStream *arg1 = (lldb::SBStream *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBStream *)jarg1; 
+  result = (bool)((lldb::SBStream const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBStream_GetData(void * jarg1) {
+  char * jresult ;
+  lldb::SBStream *arg1 = (lldb::SBStream *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBStream *)jarg1; 
+  result = (char *)(arg1)->GetData();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBStream_GetSize(void * jarg1) {
+  unsigned long jresult ;
+  lldb::SBStream *arg1 = (lldb::SBStream *) 0 ;
+  size_t result;
+  
+  arg1 = (lldb::SBStream *)jarg1; 
+  result = (arg1)->GetSize();
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBStream_Printf(void * jarg1, char * jarg2) {
+  lldb::SBStream *arg1 = (lldb::SBStream *) 0 ;
+  char *arg2 = (char *) 0 ;
+  void *arg3 = 0 ;
+  
+  arg1 = (lldb::SBStream *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->Printf((char const *)arg2,arg3);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBStream_RedirectToFile(void * jarg1, char * jarg2, unsigned int jarg3) {
+  lldb::SBStream *arg1 = (lldb::SBStream *) 0 ;
+  char *arg2 = (char *) 0 ;
+  bool arg3 ;
+  
+  arg1 = (lldb::SBStream *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = jarg3 ? true : false; 
+  (arg1)->RedirectToFile((char const *)arg2,arg3);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBStream_RedirectToFileHandle(void * jarg1, void * jarg2, unsigned int jarg3) {
+  lldb::SBStream *arg1 = (lldb::SBStream *) 0 ;
+  FILE *arg2 = (FILE *) 0 ;
+  bool arg3 ;
+  
+  arg1 = (lldb::SBStream *)jarg1; 
+  arg2 = (FILE *)jarg2; 
+  arg3 = jarg3 ? true : false; 
+  (arg1)->RedirectToFileHandle(arg2,arg3);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBStream_RedirectToFileDescriptor(void * jarg1, int jarg2, unsigned int jarg3) {
+  lldb::SBStream *arg1 = (lldb::SBStream *) 0 ;
+  int arg2 ;
+  bool arg3 ;
+  
+  arg1 = (lldb::SBStream *)jarg1; 
+  arg2 = (int)jarg2; 
+  arg3 = jarg3 ? true : false; 
+  (arg1)->RedirectToFileDescriptor(arg2,arg3);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBStream_Clear(void * jarg1) {
+  lldb::SBStream *arg1 = (lldb::SBStream *) 0 ;
+  
+  arg1 = (lldb::SBStream *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBStringList__SWIG_0() {
+  void * jresult ;
+  lldb::SBStringList *result = 0 ;
+  
+  result = (lldb::SBStringList *)new lldb::SBStringList();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBStringList__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBStringList *arg1 = 0 ;
+  lldb::SBStringList *result = 0 ;
+  
+  arg1 = (lldb::SBStringList *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStringList const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBStringList *)new lldb::SBStringList((lldb::SBStringList const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBStringList(void * jarg1) {
+  lldb::SBStringList *arg1 = (lldb::SBStringList *) 0 ;
+  
+  arg1 = (lldb::SBStringList *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBStringList_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBStringList *arg1 = (lldb::SBStringList *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBStringList *)jarg1; 
+  result = (bool)((lldb::SBStringList const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBStringList_AppendString(void * jarg1, char * jarg2) {
+  lldb::SBStringList *arg1 = (lldb::SBStringList *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBStringList *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->AppendString((char const *)arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBStringList_AppendList__SWIG_0(void * jarg1, void * jarg2, int jarg3) {
+  lldb::SBStringList *arg1 = (lldb::SBStringList *) 0 ;
+  char **arg2 = (char **) 0 ;
+  int arg3 ;
+  
+  arg1 = (lldb::SBStringList *)jarg1; 
+  arg2 = (char **)jarg2; 
+  arg3 = (int)jarg3; 
+  (arg1)->AppendList((char const **)arg2,arg3);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBStringList_AppendList__SWIG_1(void * jarg1, void * jarg2) {
+  lldb::SBStringList *arg1 = (lldb::SBStringList *) 0 ;
+  lldb::SBStringList *arg2 = 0 ;
+  
+  arg1 = (lldb::SBStringList *)jarg1; 
+  arg2 = (lldb::SBStringList *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStringList const & type is null", 0);
+    return ;
+  } 
+  (arg1)->AppendList((lldb::SBStringList const &)*arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBStringList_GetSize(void * jarg1) {
+  void * jresult ;
+  lldb::SBStringList *arg1 = (lldb::SBStringList *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBStringList *)jarg1; 
+  result = ((lldb::SBStringList const *)arg1)->GetSize();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBStringList_GetStringAtIndex(void * jarg1, unsigned long jarg2) {
+  char * jresult ;
+  lldb::SBStringList *arg1 = (lldb::SBStringList *) 0 ;
+  size_t arg2 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBStringList *)jarg1; 
+  arg2 = (size_t)jarg2; 
+  result = (char *)(arg1)->GetStringAtIndex(arg2);
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBStringList_Clear(void * jarg1) {
+  lldb::SBStringList *arg1 = (lldb::SBStringList *) 0 ;
+  
+  arg1 = (lldb::SBStringList *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBSymbol__SWIG_0() {
+  void * jresult ;
+  lldb::SBSymbol *result = 0 ;
+  
+  result = (lldb::SBSymbol *)new lldb::SBSymbol();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBSymbol(void * jarg1) {
+  lldb::SBSymbol *arg1 = (lldb::SBSymbol *) 0 ;
+  
+  arg1 = (lldb::SBSymbol *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBSymbol__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBSymbol *arg1 = 0 ;
+  lldb::SBSymbol *result = 0 ;
+  
+  arg1 = (lldb::SBSymbol *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBSymbol const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBSymbol *)new lldb::SBSymbol((lldb::SBSymbol const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBSymbol_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBSymbol *arg1 = (lldb::SBSymbol *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBSymbol *)jarg1; 
+  result = (bool)((lldb::SBSymbol const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBSymbol_GetName(void * jarg1) {
+  char * jresult ;
+  lldb::SBSymbol *arg1 = (lldb::SBSymbol *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBSymbol *)jarg1; 
+  result = (char *)((lldb::SBSymbol const *)arg1)->GetName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBSymbol_GetMangledName(void * jarg1) {
+  char * jresult ;
+  lldb::SBSymbol *arg1 = (lldb::SBSymbol *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBSymbol *)jarg1; 
+  result = (char *)((lldb::SBSymbol const *)arg1)->GetMangledName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSymbol_GetInstructions(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBSymbol *arg1 = (lldb::SBSymbol *) 0 ;
+  lldb::SBTarget arg2 ;
+  lldb::SBTarget *argp2 ;
+  lldb::SBInstructionList result;
+  
+  arg1 = (lldb::SBSymbol *)jarg1; 
+  argp2 = (lldb::SBTarget *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTarget", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetInstructions(arg2);
+  jresult = new lldb::SBInstructionList((const lldb::SBInstructionList &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSymbol_GetStartAddress(void * jarg1) {
+  void * jresult ;
+  lldb::SBSymbol *arg1 = (lldb::SBSymbol *) 0 ;
+  lldb::SBAddress result;
+  
+  arg1 = (lldb::SBSymbol *)jarg1; 
+  result = (arg1)->GetStartAddress();
+  jresult = new lldb::SBAddress((const lldb::SBAddress &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSymbol_GetEndAddress(void * jarg1) {
+  void * jresult ;
+  lldb::SBSymbol *arg1 = (lldb::SBSymbol *) 0 ;
+  lldb::SBAddress result;
+  
+  arg1 = (lldb::SBSymbol *)jarg1; 
+  result = (arg1)->GetEndAddress();
+  jresult = new lldb::SBAddress((const lldb::SBAddress &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSymbol_GetPrologueByteSize(void * jarg1) {
+  void * jresult ;
+  lldb::SBSymbol *arg1 = (lldb::SBSymbol *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBSymbol *)jarg1; 
+  result = (arg1)->GetPrologueByteSize();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBSymbol_GetType(void * jarg1) {
+  int jresult ;
+  lldb::SBSymbol *arg1 = (lldb::SBSymbol *) 0 ;
+  lldb::SymbolType result;
+  
+  arg1 = (lldb::SBSymbol *)jarg1; 
+  result = (lldb::SymbolType)(arg1)->GetType();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBSymbol_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBSymbol *arg1 = (lldb::SBSymbol *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBSymbol *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBSymbol_IsExternal(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBSymbol *arg1 = (lldb::SBSymbol *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBSymbol *)jarg1; 
+  result = (bool)(arg1)->IsExternal();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBSymbol_IsSynthetic(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBSymbol *arg1 = (lldb::SBSymbol *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBSymbol *)jarg1; 
+  result = (bool)(arg1)->IsSynthetic();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBSymbolContext__SWIG_0() {
+  void * jresult ;
+  lldb::SBSymbolContext *result = 0 ;
+  
+  result = (lldb::SBSymbolContext *)new lldb::SBSymbolContext();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBSymbolContext__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBSymbolContext *arg1 = 0 ;
+  lldb::SBSymbolContext *result = 0 ;
+  
+  arg1 = (lldb::SBSymbolContext *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBSymbolContext const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBSymbolContext *)new lldb::SBSymbolContext((lldb::SBSymbolContext const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBSymbolContext(void * jarg1) {
+  lldb::SBSymbolContext *arg1 = (lldb::SBSymbolContext *) 0 ;
+  
+  arg1 = (lldb::SBSymbolContext *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBSymbolContext_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBSymbolContext *arg1 = (lldb::SBSymbolContext *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBSymbolContext *)jarg1; 
+  result = (bool)((lldb::SBSymbolContext const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSymbolContext_GetModule(void * jarg1) {
+  void * jresult ;
+  lldb::SBSymbolContext *arg1 = (lldb::SBSymbolContext *) 0 ;
+  lldb::SBModule result;
+  
+  arg1 = (lldb::SBSymbolContext *)jarg1; 
+  result = (arg1)->GetModule();
+  jresult = new lldb::SBModule((const lldb::SBModule &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSymbolContext_GetCompileUnit(void * jarg1) {
+  void * jresult ;
+  lldb::SBSymbolContext *arg1 = (lldb::SBSymbolContext *) 0 ;
+  lldb::SBCompileUnit result;
+  
+  arg1 = (lldb::SBSymbolContext *)jarg1; 
+  result = (arg1)->GetCompileUnit();
+  jresult = new lldb::SBCompileUnit((const lldb::SBCompileUnit &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSymbolContext_GetFunction(void * jarg1) {
+  void * jresult ;
+  lldb::SBSymbolContext *arg1 = (lldb::SBSymbolContext *) 0 ;
+  lldb::SBFunction result;
+  
+  arg1 = (lldb::SBSymbolContext *)jarg1; 
+  result = (arg1)->GetFunction();
+  jresult = new lldb::SBFunction((const lldb::SBFunction &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSymbolContext_GetBlock(void * jarg1) {
+  void * jresult ;
+  lldb::SBSymbolContext *arg1 = (lldb::SBSymbolContext *) 0 ;
+  lldb::SBBlock result;
+  
+  arg1 = (lldb::SBSymbolContext *)jarg1; 
+  result = (arg1)->GetBlock();
+  jresult = new lldb::SBBlock((const lldb::SBBlock &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSymbolContext_GetLineEntry(void * jarg1) {
+  void * jresult ;
+  lldb::SBSymbolContext *arg1 = (lldb::SBSymbolContext *) 0 ;
+  lldb::SBLineEntry result;
+  
+  arg1 = (lldb::SBSymbolContext *)jarg1; 
+  result = (arg1)->GetLineEntry();
+  jresult = new lldb::SBLineEntry((const lldb::SBLineEntry &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSymbolContext_GetSymbol(void * jarg1) {
+  void * jresult ;
+  lldb::SBSymbolContext *arg1 = (lldb::SBSymbolContext *) 0 ;
+  lldb::SBSymbol result;
+  
+  arg1 = (lldb::SBSymbolContext *)jarg1; 
+  result = (arg1)->GetSymbol();
+  jresult = new lldb::SBSymbol((const lldb::SBSymbol &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBSymbolContext_SetModule(void * jarg1, void * jarg2) {
+  lldb::SBSymbolContext *arg1 = (lldb::SBSymbolContext *) 0 ;
+  lldb::SBModule arg2 ;
+  lldb::SBModule *argp2 ;
+  
+  arg1 = (lldb::SBSymbolContext *)jarg1; 
+  argp2 = (lldb::SBModule *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBModule", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetModule(arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBSymbolContext_SetCompileUnit(void * jarg1, void * jarg2) {
+  lldb::SBSymbolContext *arg1 = (lldb::SBSymbolContext *) 0 ;
+  lldb::SBCompileUnit arg2 ;
+  lldb::SBCompileUnit *argp2 ;
+  
+  arg1 = (lldb::SBSymbolContext *)jarg1; 
+  argp2 = (lldb::SBCompileUnit *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBCompileUnit", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetCompileUnit(arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBSymbolContext_SetFunction(void * jarg1, void * jarg2) {
+  lldb::SBSymbolContext *arg1 = (lldb::SBSymbolContext *) 0 ;
+  lldb::SBFunction arg2 ;
+  lldb::SBFunction *argp2 ;
+  
+  arg1 = (lldb::SBSymbolContext *)jarg1; 
+  argp2 = (lldb::SBFunction *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBFunction", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetFunction(arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBSymbolContext_SetBlock(void * jarg1, void * jarg2) {
+  lldb::SBSymbolContext *arg1 = (lldb::SBSymbolContext *) 0 ;
+  lldb::SBBlock arg2 ;
+  lldb::SBBlock *argp2 ;
+  
+  arg1 = (lldb::SBSymbolContext *)jarg1; 
+  argp2 = (lldb::SBBlock *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBBlock", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetBlock(arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBSymbolContext_SetLineEntry(void * jarg1, void * jarg2) {
+  lldb::SBSymbolContext *arg1 = (lldb::SBSymbolContext *) 0 ;
+  lldb::SBLineEntry arg2 ;
+  lldb::SBLineEntry *argp2 ;
+  
+  arg1 = (lldb::SBSymbolContext *)jarg1; 
+  argp2 = (lldb::SBLineEntry *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBLineEntry", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetLineEntry(arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBSymbolContext_SetSymbol(void * jarg1, void * jarg2) {
+  lldb::SBSymbolContext *arg1 = (lldb::SBSymbolContext *) 0 ;
+  lldb::SBSymbol arg2 ;
+  lldb::SBSymbol *argp2 ;
+  
+  arg1 = (lldb::SBSymbolContext *)jarg1; 
+  argp2 = (lldb::SBSymbol *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBSymbol", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetSymbol(arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSymbolContext_GetParentOfInlinedScope(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBSymbolContext *arg1 = (lldb::SBSymbolContext *) 0 ;
+  lldb::SBAddress *arg2 = 0 ;
+  lldb::SBAddress *arg3 = 0 ;
+  lldb::SBSymbolContext result;
+  
+  arg1 = (lldb::SBSymbolContext *)jarg1; 
+  arg2 = (lldb::SBAddress *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBAddress const & type is null", 0);
+    return 0;
+  } 
+  arg3 = (lldb::SBAddress *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBAddress & type is null", 0);
+    return 0;
+  } 
+  result = ((lldb::SBSymbolContext const *)arg1)->GetParentOfInlinedScope((lldb::SBAddress const &)*arg2,*arg3);
+  jresult = new lldb::SBSymbolContext((const lldb::SBSymbolContext &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBSymbolContext_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBSymbolContext *arg1 = (lldb::SBSymbolContext *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBSymbolContext *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBSymbolContextList__SWIG_0() {
+  void * jresult ;
+  lldb::SBSymbolContextList *result = 0 ;
+  
+  result = (lldb::SBSymbolContextList *)new lldb::SBSymbolContextList();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBSymbolContextList__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBSymbolContextList *arg1 = 0 ;
+  lldb::SBSymbolContextList *result = 0 ;
+  
+  arg1 = (lldb::SBSymbolContextList *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBSymbolContextList const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBSymbolContextList *)new lldb::SBSymbolContextList((lldb::SBSymbolContextList const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBSymbolContextList(void * jarg1) {
+  lldb::SBSymbolContextList *arg1 = (lldb::SBSymbolContextList *) 0 ;
+  
+  arg1 = (lldb::SBSymbolContextList *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBSymbolContextList_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBSymbolContextList *arg1 = (lldb::SBSymbolContextList *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBSymbolContextList *)jarg1; 
+  result = (bool)((lldb::SBSymbolContextList const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSymbolContextList_GetSize(void * jarg1) {
+  void * jresult ;
+  lldb::SBSymbolContextList *arg1 = (lldb::SBSymbolContextList *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBSymbolContextList *)jarg1; 
+  result = ((lldb::SBSymbolContextList const *)arg1)->GetSize();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBSymbolContextList_GetContextAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBSymbolContextList *arg1 = (lldb::SBSymbolContextList *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBSymbolContext result;
+  
+  arg1 = (lldb::SBSymbolContextList *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetContextAtIndex(arg2);
+  jresult = new lldb::SBSymbolContext((const lldb::SBSymbolContext &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBSymbolContextList_Append__SWIG_0(void * jarg1, void * jarg2) {
+  lldb::SBSymbolContextList *arg1 = (lldb::SBSymbolContextList *) 0 ;
+  lldb::SBSymbolContext *arg2 = 0 ;
+  
+  arg1 = (lldb::SBSymbolContextList *)jarg1; 
+  arg2 = (lldb::SBSymbolContext *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBSymbolContext & type is null", 0);
+    return ;
+  } 
+  (arg1)->Append(*arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBSymbolContextList_Append__SWIG_1(void * jarg1, void * jarg2) {
+  lldb::SBSymbolContextList *arg1 = (lldb::SBSymbolContextList *) 0 ;
+  lldb::SBSymbolContextList *arg2 = 0 ;
+  
+  arg1 = (lldb::SBSymbolContextList *)jarg1; 
+  arg2 = (lldb::SBSymbolContextList *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBSymbolContextList & type is null", 0);
+    return ;
+  } 
+  (arg1)->Append(*arg2);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBSymbolContextList_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBSymbolContextList *arg1 = (lldb::SBSymbolContextList *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBSymbolContextList *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBSymbolContextList_Clear(void * jarg1) {
+  lldb::SBSymbolContextList *arg1 = (lldb::SBSymbolContextList *) 0 ;
+  
+  arg1 = (lldb::SBSymbolContextList *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBLaunchInfo(void * jarg1) {
+  void * jresult ;
+  char **arg1 = (char **) 0 ;
+  lldb::SBLaunchInfo *result = 0 ;
+  
+  arg1 = (char **)jarg1; 
+  result = (lldb::SBLaunchInfo *)new lldb::SBLaunchInfo((char const **)arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBLaunchInfo_GetUserID(void * jarg1) {
+  void * jresult ;
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  result = (arg1)->GetUserID();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBLaunchInfo_GetGroupID(void * jarg1) {
+  void * jresult ;
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  result = (arg1)->GetGroupID();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBLaunchInfo_UserIDIsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  result = (bool)(arg1)->UserIDIsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBLaunchInfo_GroupIDIsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  result = (bool)(arg1)->GroupIDIsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBLaunchInfo_SetUserID(void * jarg1, void * jarg2) {
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetUserID(arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBLaunchInfo_SetGroupID(void * jarg1, void * jarg2) {
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetGroupID(arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBLaunchInfo_GetNumArguments(void * jarg1) {
+  void * jresult ;
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  result = (arg1)->GetNumArguments();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBLaunchInfo_GetArgumentAtIndex(void * jarg1, void * jarg2) {
+  char * jresult ;
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (char *)(arg1)->GetArgumentAtIndex(arg2);
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBLaunchInfo_SetArguments(void * jarg1, void * jarg2, unsigned int jarg3) {
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  char **arg2 = (char **) 0 ;
+  bool arg3 ;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  arg2 = (char **)jarg2; 
+  arg3 = jarg3 ? true : false; 
+  (arg1)->SetArguments((char const **)arg2,arg3);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBLaunchInfo_GetNumEnvironmentEntries(void * jarg1) {
+  void * jresult ;
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  result = (arg1)->GetNumEnvironmentEntries();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBLaunchInfo_GetEnvironmentEntryAtIndex(void * jarg1, void * jarg2) {
+  char * jresult ;
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (char *)(arg1)->GetEnvironmentEntryAtIndex(arg2);
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBLaunchInfo_SetEnvironmentEntries(void * jarg1, void * jarg2, unsigned int jarg3) {
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  char **arg2 = (char **) 0 ;
+  bool arg3 ;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  arg2 = (char **)jarg2; 
+  arg3 = jarg3 ? true : false; 
+  (arg1)->SetEnvironmentEntries((char const **)arg2,arg3);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBLaunchInfo_Clear(void * jarg1) {
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBLaunchInfo_GetWorkingDirectory(void * jarg1) {
+  char * jresult ;
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  result = (char *)((lldb::SBLaunchInfo const *)arg1)->GetWorkingDirectory();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBLaunchInfo_SetWorkingDirectory(void * jarg1, char * jarg2) {
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->SetWorkingDirectory((char const *)arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBLaunchInfo_GetLaunchFlags(void * jarg1) {
+  void * jresult ;
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  result = (arg1)->GetLaunchFlags();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBLaunchInfo_SetLaunchFlags(void * jarg1, void * jarg2) {
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetLaunchFlags(arg2);
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBLaunchInfo_GetProcessPluginName(void * jarg1) {
+  char * jresult ;
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  result = (char *)(arg1)->GetProcessPluginName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBLaunchInfo_SetProcessPluginName(void * jarg1, char * jarg2) {
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->SetProcessPluginName((char const *)arg2);
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBLaunchInfo_GetShell(void * jarg1) {
+  char * jresult ;
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  result = (char *)(arg1)->GetShell();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBLaunchInfo_SetShell(void * jarg1, char * jarg2) {
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->SetShell((char const *)arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBLaunchInfo_GetResumeCount(void * jarg1) {
+  void * jresult ;
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  result = (arg1)->GetResumeCount();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBLaunchInfo_SetResumeCount(void * jarg1, void * jarg2) {
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetResumeCount(arg2);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBLaunchInfo_AddCloseFileAction(void * jarg1, int jarg2) {
+  unsigned int jresult ;
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  int arg2 ;
+  bool result;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  arg2 = (int)jarg2; 
+  result = (bool)(arg1)->AddCloseFileAction(arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBLaunchInfo_AddDuplicateFileAction(void * jarg1, int jarg2, int jarg3) {
+  unsigned int jresult ;
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  int arg2 ;
+  int arg3 ;
+  bool result;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  arg2 = (int)jarg2; 
+  arg3 = (int)jarg3; 
+  result = (bool)(arg1)->AddDuplicateFileAction(arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBLaunchInfo_AddOpenFileAction(void * jarg1, int jarg2, char * jarg3, unsigned int jarg4, unsigned int jarg5) {
+  unsigned int jresult ;
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  int arg2 ;
+  char *arg3 = (char *) 0 ;
+  bool arg4 ;
+  bool arg5 ;
+  bool result;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  arg2 = (int)jarg2; 
+  arg3 = (char *)jarg3; 
+  arg4 = jarg4 ? true : false; 
+  arg5 = jarg5 ? true : false; 
+  result = (bool)(arg1)->AddOpenFileAction(arg2,(char const *)arg3,arg4,arg5);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBLaunchInfo_AddSuppressFileAction(void * jarg1, int jarg2, unsigned int jarg3, unsigned int jarg4) {
+  unsigned int jresult ;
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  int arg2 ;
+  bool arg3 ;
+  bool arg4 ;
+  bool result;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  arg2 = (int)jarg2; 
+  arg3 = jarg3 ? true : false; 
+  arg4 = jarg4 ? true : false; 
+  result = (bool)(arg1)->AddSuppressFileAction(arg2,arg3,arg4);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBLaunchInfo(void * jarg1) {
+  lldb::SBLaunchInfo *arg1 = (lldb::SBLaunchInfo *) 0 ;
+  
+  arg1 = (lldb::SBLaunchInfo *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBAttachInfo__SWIG_0() {
+  void * jresult ;
+  lldb::SBAttachInfo *result = 0 ;
+  
+  result = (lldb::SBAttachInfo *)new lldb::SBAttachInfo();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBAttachInfo__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::pid_t arg1 ;
+  lldb::pid_t *argp1 ;
+  lldb::SBAttachInfo *result = 0 ;
+  
+  argp1 = (lldb::pid_t *)jarg1; 
+  if (!argp1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::pid_t", 0);
+    return 0;
+  }
+  arg1 = *argp1; 
+  result = (lldb::SBAttachInfo *)new lldb::SBAttachInfo(arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBAttachInfo__SWIG_2(char * jarg1, unsigned int jarg2) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  bool arg2 ;
+  lldb::SBAttachInfo *result = 0 ;
+  
+  arg1 = (char *)jarg1; 
+  arg2 = jarg2 ? true : false; 
+  result = (lldb::SBAttachInfo *)new lldb::SBAttachInfo((char const *)arg1,arg2);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBAttachInfo__SWIG_3(void * jarg1) {
+  void * jresult ;
+  lldb::SBAttachInfo *arg1 = 0 ;
+  lldb::SBAttachInfo *result = 0 ;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBAttachInfo const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBAttachInfo *)new lldb::SBAttachInfo((lldb::SBAttachInfo const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBAttachInfo_GetProcessID(void * jarg1) {
+  void * jresult ;
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  lldb::pid_t result;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  result = (arg1)->GetProcessID();
+  jresult = new lldb::pid_t((const lldb::pid_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBAttachInfo_SetProcessID(void * jarg1, void * jarg2) {
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  lldb::pid_t arg2 ;
+  lldb::pid_t *argp2 ;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  argp2 = (lldb::pid_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::pid_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetProcessID(arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBAttachInfo_SetExecutable__SWIG_0(void * jarg1, char * jarg2) {
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->SetExecutable((char const *)arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBAttachInfo_SetExecutable__SWIG_1(void * jarg1, void * jarg2) {
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  lldb::SBFileSpec arg2 ;
+  lldb::SBFileSpec *argp2 ;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  argp2 = (lldb::SBFileSpec *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBFileSpec", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetExecutable(arg2);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBAttachInfo_GetWaitForLaunch(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  result = (bool)(arg1)->GetWaitForLaunch();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBAttachInfo_SetWaitForLaunch(void * jarg1, unsigned int jarg2) {
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  bool arg2 ;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  arg2 = jarg2 ? true : false; 
+  (arg1)->SetWaitForLaunch(arg2);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBAttachInfo_GetIgnoreExisting(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  result = (bool)(arg1)->GetIgnoreExisting();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBAttachInfo_SetIgnoreExisting(void * jarg1, unsigned int jarg2) {
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  bool arg2 ;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  arg2 = jarg2 ? true : false; 
+  (arg1)->SetIgnoreExisting(arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBAttachInfo_GetResumeCount(void * jarg1) {
+  void * jresult ;
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  result = (arg1)->GetResumeCount();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBAttachInfo_SetResumeCount(void * jarg1, void * jarg2) {
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetResumeCount(arg2);
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBAttachInfo_GetProcessPluginName(void * jarg1) {
+  char * jresult ;
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  result = (char *)(arg1)->GetProcessPluginName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBAttachInfo_SetProcessPluginName(void * jarg1, char * jarg2) {
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->SetProcessPluginName((char const *)arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBAttachInfo_GetUserID(void * jarg1) {
+  void * jresult ;
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  result = (arg1)->GetUserID();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBAttachInfo_GetGroupID(void * jarg1) {
+  void * jresult ;
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  result = (arg1)->GetGroupID();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBAttachInfo_UserIDIsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  result = (bool)(arg1)->UserIDIsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBAttachInfo_GroupIDIsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  result = (bool)(arg1)->GroupIDIsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBAttachInfo_SetUserID(void * jarg1, void * jarg2) {
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetUserID(arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBAttachInfo_SetGroupID(void * jarg1, void * jarg2) {
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetGroupID(arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBAttachInfo_GetEffectiveUserID(void * jarg1) {
+  void * jresult ;
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  result = (arg1)->GetEffectiveUserID();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBAttachInfo_GetEffectiveGroupID(void * jarg1) {
+  void * jresult ;
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  result = (arg1)->GetEffectiveGroupID();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBAttachInfo_EffectiveUserIDIsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  result = (bool)(arg1)->EffectiveUserIDIsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBAttachInfo_EffectiveGroupIDIsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  result = (bool)(arg1)->EffectiveGroupIDIsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBAttachInfo_SetEffectiveUserID(void * jarg1, void * jarg2) {
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetEffectiveUserID(arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBAttachInfo_SetEffectiveGroupID(void * jarg1, void * jarg2) {
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetEffectiveGroupID(arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBAttachInfo_GetParentProcessID(void * jarg1) {
+  void * jresult ;
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  lldb::pid_t result;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  result = (arg1)->GetParentProcessID();
+  jresult = new lldb::pid_t((const lldb::pid_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBAttachInfo_SetParentProcessID(void * jarg1, void * jarg2) {
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  lldb::pid_t arg2 ;
+  lldb::pid_t *argp2 ;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  argp2 = (lldb::pid_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::pid_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetParentProcessID(arg2);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBAttachInfo_ParentProcessIDIsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  result = (bool)(arg1)->ParentProcessIDIsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBAttachInfo(void * jarg1) {
+  lldb::SBAttachInfo *arg1 = (lldb::SBAttachInfo *) 0 ;
+  
+  arg1 = (lldb::SBAttachInfo *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBTarget_eBroadcastBitBreakpointChanged_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)lldb::SBTarget::eBroadcastBitBreakpointChanged;
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBTarget_eBroadcastBitModulesLoaded_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)lldb::SBTarget::eBroadcastBitModulesLoaded;
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBTarget_eBroadcastBitModulesUnloaded_get() {
+  int jresult ;
+  int result;
+  
+  result = (int)lldb::SBTarget::eBroadcastBitModulesUnloaded;
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTarget__SWIG_0() {
+  void * jresult ;
+  lldb::SBTarget *result = 0 ;
+  
+  result = (lldb::SBTarget *)new lldb::SBTarget();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTarget__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = 0 ;
+  lldb::SBTarget *result = 0 ;
+  
+  arg1 = (lldb::SBTarget *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBTarget const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBTarget *)new lldb::SBTarget((lldb::SBTarget const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBTarget(void * jarg1) {
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBTarget_GetBroadcasterClassName() {
+  char * jresult ;
+  char *result = 0 ;
+  
+  result = (char *)lldb::SBTarget::GetBroadcasterClassName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTarget_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  result = (bool)((lldb::SBTarget const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_GetProcess(void * jarg1) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBProcess result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  result = (arg1)->GetProcess();
+  jresult = new lldb::SBProcess((const lldb::SBProcess &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_Launch__SWIG_0(void * jarg1, void * jarg2, void * jarg3, void * jarg4, char * jarg5, char * jarg6, char * jarg7, char * jarg8, void * jarg9, unsigned int jarg10, void * jarg11) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBListener *arg2 = 0 ;
+  char **arg3 = (char **) 0 ;
+  char **arg4 = (char **) 0 ;
+  char *arg5 = (char *) 0 ;
+  char *arg6 = (char *) 0 ;
+  char *arg7 = (char *) 0 ;
+  char *arg8 = (char *) 0 ;
+  uint32_t arg9 ;
+  bool arg10 ;
+  lldb::SBError *arg11 = 0 ;
+  uint32_t *argp9 ;
+  lldb::SBProcess result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (lldb::SBListener *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBListener & type is null", 0);
+    return 0;
+  } 
+  arg3 = (char **)jarg3; 
+  arg4 = (char **)jarg4; 
+  arg5 = (char *)jarg5; 
+  arg6 = (char *)jarg6; 
+  arg7 = (char *)jarg7; 
+  arg8 = (char *)jarg8; 
+  argp9 = (uint32_t *)jarg9; 
+  if (!argp9) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg9 = *argp9; 
+  arg10 = jarg10 ? true : false; 
+  arg11 = (lldb::SBError *)jarg11;
+  if (!arg11) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->Launch(*arg2,(char const **)arg3,(char const **)arg4,(char const *)arg5,(char const *)arg6,(char const *)arg7,(char const *)arg8,arg9,arg10,*arg11);
+  jresult = new lldb::SBProcess((const lldb::SBProcess &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_LaunchSimple(void * jarg1, void * jarg2, void * jarg3, char * jarg4) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  char **arg2 = (char **) 0 ;
+  char **arg3 = (char **) 0 ;
+  char *arg4 = (char *) 0 ;
+  lldb::SBProcess result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (char **)jarg2; 
+  arg3 = (char **)jarg3; 
+  arg4 = (char *)jarg4; 
+  result = (arg1)->LaunchSimple((char const **)arg2,(char const **)arg3,(char const *)arg4);
+  jresult = new lldb::SBProcess((const lldb::SBProcess &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_Launch__SWIG_1(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBLaunchInfo *arg2 = 0 ;
+  lldb::SBError *arg3 = 0 ;
+  lldb::SBProcess result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (lldb::SBLaunchInfo *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBLaunchInfo & type is null", 0);
+    return 0;
+  } 
+  arg3 = (lldb::SBError *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->Launch(*arg2,*arg3);
+  jresult = new lldb::SBProcess((const lldb::SBProcess &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_Attach(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBAttachInfo *arg2 = 0 ;
+  lldb::SBError *arg3 = 0 ;
+  lldb::SBProcess result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (lldb::SBAttachInfo *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBAttachInfo & type is null", 0);
+    return 0;
+  } 
+  arg3 = (lldb::SBError *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->Attach(*arg2,*arg3);
+  jresult = new lldb::SBProcess((const lldb::SBProcess &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_AttachToProcessWithID(void * jarg1, void * jarg2, void * jarg3, void * jarg4) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBListener *arg2 = 0 ;
+  lldb::pid_t arg3 ;
+  lldb::SBError *arg4 = 0 ;
+  lldb::pid_t *argp3 ;
+  lldb::SBProcess result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (lldb::SBListener *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBListener & type is null", 0);
+    return 0;
+  } 
+  argp3 = (lldb::pid_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::pid_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  arg4 = (lldb::SBError *)jarg4;
+  if (!arg4) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->AttachToProcessWithID(*arg2,arg3,*arg4);
+  jresult = new lldb::SBProcess((const lldb::SBProcess &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_AttachToProcessWithName(void * jarg1, void * jarg2, char * jarg3, unsigned int jarg4, void * jarg5) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBListener *arg2 = 0 ;
+  char *arg3 = (char *) 0 ;
+  bool arg4 ;
+  lldb::SBError *arg5 = 0 ;
+  lldb::SBProcess result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (lldb::SBListener *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBListener & type is null", 0);
+    return 0;
+  } 
+  arg3 = (char *)jarg3; 
+  arg4 = jarg4 ? true : false; 
+  arg5 = (lldb::SBError *)jarg5;
+  if (!arg5) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->AttachToProcessWithName(*arg2,(char const *)arg3,arg4,*arg5);
+  jresult = new lldb::SBProcess((const lldb::SBProcess &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_ConnectRemote(void * jarg1, void * jarg2, char * jarg3, char * jarg4, void * jarg5) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBListener *arg2 = 0 ;
+  char *arg3 = (char *) 0 ;
+  char *arg4 = (char *) 0 ;
+  lldb::SBError *arg5 = 0 ;
+  lldb::SBProcess result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (lldb::SBListener *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBListener & type is null", 0);
+    return 0;
+  } 
+  arg3 = (char *)jarg3; 
+  arg4 = (char *)jarg4; 
+  arg5 = (lldb::SBError *)jarg5;
+  if (!arg5) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->ConnectRemote(*arg2,(char const *)arg3,(char const *)arg4,*arg5);
+  jresult = new lldb::SBProcess((const lldb::SBProcess &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_GetExecutable(void * jarg1) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBFileSpec result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  result = (arg1)->GetExecutable();
+  jresult = new lldb::SBFileSpec((const lldb::SBFileSpec &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTarget_AddModule__SWIG_0(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBModule *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (lldb::SBModule *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBModule & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->AddModule(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_AddModule__SWIG_1(void * jarg1, char * jarg2, char * jarg3, char * jarg4) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  char *arg2 = (char *) 0 ;
+  char *arg3 = (char *) 0 ;
+  char *arg4 = (char *) 0 ;
+  lldb::SBModule result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (char *)jarg3; 
+  arg4 = (char *)jarg4; 
+  result = (arg1)->AddModule((char const *)arg2,(char const *)arg3,(char const *)arg4);
+  jresult = new lldb::SBModule((const lldb::SBModule &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_AddModule__SWIG_2(void * jarg1, char * jarg2, char * jarg3, char * jarg4, char * jarg5) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  char *arg2 = (char *) 0 ;
+  char *arg3 = (char *) 0 ;
+  char *arg4 = (char *) 0 ;
+  char *arg5 = (char *) 0 ;
+  lldb::SBModule result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (char *)jarg3; 
+  arg4 = (char *)jarg4; 
+  arg5 = (char *)jarg5; 
+  result = (arg1)->AddModule((char const *)arg2,(char const *)arg3,(char const *)arg4,(char const *)arg5);
+  jresult = new lldb::SBModule((const lldb::SBModule &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_GetNumModules(void * jarg1) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  result = ((lldb::SBTarget const *)arg1)->GetNumModules();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_GetModuleAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBModule result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetModuleAtIndex(arg2);
+  jresult = new lldb::SBModule((const lldb::SBModule &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTarget_RemoveModule(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBModule arg2 ;
+  lldb::SBModule *argp2 ;
+  bool result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  argp2 = (lldb::SBModule *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBModule", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (bool)(arg1)->RemoveModule(arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_GetDebugger(void * jarg1) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBDebugger result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  result = ((lldb::SBTarget const *)arg1)->GetDebugger();
+  jresult = new lldb::SBDebugger((const lldb::SBDebugger &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_FindModule(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBFileSpec *arg2 = 0 ;
+  lldb::SBModule result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (lldb::SBFileSpec *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFileSpec const & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->FindModule((lldb::SBFileSpec const &)*arg2);
+  jresult = new lldb::SBModule((const lldb::SBModule &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBTarget_GetByteOrder(void * jarg1) {
+  int jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::ByteOrder result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  result = (lldb::ByteOrder)(arg1)->GetByteOrder();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_GetAddressByteSize(void * jarg1) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  result = (arg1)->GetAddressByteSize();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBTarget_GetTriple(void * jarg1) {
+  char * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  result = (char *)(arg1)->GetTriple();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_SetSectionLoadAddress(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBSection arg2 ;
+  lldb::addr_t arg3 ;
+  lldb::SBSection *argp2 ;
+  lldb::addr_t *argp3 ;
+  lldb::SBError result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  argp2 = (lldb::SBSection *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBSection", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  argp3 = (lldb::addr_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->SetSectionLoadAddress(arg2,arg3);
+  jresult = new lldb::SBError((const lldb::SBError &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_ClearSectionLoadAddress(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBSection arg2 ;
+  lldb::SBSection *argp2 ;
+  lldb::SBError result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  argp2 = (lldb::SBSection *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBSection", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->ClearSectionLoadAddress(arg2);
+  jresult = new lldb::SBError((const lldb::SBError &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_SetModuleLoadAddress(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBModule arg2 ;
+  int64_t arg3 ;
+  lldb::SBModule *argp2 ;
+  int64_t *argp3 ;
+  lldb::SBError result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  argp2 = (lldb::SBModule *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBModule", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  argp3 = (int64_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null int64_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->SetModuleLoadAddress(arg2,arg3);
+  jresult = new lldb::SBError((const lldb::SBError &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_ClearModuleLoadAddress(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBModule arg2 ;
+  lldb::SBModule *argp2 ;
+  lldb::SBError result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  argp2 = (lldb::SBModule *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBModule", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->ClearModuleLoadAddress(arg2);
+  jresult = new lldb::SBError((const lldb::SBError &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_FindFunctions__SWIG_0(void * jarg1, char * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  char *arg2 = (char *) 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  lldb::SBSymbolContextList result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (char *)jarg2; 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->FindFunctions((char const *)arg2,arg3);
+  jresult = new lldb::SBSymbolContextList((const lldb::SBSymbolContextList &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_FindFunctions__SWIG_1(void * jarg1, char * jarg2) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBSymbolContextList result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (arg1)->FindFunctions((char const *)arg2);
+  jresult = new lldb::SBSymbolContextList((const lldb::SBSymbolContextList &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_FindFirstType(void * jarg1, char * jarg2) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBType result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (arg1)->FindFirstType((char const *)arg2);
+  jresult = new lldb::SBType((const lldb::SBType &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_FindTypes(void * jarg1, char * jarg2) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBTypeList result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (arg1)->FindTypes((char const *)arg2);
+  jresult = new lldb::SBTypeList((const lldb::SBTypeList &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_GetSourceManager(void * jarg1) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  SwigValueWrapper< lldb::SBSourceManager > result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  result = (arg1)->GetSourceManager();
+  jresult = new lldb::SBSourceManager((const lldb::SBSourceManager &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_FindGlobalVariables(void * jarg1, char * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  char *arg2 = (char *) 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  lldb::SBValueList result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (char *)jarg2; 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->FindGlobalVariables((char const *)arg2,arg3);
+  jresult = new lldb::SBValueList((const lldb::SBValueList &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBTarget_Clear(void * jarg1) {
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_ResolveLoadAddress(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::addr_t arg2 ;
+  lldb::addr_t *argp2 ;
+  lldb::SBAddress result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  argp2 = (lldb::addr_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->ResolveLoadAddress(arg2);
+  jresult = new lldb::SBAddress((const lldb::SBAddress &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_ResolveSymbolContextForAddress(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBAddress *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  lldb::SBSymbolContext result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (lldb::SBAddress *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBAddress const & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->ResolveSymbolContextForAddress((lldb::SBAddress const &)*arg2,arg3);
+  jresult = new lldb::SBSymbolContext((const lldb::SBSymbolContext &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_BreakpointCreateByLocation__SWIG_0(void * jarg1, char * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  char *arg2 = (char *) 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  lldb::SBBreakpoint result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (char *)jarg2; 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->BreakpointCreateByLocation((char const *)arg2,arg3);
+  jresult = new lldb::SBBreakpoint((const lldb::SBBreakpoint &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_BreakpointCreateByLocation__SWIG_1(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBFileSpec *arg2 = 0 ;
+  uint32_t arg3 ;
+  uint32_t *argp3 ;
+  lldb::SBBreakpoint result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (lldb::SBFileSpec *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFileSpec const & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->BreakpointCreateByLocation((lldb::SBFileSpec const &)*arg2,arg3);
+  jresult = new lldb::SBBreakpoint((const lldb::SBBreakpoint &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_BreakpointCreateByName__SWIG_0(void * jarg1, char * jarg2, char * jarg3) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  char *arg2 = (char *) 0 ;
+  char *arg3 = (char *) 0 ;
+  lldb::SBBreakpoint result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (char *)jarg3; 
+  result = (arg1)->BreakpointCreateByName((char const *)arg2,(char const *)arg3);
+  jresult = new lldb::SBBreakpoint((const lldb::SBBreakpoint &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_BreakpointCreateByName__SWIG_1(void * jarg1, char * jarg2) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBBreakpoint result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (arg1)->BreakpointCreateByName((char const *)arg2);
+  jresult = new lldb::SBBreakpoint((const lldb::SBBreakpoint &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_BreakpointCreateByName__SWIG_2(void * jarg1, char * jarg2, void * jarg3, void * jarg4, void * jarg5) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  char *arg2 = (char *) 0 ;
+  uint32_t arg3 ;
+  lldb::SBFileSpecList *arg4 = 0 ;
+  lldb::SBFileSpecList *arg5 = 0 ;
+  uint32_t *argp3 ;
+  lldb::SBBreakpoint result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (char *)jarg2; 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  arg4 = (lldb::SBFileSpecList *)jarg4;
+  if (!arg4) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFileSpecList const & type is null", 0);
+    return 0;
+  } 
+  arg5 = (lldb::SBFileSpecList *)jarg5;
+  if (!arg5) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFileSpecList const & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->BreakpointCreateByName((char const *)arg2,arg3,(lldb::SBFileSpecList const &)*arg4,(lldb::SBFileSpecList const &)*arg5);
+  jresult = new lldb::SBBreakpoint((const lldb::SBBreakpoint &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_BreakpointCreateByNames(void * jarg1, void * jarg2, void * jarg3, void * jarg4, void * jarg5, void * jarg6) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  char **arg2 ;
+  uint32_t arg3 ;
+  uint32_t arg4 ;
+  lldb::SBFileSpecList *arg5 = 0 ;
+  lldb::SBFileSpecList *arg6 = 0 ;
+  uint32_t *argp3 ;
+  uint32_t *argp4 ;
+  lldb::SBBreakpoint result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (char **)jarg2; 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  argp4 = (uint32_t *)jarg4; 
+  if (!argp4) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg4 = *argp4; 
+  arg5 = (lldb::SBFileSpecList *)jarg5;
+  if (!arg5) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFileSpecList const & type is null", 0);
+    return 0;
+  } 
+  arg6 = (lldb::SBFileSpecList *)jarg6;
+  if (!arg6) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFileSpecList const & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->BreakpointCreateByNames((char const *(*))arg2,arg3,arg4,(lldb::SBFileSpecList const &)*arg5,(lldb::SBFileSpecList const &)*arg6);
+  jresult = new lldb::SBBreakpoint((const lldb::SBBreakpoint &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_BreakpointCreateByRegex__SWIG_0(void * jarg1, char * jarg2, char * jarg3) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  char *arg2 = (char *) 0 ;
+  char *arg3 = (char *) 0 ;
+  lldb::SBBreakpoint result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (char *)jarg3; 
+  result = (arg1)->BreakpointCreateByRegex((char const *)arg2,(char const *)arg3);
+  jresult = new lldb::SBBreakpoint((const lldb::SBBreakpoint &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_BreakpointCreateByRegex__SWIG_1(void * jarg1, char * jarg2) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBBreakpoint result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (arg1)->BreakpointCreateByRegex((char const *)arg2);
+  jresult = new lldb::SBBreakpoint((const lldb::SBBreakpoint &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_BreakpointCreateBySourceRegex__SWIG_0(void * jarg1, char * jarg2, void * jarg3, char * jarg4) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBFileSpec *arg3 = 0 ;
+  char *arg4 = (char *) 0 ;
+  lldb::SBBreakpoint result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (lldb::SBFileSpec *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFileSpec const & type is null", 0);
+    return 0;
+  } 
+  arg4 = (char *)jarg4; 
+  result = (arg1)->BreakpointCreateBySourceRegex((char const *)arg2,(lldb::SBFileSpec const &)*arg3,(char const *)arg4);
+  jresult = new lldb::SBBreakpoint((const lldb::SBBreakpoint &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_BreakpointCreateBySourceRegex__SWIG_1(void * jarg1, char * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBFileSpec *arg3 = 0 ;
+  lldb::SBBreakpoint result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (lldb::SBFileSpec *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFileSpec const & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->BreakpointCreateBySourceRegex((char const *)arg2,(lldb::SBFileSpec const &)*arg3);
+  jresult = new lldb::SBBreakpoint((const lldb::SBBreakpoint &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_BreakpointCreateForException(void * jarg1, int jarg2, unsigned int jarg3, unsigned int jarg4) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::LanguageType arg2 ;
+  bool arg3 ;
+  bool arg4 ;
+  lldb::SBBreakpoint result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (lldb::LanguageType)jarg2; 
+  arg3 = jarg3 ? true : false; 
+  arg4 = jarg4 ? true : false; 
+  result = (arg1)->BreakpointCreateForException(arg2,arg3,arg4);
+  jresult = new lldb::SBBreakpoint((const lldb::SBBreakpoint &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_BreakpointCreateByAddress(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::addr_t arg2 ;
+  lldb::addr_t *argp2 ;
+  lldb::SBBreakpoint result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  argp2 = (lldb::addr_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->BreakpointCreateByAddress(arg2);
+  jresult = new lldb::SBBreakpoint((const lldb::SBBreakpoint &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_GetNumBreakpoints(void * jarg1) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  result = ((lldb::SBTarget const *)arg1)->GetNumBreakpoints();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_GetBreakpointAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBBreakpoint result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = ((lldb::SBTarget const *)arg1)->GetBreakpointAtIndex(arg2);
+  jresult = new lldb::SBBreakpoint((const lldb::SBBreakpoint &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTarget_BreakpointDelete(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::break_id_t arg2 ;
+  lldb::break_id_t *argp2 ;
+  bool result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  argp2 = (lldb::break_id_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::break_id_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (bool)(arg1)->BreakpointDelete(arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_FindBreakpointByID(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::break_id_t arg2 ;
+  lldb::break_id_t *argp2 ;
+  lldb::SBBreakpoint result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  argp2 = (lldb::break_id_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::break_id_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->FindBreakpointByID(arg2);
+  jresult = new lldb::SBBreakpoint((const lldb::SBBreakpoint &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTarget_EnableAllBreakpoints(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  result = (bool)(arg1)->EnableAllBreakpoints();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTarget_DisableAllBreakpoints(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  result = (bool)(arg1)->DisableAllBreakpoints();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTarget_DeleteAllBreakpoints(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  result = (bool)(arg1)->DeleteAllBreakpoints();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_GetNumWatchpoints(void * jarg1) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  result = ((lldb::SBTarget const *)arg1)->GetNumWatchpoints();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_GetWatchpointAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBWatchpoint result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = ((lldb::SBTarget const *)arg1)->GetWatchpointAtIndex(arg2);
+  jresult = new lldb::SBWatchpoint((const lldb::SBWatchpoint &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTarget_DeleteWatchpoint(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::watch_id_t arg2 ;
+  lldb::watch_id_t *argp2 ;
+  bool result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  argp2 = (lldb::watch_id_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::watch_id_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (bool)(arg1)->DeleteWatchpoint(arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_FindWatchpointByID(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::watch_id_t arg2 ;
+  lldb::watch_id_t *argp2 ;
+  lldb::SBWatchpoint result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  argp2 = (lldb::watch_id_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::watch_id_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->FindWatchpointByID(arg2);
+  jresult = new lldb::SBWatchpoint((const lldb::SBWatchpoint &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTarget_EnableAllWatchpoints(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  result = (bool)(arg1)->EnableAllWatchpoints();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTarget_DisableAllWatchpoints(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  result = (bool)(arg1)->DisableAllWatchpoints();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTarget_DeleteAllWatchpoints(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  result = (bool)(arg1)->DeleteAllWatchpoints();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_WatchAddress(void * jarg1, void * jarg2, unsigned long jarg3, unsigned int jarg4, unsigned int jarg5, void * jarg6) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::addr_t arg2 ;
+  size_t arg3 ;
+  bool arg4 ;
+  bool arg5 ;
+  lldb::SBError *arg6 = 0 ;
+  lldb::addr_t *argp2 ;
+  lldb::SBWatchpoint result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  argp2 = (lldb::addr_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  arg3 = (size_t)jarg3; 
+  arg4 = jarg4 ? true : false; 
+  arg5 = jarg5 ? true : false; 
+  arg6 = (lldb::SBError *)jarg6;
+  if (!arg6) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->WatchAddress(arg2,arg3,arg4,arg5,*arg6);
+  jresult = new lldb::SBWatchpoint((const lldb::SBWatchpoint &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_GetBroadcaster(void * jarg1) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBBroadcaster result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  result = ((lldb::SBTarget const *)arg1)->GetBroadcaster();
+  jresult = new lldb::SBBroadcaster((const lldb::SBBroadcaster &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_ReadInstructions(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBAddress arg2 ;
+  uint32_t arg3 ;
+  lldb::SBAddress *argp2 ;
+  uint32_t *argp3 ;
+  lldb::SBInstructionList result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  argp2 = (lldb::SBAddress *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBAddress", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->ReadInstructions(arg2,arg3);
+  jresult = new lldb::SBInstructionList((const lldb::SBInstructionList &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTarget_GetInstructions(void * jarg1, void * jarg2, void* jarg3, unsigned long jarg4) {
+  void * jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBAddress arg2 ;
+  void *arg3 = (void *) 0 ;
+  size_t arg4 ;
+  lldb::SBAddress *argp2 ;
+  lldb::SBInstructionList result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  argp2 = (lldb::SBAddress *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBAddress", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  arg3 = (void *)jarg3; /* IntPtr */ 
+  arg4 = (size_t)jarg4; 
+  result = (arg1)->GetInstructions(arg2,(void const *)arg3,arg4);
+  jresult = new lldb::SBInstructionList((const lldb::SBInstructionList &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTarget_GetDescription(void * jarg1, void * jarg2, int jarg3) {
+  unsigned int jresult ;
+  lldb::SBTarget *arg1 = (lldb::SBTarget *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  lldb::DescriptionLevel arg3 ;
+  bool result;
+  
+  arg1 = (lldb::SBTarget *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  arg3 = (lldb::DescriptionLevel)jarg3; 
+  result = (bool)(arg1)->GetDescription(*arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBThread__SWIG_0() {
+  void * jresult ;
+  lldb::SBThread *result = 0 ;
+  
+  result = (lldb::SBThread *)new lldb::SBThread();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBThread__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBThread *arg1 = 0 ;
+  lldb::SBThread *result = 0 ;
+  
+  arg1 = (lldb::SBThread *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBThread const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBThread *)new lldb::SBThread((lldb::SBThread const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBThread(void * jarg1) {
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBThread_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  result = (bool)((lldb::SBThread const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBThread_Clear(void * jarg1) {
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBThread_GetStopReason(void * jarg1) {
+  int jresult ;
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  lldb::StopReason result;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  result = (lldb::StopReason)(arg1)->GetStopReason();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBThread_GetStopReasonDataCount(void * jarg1) {
+  unsigned long jresult ;
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  size_t result;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  result = (arg1)->GetStopReasonDataCount();
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBThread_GetStopReasonDataAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  uint64_t result;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetStopReasonDataAtIndex(arg2);
+  jresult = new uint64_t((const uint64_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBThread_GetStopDescription(void * jarg1, char * jarg2, unsigned long jarg3) {
+  unsigned long jresult ;
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  char *arg2 = (char *) 0 ;
+  size_t arg3 ;
+  size_t result;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (size_t)jarg3; 
+  result = (arg1)->GetStopDescription(arg2,arg3);
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBThread_GetStopReturnValue(void * jarg1) {
+  void * jresult ;
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  result = (arg1)->GetStopReturnValue();
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBThread_GetThreadID(void * jarg1) {
+  void * jresult ;
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  lldb::tid_t result;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  result = ((lldb::SBThread const *)arg1)->GetThreadID();
+  jresult = new lldb::tid_t((const lldb::tid_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBThread_GetIndexID(void * jarg1) {
+  void * jresult ;
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  result = ((lldb::SBThread const *)arg1)->GetIndexID();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBThread_GetName(void * jarg1) {
+  char * jresult ;
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  result = (char *)((lldb::SBThread const *)arg1)->GetName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBThread_GetQueueName(void * jarg1) {
+  char * jresult ;
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  result = (char *)((lldb::SBThread const *)arg1)->GetQueueName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBThread_StepOver__SWIG_0(void * jarg1, int jarg2) {
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  lldb::RunMode arg2 ;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  arg2 = (lldb::RunMode)jarg2; 
+  (arg1)->StepOver(arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBThread_StepOver__SWIG_1(void * jarg1) {
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  (arg1)->StepOver();
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBThread_StepInto__SWIG_0(void * jarg1, int jarg2) {
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  lldb::RunMode arg2 ;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  arg2 = (lldb::RunMode)jarg2; 
+  (arg1)->StepInto(arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBThread_StepInto__SWIG_1(void * jarg1) {
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  (arg1)->StepInto();
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBThread_StepOut(void * jarg1) {
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  (arg1)->StepOut();
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBThread_StepOutOfFrame(void * jarg1, void * jarg2) {
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  lldb::SBFrame *arg2 = 0 ;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  arg2 = (lldb::SBFrame *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFrame & type is null", 0);
+    return ;
+  } 
+  (arg1)->StepOutOfFrame(*arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBThread_StepInstruction(void * jarg1, unsigned int jarg2) {
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  bool arg2 ;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  arg2 = jarg2 ? true : false; 
+  (arg1)->StepInstruction(arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBThread_StepOverUntil(void * jarg1, void * jarg2, void * jarg3, void * jarg4) {
+  void * jresult ;
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  lldb::SBFrame *arg2 = 0 ;
+  lldb::SBFileSpec *arg3 = 0 ;
+  uint32_t arg4 ;
+  uint32_t *argp4 ;
+  lldb::SBError result;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  arg2 = (lldb::SBFrame *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFrame & type is null", 0);
+    return 0;
+  } 
+  arg3 = (lldb::SBFileSpec *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBFileSpec & type is null", 0);
+    return 0;
+  } 
+  argp4 = (uint32_t *)jarg4; 
+  if (!argp4) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg4 = *argp4; 
+  result = (arg1)->StepOverUntil(*arg2,*arg3,arg4);
+  jresult = new lldb::SBError((const lldb::SBError &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBThread_RunToAddress(void * jarg1, void * jarg2) {
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  lldb::addr_t arg2 ;
+  lldb::addr_t *argp2 ;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  argp2 = (lldb::addr_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->RunToAddress(arg2);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBThread_Suspend(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  result = (bool)(arg1)->Suspend();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBThread_Resume(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  result = (bool)(arg1)->Resume();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBThread_IsSuspended(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  result = (bool)(arg1)->IsSuspended();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBThread_GetNumFrames(void * jarg1) {
+  void * jresult ;
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  result = (arg1)->GetNumFrames();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBThread_GetFrameAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBFrame result;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetFrameAtIndex(arg2);
+  jresult = new lldb::SBFrame((const lldb::SBFrame &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBThread_GetSelectedFrame(void * jarg1) {
+  void * jresult ;
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  lldb::SBFrame result;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  result = (arg1)->GetSelectedFrame();
+  jresult = new lldb::SBFrame((const lldb::SBFrame &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBThread_SetSelectedFrame(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBFrame result;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->SetSelectedFrame(arg2);
+  jresult = new lldb::SBFrame((const lldb::SBFrame &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBThread_GetProcess(void * jarg1) {
+  void * jresult ;
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  lldb::SBProcess result;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  result = (arg1)->GetProcess();
+  jresult = new lldb::SBProcess((const lldb::SBProcess &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBThread_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBThread *arg1 = (lldb::SBThread *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBThread *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)((lldb::SBThread const *)arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTypeMember__SWIG_0() {
+  void * jresult ;
+  lldb::SBTypeMember *result = 0 ;
+  
+  result = (lldb::SBTypeMember *)new lldb::SBTypeMember();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTypeMember__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeMember *arg1 = 0 ;
+  lldb::SBTypeMember *result = 0 ;
+  
+  arg1 = (lldb::SBTypeMember *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBTypeMember const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBTypeMember *)new lldb::SBTypeMember((lldb::SBTypeMember const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBTypeMember(void * jarg1) {
+  lldb::SBTypeMember *arg1 = (lldb::SBTypeMember *) 0 ;
+  
+  arg1 = (lldb::SBTypeMember *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeMember_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTypeMember *arg1 = (lldb::SBTypeMember *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeMember *)jarg1; 
+  result = (bool)((lldb::SBTypeMember const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBTypeMember_GetName(void * jarg1) {
+  char * jresult ;
+  lldb::SBTypeMember *arg1 = (lldb::SBTypeMember *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBTypeMember *)jarg1; 
+  result = (char *)(arg1)->GetName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeMember_GetType(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeMember *arg1 = (lldb::SBTypeMember *) 0 ;
+  lldb::SBType result;
+  
+  arg1 = (lldb::SBTypeMember *)jarg1; 
+  result = (arg1)->GetType();
+  jresult = new lldb::SBType((const lldb::SBType &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeMember_GetOffsetInBytes(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeMember *arg1 = (lldb::SBTypeMember *) 0 ;
+  uint64_t result;
+  
+  arg1 = (lldb::SBTypeMember *)jarg1; 
+  result = (arg1)->GetOffsetInBytes();
+  jresult = new uint64_t((const uint64_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeMember_GetOffsetInBits(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeMember *arg1 = (lldb::SBTypeMember *) 0 ;
+  uint64_t result;
+  
+  arg1 = (lldb::SBTypeMember *)jarg1; 
+  result = (arg1)->GetOffsetInBits();
+  jresult = new uint64_t((const uint64_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeMember_IsBitfield(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTypeMember *arg1 = (lldb::SBTypeMember *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeMember *)jarg1; 
+  result = (bool)(arg1)->IsBitfield();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeMember_GetBitfieldSizeInBits(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeMember *arg1 = (lldb::SBTypeMember *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBTypeMember *)jarg1; 
+  result = (arg1)->GetBitfieldSizeInBits();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBType__SWIG_0() {
+  void * jresult ;
+  lldb::SBType *result = 0 ;
+  
+  result = (lldb::SBType *)new lldb::SBType();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBType__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBType *arg1 = 0 ;
+  lldb::SBType *result = 0 ;
+  
+  arg1 = (lldb::SBType *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBType const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBType *)new lldb::SBType((lldb::SBType const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBType(void * jarg1) {
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBType_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  result = (bool)(arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBType_GetByteSize(void * jarg1) {
+  unsigned long jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  size_t result;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  result = (arg1)->GetByteSize();
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBType_IsPointerType(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  result = (bool)(arg1)->IsPointerType();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBType_IsReferenceType(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  result = (bool)(arg1)->IsReferenceType();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBType_GetPointerType(void * jarg1) {
+  void * jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  lldb::SBType result;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  result = (arg1)->GetPointerType();
+  jresult = new lldb::SBType((const lldb::SBType &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBType_GetPointeeType(void * jarg1) {
+  void * jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  lldb::SBType result;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  result = (arg1)->GetPointeeType();
+  jresult = new lldb::SBType((const lldb::SBType &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBType_GetReferenceType(void * jarg1) {
+  void * jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  lldb::SBType result;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  result = (arg1)->GetReferenceType();
+  jresult = new lldb::SBType((const lldb::SBType &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBType_GetDereferencedType(void * jarg1) {
+  void * jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  lldb::SBType result;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  result = (arg1)->GetDereferencedType();
+  jresult = new lldb::SBType((const lldb::SBType &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBType_GetUnqualifiedType(void * jarg1) {
+  void * jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  lldb::SBType result;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  result = (arg1)->GetUnqualifiedType();
+  jresult = new lldb::SBType((const lldb::SBType &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBType_GetBasicType(void * jarg1, int jarg2) {
+  void * jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  lldb::BasicType arg2 ;
+  lldb::SBType result;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  arg2 = (lldb::BasicType)jarg2; 
+  result = (arg1)->GetBasicType(arg2);
+  jresult = new lldb::SBType((const lldb::SBType &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBType_GetNumberOfFields(void * jarg1) {
+  void * jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  result = (arg1)->GetNumberOfFields();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBType_GetNumberOfDirectBaseClasses(void * jarg1) {
+  void * jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  result = (arg1)->GetNumberOfDirectBaseClasses();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBType_GetNumberOfVirtualBaseClasses(void * jarg1) {
+  void * jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  result = (arg1)->GetNumberOfVirtualBaseClasses();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBType_GetFieldAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBTypeMember result;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetFieldAtIndex(arg2);
+  jresult = new lldb::SBTypeMember((const lldb::SBTypeMember &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBType_GetDirectBaseClassAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBTypeMember result;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetDirectBaseClassAtIndex(arg2);
+  jresult = new lldb::SBTypeMember((const lldb::SBTypeMember &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBType_GetVirtualBaseClassAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBTypeMember result;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetVirtualBaseClassAtIndex(arg2);
+  jresult = new lldb::SBTypeMember((const lldb::SBTypeMember &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBType_GetName(void * jarg1) {
+  char * jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  result = (char *)(arg1)->GetName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBType_GetTypeClass(void * jarg1) {
+  int jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  lldb::TypeClass result;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  result = (lldb::TypeClass)(arg1)->GetTypeClass();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBType_GetNumberOfTemplateArguments(void * jarg1) {
+  void * jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  result = (arg1)->GetNumberOfTemplateArguments();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBType_GetTemplateArgumentType(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBType result;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetTemplateArgumentType(arg2);
+  jresult = new lldb::SBType((const lldb::SBType &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBType_GetTemplateArgumentKind(void * jarg1, void * jarg2) {
+  int jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::TemplateArgumentKind result;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (lldb::TemplateArgumentKind)(arg1)->GetTemplateArgumentKind(arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBType_IsTypeComplete(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBType *arg1 = (lldb::SBType *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBType *)jarg1; 
+  result = (bool)(arg1)->IsTypeComplete();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTypeList() {
+  void * jresult ;
+  lldb::SBTypeList *result = 0 ;
+  
+  result = (lldb::SBTypeList *)new lldb::SBTypeList();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeList_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTypeList *arg1 = (lldb::SBTypeList *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeList *)jarg1; 
+  result = (bool)(arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBTypeList_Append(void * jarg1, void * jarg2) {
+  lldb::SBTypeList *arg1 = (lldb::SBTypeList *) 0 ;
+  lldb::SBType arg2 ;
+  lldb::SBType *argp2 ;
+  
+  arg1 = (lldb::SBTypeList *)jarg1; 
+  argp2 = (lldb::SBType *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBType", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->Append(arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeList_GetTypeAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTypeList *arg1 = (lldb::SBTypeList *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBType result;
+  
+  arg1 = (lldb::SBTypeList *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetTypeAtIndex(arg2);
+  jresult = new lldb::SBType((const lldb::SBType &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeList_GetSize(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeList *arg1 = (lldb::SBTypeList *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBTypeList *)jarg1; 
+  result = (arg1)->GetSize();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBTypeList(void * jarg1) {
+  lldb::SBTypeList *arg1 = (lldb::SBTypeList *) 0 ;
+  
+  arg1 = (lldb::SBTypeList *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTypeCategory__SWIG_0() {
+  void * jresult ;
+  lldb::SBTypeCategory *result = 0 ;
+  
+  result = (lldb::SBTypeCategory *)new lldb::SBTypeCategory();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTypeCategory__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeCategory *arg1 = 0 ;
+  lldb::SBTypeCategory *result = 0 ;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBTypeCategory const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBTypeCategory *)new lldb::SBTypeCategory((lldb::SBTypeCategory const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBTypeCategory(void * jarg1) {
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeCategory_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  result = (bool)((lldb::SBTypeCategory const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeCategory_GetEnabled(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  result = (bool)(arg1)->GetEnabled();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBTypeCategory_SetEnabled(void * jarg1, unsigned int jarg2) {
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  bool arg2 ;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  arg2 = jarg2 ? true : false; 
+  (arg1)->SetEnabled(arg2);
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBTypeCategory_GetName(void * jarg1) {
+  char * jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  result = (char *)(arg1)->GetName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeCategory_GetDescription(void * jarg1, void * jarg2, int jarg3) {
+  unsigned int jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  lldb::DescriptionLevel arg3 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  arg3 = (lldb::DescriptionLevel)jarg3; 
+  result = (bool)(arg1)->GetDescription(*arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeCategory_GetNumFormats(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  result = (arg1)->GetNumFormats();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeCategory_GetNumSummaries(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  result = (arg1)->GetNumSummaries();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeCategory_GetNumFilters(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  result = (arg1)->GetNumFilters();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeCategory_GetNumSynthetics(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  result = (arg1)->GetNumSynthetics();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeCategory_GetTypeNameSpecifierForFilterAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBTypeNameSpecifier result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetTypeNameSpecifierForFilterAtIndex(arg2);
+  jresult = new lldb::SBTypeNameSpecifier((const lldb::SBTypeNameSpecifier &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeCategory_GetTypeNameSpecifierForFormatAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBTypeNameSpecifier result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetTypeNameSpecifierForFormatAtIndex(arg2);
+  jresult = new lldb::SBTypeNameSpecifier((const lldb::SBTypeNameSpecifier &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeCategory_GetTypeNameSpecifierForSummaryAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBTypeNameSpecifier result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetTypeNameSpecifierForSummaryAtIndex(arg2);
+  jresult = new lldb::SBTypeNameSpecifier((const lldb::SBTypeNameSpecifier &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeCategory_GetTypeNameSpecifierForSyntheticAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBTypeNameSpecifier result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetTypeNameSpecifierForSyntheticAtIndex(arg2);
+  jresult = new lldb::SBTypeNameSpecifier((const lldb::SBTypeNameSpecifier &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeCategory_GetFilterForType(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  lldb::SBTypeNameSpecifier arg2 ;
+  lldb::SBTypeNameSpecifier *argp2 ;
+  lldb::SBTypeFilter result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  argp2 = (lldb::SBTypeNameSpecifier *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTypeNameSpecifier", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetFilterForType(arg2);
+  jresult = new lldb::SBTypeFilter((const lldb::SBTypeFilter &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeCategory_GetFormatForType(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  lldb::SBTypeNameSpecifier arg2 ;
+  lldb::SBTypeNameSpecifier *argp2 ;
+  lldb::SBTypeFormat result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  argp2 = (lldb::SBTypeNameSpecifier *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTypeNameSpecifier", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetFormatForType(arg2);
+  jresult = new lldb::SBTypeFormat((const lldb::SBTypeFormat &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeCategory_GetSummaryForType(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  lldb::SBTypeNameSpecifier arg2 ;
+  lldb::SBTypeNameSpecifier *argp2 ;
+  lldb::SBTypeSummary result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  argp2 = (lldb::SBTypeNameSpecifier *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTypeNameSpecifier", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetSummaryForType(arg2);
+  jresult = new lldb::SBTypeSummary((const lldb::SBTypeSummary &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeCategory_GetSyntheticForType(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  lldb::SBTypeNameSpecifier arg2 ;
+  lldb::SBTypeNameSpecifier *argp2 ;
+  lldb::SBTypeSynthetic result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  argp2 = (lldb::SBTypeNameSpecifier *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTypeNameSpecifier", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetSyntheticForType(arg2);
+  jresult = new lldb::SBTypeSynthetic((const lldb::SBTypeSynthetic &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeCategory_GetFilterAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBTypeFilter result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetFilterAtIndex(arg2);
+  jresult = new lldb::SBTypeFilter((const lldb::SBTypeFilter &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeCategory_GetFormatAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBTypeFormat result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetFormatAtIndex(arg2);
+  jresult = new lldb::SBTypeFormat((const lldb::SBTypeFormat &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeCategory_GetSummaryAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBTypeSummary result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetSummaryAtIndex(arg2);
+  jresult = new lldb::SBTypeSummary((const lldb::SBTypeSummary &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeCategory_GetSyntheticAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBTypeSynthetic result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetSyntheticAtIndex(arg2);
+  jresult = new lldb::SBTypeSynthetic((const lldb::SBTypeSynthetic &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeCategory_AddTypeFormat(void * jarg1, void * jarg2, void * jarg3) {
+  unsigned int jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  lldb::SBTypeNameSpecifier arg2 ;
+  lldb::SBTypeFormat arg3 ;
+  lldb::SBTypeNameSpecifier *argp2 ;
+  lldb::SBTypeFormat *argp3 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  argp2 = (lldb::SBTypeNameSpecifier *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTypeNameSpecifier", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  argp3 = (lldb::SBTypeFormat *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTypeFormat", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (bool)(arg1)->AddTypeFormat(arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeCategory_DeleteTypeFormat(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  lldb::SBTypeNameSpecifier arg2 ;
+  lldb::SBTypeNameSpecifier *argp2 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  argp2 = (lldb::SBTypeNameSpecifier *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTypeNameSpecifier", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (bool)(arg1)->DeleteTypeFormat(arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeCategory_AddTypeSummary(void * jarg1, void * jarg2, void * jarg3) {
+  unsigned int jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  lldb::SBTypeNameSpecifier arg2 ;
+  lldb::SBTypeSummary arg3 ;
+  lldb::SBTypeNameSpecifier *argp2 ;
+  lldb::SBTypeSummary *argp3 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  argp2 = (lldb::SBTypeNameSpecifier *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTypeNameSpecifier", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  argp3 = (lldb::SBTypeSummary *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTypeSummary", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (bool)(arg1)->AddTypeSummary(arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeCategory_DeleteTypeSummary(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  lldb::SBTypeNameSpecifier arg2 ;
+  lldb::SBTypeNameSpecifier *argp2 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  argp2 = (lldb::SBTypeNameSpecifier *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTypeNameSpecifier", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (bool)(arg1)->DeleteTypeSummary(arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeCategory_AddTypeFilter(void * jarg1, void * jarg2, void * jarg3) {
+  unsigned int jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  lldb::SBTypeNameSpecifier arg2 ;
+  lldb::SBTypeFilter arg3 ;
+  lldb::SBTypeNameSpecifier *argp2 ;
+  lldb::SBTypeFilter *argp3 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  argp2 = (lldb::SBTypeNameSpecifier *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTypeNameSpecifier", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  argp3 = (lldb::SBTypeFilter *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTypeFilter", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (bool)(arg1)->AddTypeFilter(arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeCategory_DeleteTypeFilter(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  lldb::SBTypeNameSpecifier arg2 ;
+  lldb::SBTypeNameSpecifier *argp2 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  argp2 = (lldb::SBTypeNameSpecifier *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTypeNameSpecifier", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (bool)(arg1)->DeleteTypeFilter(arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeCategory_AddTypeSynthetic(void * jarg1, void * jarg2, void * jarg3) {
+  unsigned int jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  lldb::SBTypeNameSpecifier arg2 ;
+  lldb::SBTypeSynthetic arg3 ;
+  lldb::SBTypeNameSpecifier *argp2 ;
+  lldb::SBTypeSynthetic *argp3 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  argp2 = (lldb::SBTypeNameSpecifier *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTypeNameSpecifier", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  argp3 = (lldb::SBTypeSynthetic *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTypeSynthetic", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (bool)(arg1)->AddTypeSynthetic(arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeCategory_DeleteTypeSynthetic(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBTypeCategory *arg1 = (lldb::SBTypeCategory *) 0 ;
+  lldb::SBTypeNameSpecifier arg2 ;
+  lldb::SBTypeNameSpecifier *argp2 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeCategory *)jarg1; 
+  argp2 = (lldb::SBTypeNameSpecifier *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBTypeNameSpecifier", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (bool)(arg1)->DeleteTypeSynthetic(arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTypeFilter__SWIG_0() {
+  void * jresult ;
+  lldb::SBTypeFilter *result = 0 ;
+  
+  result = (lldb::SBTypeFilter *)new lldb::SBTypeFilter();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTypeFilter__SWIG_1(void * jarg1) {
+  void * jresult ;
+  uint32_t arg1 ;
+  uint32_t *argp1 ;
+  lldb::SBTypeFilter *result = 0 ;
+  
+  argp1 = (uint32_t *)jarg1; 
+  if (!argp1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg1 = *argp1; 
+  result = (lldb::SBTypeFilter *)new lldb::SBTypeFilter(arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTypeFilter__SWIG_2(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeFilter *arg1 = 0 ;
+  lldb::SBTypeFilter *result = 0 ;
+  
+  arg1 = (lldb::SBTypeFilter *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBTypeFilter const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBTypeFilter *)new lldb::SBTypeFilter((lldb::SBTypeFilter const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBTypeFilter(void * jarg1) {
+  lldb::SBTypeFilter *arg1 = (lldb::SBTypeFilter *) 0 ;
+  
+  arg1 = (lldb::SBTypeFilter *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeFilter_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTypeFilter *arg1 = (lldb::SBTypeFilter *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeFilter *)jarg1; 
+  result = (bool)((lldb::SBTypeFilter const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeFilter_IsEqualTo(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBTypeFilter *arg1 = (lldb::SBTypeFilter *) 0 ;
+  lldb::SBTypeFilter *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeFilter *)jarg1; 
+  arg2 = (lldb::SBTypeFilter *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBTypeFilter & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->IsEqualTo(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeFilter_GetNumberOfExpressionPaths(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeFilter *arg1 = (lldb::SBTypeFilter *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBTypeFilter *)jarg1; 
+  result = (arg1)->GetNumberOfExpressionPaths();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBTypeFilter_GetExpressionPathAtIndex(void * jarg1, void * jarg2) {
+  char * jresult ;
+  lldb::SBTypeFilter *arg1 = (lldb::SBTypeFilter *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBTypeFilter *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (char *)(arg1)->GetExpressionPathAtIndex(arg2);
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeFilter_ReplaceExpressionPathAtIndex(void * jarg1, void * jarg2, char * jarg3) {
+  unsigned int jresult ;
+  lldb::SBTypeFilter *arg1 = (lldb::SBTypeFilter *) 0 ;
+  uint32_t arg2 ;
+  char *arg3 = (char *) 0 ;
+  uint32_t *argp2 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeFilter *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  arg3 = (char *)jarg3; 
+  result = (bool)(arg1)->ReplaceExpressionPathAtIndex(arg2,(char const *)arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBTypeFilter_AppendExpressionPath(void * jarg1, char * jarg2) {
+  lldb::SBTypeFilter *arg1 = (lldb::SBTypeFilter *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBTypeFilter *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->AppendExpressionPath((char const *)arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBTypeFilter_Clear(void * jarg1) {
+  lldb::SBTypeFilter *arg1 = (lldb::SBTypeFilter *) 0 ;
+  
+  arg1 = (lldb::SBTypeFilter *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeFilter_GetOptions(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeFilter *arg1 = (lldb::SBTypeFilter *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBTypeFilter *)jarg1; 
+  result = (arg1)->GetOptions();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBTypeFilter_SetOptions(void * jarg1, void * jarg2) {
+  lldb::SBTypeFilter *arg1 = (lldb::SBTypeFilter *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBTypeFilter *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetOptions(arg2);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeFilter_GetDescription(void * jarg1, void * jarg2, int jarg3) {
+  unsigned int jresult ;
+  lldb::SBTypeFilter *arg1 = (lldb::SBTypeFilter *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  lldb::DescriptionLevel arg3 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeFilter *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  arg3 = (lldb::DescriptionLevel)jarg3; 
+  result = (bool)(arg1)->GetDescription(*arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTypeFormat__SWIG_0() {
+  void * jresult ;
+  lldb::SBTypeFormat *result = 0 ;
+  
+  result = (lldb::SBTypeFormat *)new lldb::SBTypeFormat();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTypeFormat__SWIG_1(int jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::Format arg1 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBTypeFormat *result = 0 ;
+  
+  arg1 = (lldb::Format)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (lldb::SBTypeFormat *)new lldb::SBTypeFormat(arg1,arg2);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTypeFormat__SWIG_2(int jarg1) {
+  void * jresult ;
+  lldb::Format arg1 ;
+  lldb::SBTypeFormat *result = 0 ;
+  
+  arg1 = (lldb::Format)jarg1; 
+  result = (lldb::SBTypeFormat *)new lldb::SBTypeFormat(arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTypeFormat__SWIG_3(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeFormat *arg1 = 0 ;
+  lldb::SBTypeFormat *result = 0 ;
+  
+  arg1 = (lldb::SBTypeFormat *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBTypeFormat const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBTypeFormat *)new lldb::SBTypeFormat((lldb::SBTypeFormat const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBTypeFormat(void * jarg1) {
+  lldb::SBTypeFormat *arg1 = (lldb::SBTypeFormat *) 0 ;
+  
+  arg1 = (lldb::SBTypeFormat *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeFormat_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTypeFormat *arg1 = (lldb::SBTypeFormat *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeFormat *)jarg1; 
+  result = (bool)((lldb::SBTypeFormat const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeFormat_IsEqualTo(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBTypeFormat *arg1 = (lldb::SBTypeFormat *) 0 ;
+  lldb::SBTypeFormat *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeFormat *)jarg1; 
+  arg2 = (lldb::SBTypeFormat *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBTypeFormat & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->IsEqualTo(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBTypeFormat_GetFormat(void * jarg1) {
+  int jresult ;
+  lldb::SBTypeFormat *arg1 = (lldb::SBTypeFormat *) 0 ;
+  lldb::Format result;
+  
+  arg1 = (lldb::SBTypeFormat *)jarg1; 
+  result = (lldb::Format)(arg1)->GetFormat();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeFormat_GetOptions(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeFormat *arg1 = (lldb::SBTypeFormat *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBTypeFormat *)jarg1; 
+  result = (arg1)->GetOptions();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBTypeFormat_SetFormat(void * jarg1, int jarg2) {
+  lldb::SBTypeFormat *arg1 = (lldb::SBTypeFormat *) 0 ;
+  lldb::Format arg2 ;
+  
+  arg1 = (lldb::SBTypeFormat *)jarg1; 
+  arg2 = (lldb::Format)jarg2; 
+  (arg1)->SetFormat(arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBTypeFormat_SetOptions(void * jarg1, void * jarg2) {
+  lldb::SBTypeFormat *arg1 = (lldb::SBTypeFormat *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBTypeFormat *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetOptions(arg2);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeFormat_GetDescription(void * jarg1, void * jarg2, int jarg3) {
+  unsigned int jresult ;
+  lldb::SBTypeFormat *arg1 = (lldb::SBTypeFormat *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  lldb::DescriptionLevel arg3 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeFormat *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  arg3 = (lldb::DescriptionLevel)jarg3; 
+  result = (bool)(arg1)->GetDescription(*arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTypeNameSpecifier__SWIG_0() {
+  void * jresult ;
+  lldb::SBTypeNameSpecifier *result = 0 ;
+  
+  result = (lldb::SBTypeNameSpecifier *)new lldb::SBTypeNameSpecifier();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTypeNameSpecifier__SWIG_1(char * jarg1, unsigned int jarg2) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  bool arg2 ;
+  lldb::SBTypeNameSpecifier *result = 0 ;
+  
+  arg1 = (char *)jarg1; 
+  arg2 = jarg2 ? true : false; 
+  result = (lldb::SBTypeNameSpecifier *)new lldb::SBTypeNameSpecifier((char const *)arg1,arg2);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTypeNameSpecifier__SWIG_2(char * jarg1) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  lldb::SBTypeNameSpecifier *result = 0 ;
+  
+  arg1 = (char *)jarg1; 
+  result = (lldb::SBTypeNameSpecifier *)new lldb::SBTypeNameSpecifier((char const *)arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTypeNameSpecifier__SWIG_3(void * jarg1) {
+  void * jresult ;
+  lldb::SBType arg1 ;
+  lldb::SBType *argp1 ;
+  lldb::SBTypeNameSpecifier *result = 0 ;
+  
+  argp1 = (lldb::SBType *)jarg1; 
+  if (!argp1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBType", 0);
+    return 0;
+  }
+  arg1 = *argp1; 
+  result = (lldb::SBTypeNameSpecifier *)new lldb::SBTypeNameSpecifier(arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTypeNameSpecifier__SWIG_4(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeNameSpecifier *arg1 = 0 ;
+  lldb::SBTypeNameSpecifier *result = 0 ;
+  
+  arg1 = (lldb::SBTypeNameSpecifier *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBTypeNameSpecifier const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBTypeNameSpecifier *)new lldb::SBTypeNameSpecifier((lldb::SBTypeNameSpecifier const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBTypeNameSpecifier(void * jarg1) {
+  lldb::SBTypeNameSpecifier *arg1 = (lldb::SBTypeNameSpecifier *) 0 ;
+  
+  arg1 = (lldb::SBTypeNameSpecifier *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeNameSpecifier_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTypeNameSpecifier *arg1 = (lldb::SBTypeNameSpecifier *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeNameSpecifier *)jarg1; 
+  result = (bool)((lldb::SBTypeNameSpecifier const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeNameSpecifier_IsEqualTo(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBTypeNameSpecifier *arg1 = (lldb::SBTypeNameSpecifier *) 0 ;
+  lldb::SBTypeNameSpecifier *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeNameSpecifier *)jarg1; 
+  arg2 = (lldb::SBTypeNameSpecifier *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBTypeNameSpecifier & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->IsEqualTo(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBTypeNameSpecifier_GetName(void * jarg1) {
+  char * jresult ;
+  lldb::SBTypeNameSpecifier *arg1 = (lldb::SBTypeNameSpecifier *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBTypeNameSpecifier *)jarg1; 
+  result = (char *)(arg1)->GetName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeNameSpecifier_GetType(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeNameSpecifier *arg1 = (lldb::SBTypeNameSpecifier *) 0 ;
+  lldb::SBType result;
+  
+  arg1 = (lldb::SBTypeNameSpecifier *)jarg1; 
+  result = (arg1)->GetType();
+  jresult = new lldb::SBType((const lldb::SBType &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeNameSpecifier_IsRegex(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTypeNameSpecifier *arg1 = (lldb::SBTypeNameSpecifier *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeNameSpecifier *)jarg1; 
+  result = (bool)(arg1)->IsRegex();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeNameSpecifier_GetDescription(void * jarg1, void * jarg2, int jarg3) {
+  unsigned int jresult ;
+  lldb::SBTypeNameSpecifier *arg1 = (lldb::SBTypeNameSpecifier *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  lldb::DescriptionLevel arg3 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeNameSpecifier *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  arg3 = (lldb::DescriptionLevel)jarg3; 
+  result = (bool)(arg1)->GetDescription(*arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTypeSummary__SWIG_0() {
+  void * jresult ;
+  lldb::SBTypeSummary *result = 0 ;
+  
+  result = (lldb::SBTypeSummary *)new lldb::SBTypeSummary();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeSummary_CreateWithSummaryString__SWIG_0(char * jarg1, void * jarg2) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBTypeSummary result;
+  
+  arg1 = (char *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = lldb::SBTypeSummary::CreateWithSummaryString((char const *)arg1,arg2);
+  jresult = new lldb::SBTypeSummary((const lldb::SBTypeSummary &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeSummary_CreateWithSummaryString__SWIG_1(char * jarg1) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  lldb::SBTypeSummary result;
+  
+  arg1 = (char *)jarg1; 
+  result = lldb::SBTypeSummary::CreateWithSummaryString((char const *)arg1);
+  jresult = new lldb::SBTypeSummary((const lldb::SBTypeSummary &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeSummary_CreateWithFunctionName__SWIG_0(char * jarg1, void * jarg2) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBTypeSummary result;
+  
+  arg1 = (char *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = lldb::SBTypeSummary::CreateWithFunctionName((char const *)arg1,arg2);
+  jresult = new lldb::SBTypeSummary((const lldb::SBTypeSummary &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeSummary_CreateWithFunctionName__SWIG_1(char * jarg1) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  lldb::SBTypeSummary result;
+  
+  arg1 = (char *)jarg1; 
+  result = lldb::SBTypeSummary::CreateWithFunctionName((char const *)arg1);
+  jresult = new lldb::SBTypeSummary((const lldb::SBTypeSummary &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeSummary_CreateWithScriptCode__SWIG_0(char * jarg1, void * jarg2) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBTypeSummary result;
+  
+  arg1 = (char *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = lldb::SBTypeSummary::CreateWithScriptCode((char const *)arg1,arg2);
+  jresult = new lldb::SBTypeSummary((const lldb::SBTypeSummary &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeSummary_CreateWithScriptCode__SWIG_1(char * jarg1) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  lldb::SBTypeSummary result;
+  
+  arg1 = (char *)jarg1; 
+  result = lldb::SBTypeSummary::CreateWithScriptCode((char const *)arg1);
+  jresult = new lldb::SBTypeSummary((const lldb::SBTypeSummary &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTypeSummary__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeSummary *arg1 = 0 ;
+  lldb::SBTypeSummary *result = 0 ;
+  
+  arg1 = (lldb::SBTypeSummary *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBTypeSummary const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBTypeSummary *)new lldb::SBTypeSummary((lldb::SBTypeSummary const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBTypeSummary(void * jarg1) {
+  lldb::SBTypeSummary *arg1 = (lldb::SBTypeSummary *) 0 ;
+  
+  arg1 = (lldb::SBTypeSummary *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeSummary_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTypeSummary *arg1 = (lldb::SBTypeSummary *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeSummary *)jarg1; 
+  result = (bool)((lldb::SBTypeSummary const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeSummary_IsEqualTo(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBTypeSummary *arg1 = (lldb::SBTypeSummary *) 0 ;
+  lldb::SBTypeSummary *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeSummary *)jarg1; 
+  arg2 = (lldb::SBTypeSummary *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBTypeSummary & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->IsEqualTo(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeSummary_IsFunctionCode(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTypeSummary *arg1 = (lldb::SBTypeSummary *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeSummary *)jarg1; 
+  result = (bool)(arg1)->IsFunctionCode();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeSummary_IsFunctionName(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTypeSummary *arg1 = (lldb::SBTypeSummary *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeSummary *)jarg1; 
+  result = (bool)(arg1)->IsFunctionName();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeSummary_IsSummaryString(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTypeSummary *arg1 = (lldb::SBTypeSummary *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeSummary *)jarg1; 
+  result = (bool)(arg1)->IsSummaryString();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBTypeSummary_GetData(void * jarg1) {
+  char * jresult ;
+  lldb::SBTypeSummary *arg1 = (lldb::SBTypeSummary *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBTypeSummary *)jarg1; 
+  result = (char *)(arg1)->GetData();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBTypeSummary_SetSummaryString(void * jarg1, char * jarg2) {
+  lldb::SBTypeSummary *arg1 = (lldb::SBTypeSummary *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBTypeSummary *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->SetSummaryString((char const *)arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBTypeSummary_SetFunctionName(void * jarg1, char * jarg2) {
+  lldb::SBTypeSummary *arg1 = (lldb::SBTypeSummary *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBTypeSummary *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->SetFunctionName((char const *)arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBTypeSummary_SetFunctionCode(void * jarg1, char * jarg2) {
+  lldb::SBTypeSummary *arg1 = (lldb::SBTypeSummary *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBTypeSummary *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->SetFunctionCode((char const *)arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeSummary_GetOptions(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeSummary *arg1 = (lldb::SBTypeSummary *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBTypeSummary *)jarg1; 
+  result = (arg1)->GetOptions();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBTypeSummary_SetOptions(void * jarg1, void * jarg2) {
+  lldb::SBTypeSummary *arg1 = (lldb::SBTypeSummary *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBTypeSummary *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetOptions(arg2);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeSummary_GetDescription(void * jarg1, void * jarg2, int jarg3) {
+  unsigned int jresult ;
+  lldb::SBTypeSummary *arg1 = (lldb::SBTypeSummary *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  lldb::DescriptionLevel arg3 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeSummary *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  arg3 = (lldb::DescriptionLevel)jarg3; 
+  result = (bool)(arg1)->GetDescription(*arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTypeSynthetic__SWIG_0() {
+  void * jresult ;
+  lldb::SBTypeSynthetic *result = 0 ;
+  
+  result = (lldb::SBTypeSynthetic *)new lldb::SBTypeSynthetic();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeSynthetic_CreateWithClassName__SWIG_0(char * jarg1, void * jarg2) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBTypeSynthetic result;
+  
+  arg1 = (char *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = lldb::SBTypeSynthetic::CreateWithClassName((char const *)arg1,arg2);
+  jresult = new lldb::SBTypeSynthetic((const lldb::SBTypeSynthetic &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeSynthetic_CreateWithClassName__SWIG_1(char * jarg1) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  lldb::SBTypeSynthetic result;
+  
+  arg1 = (char *)jarg1; 
+  result = lldb::SBTypeSynthetic::CreateWithClassName((char const *)arg1);
+  jresult = new lldb::SBTypeSynthetic((const lldb::SBTypeSynthetic &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeSynthetic_CreateWithScriptCode__SWIG_0(char * jarg1, void * jarg2) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBTypeSynthetic result;
+  
+  arg1 = (char *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = lldb::SBTypeSynthetic::CreateWithScriptCode((char const *)arg1,arg2);
+  jresult = new lldb::SBTypeSynthetic((const lldb::SBTypeSynthetic &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeSynthetic_CreateWithScriptCode__SWIG_1(char * jarg1) {
+  void * jresult ;
+  char *arg1 = (char *) 0 ;
+  lldb::SBTypeSynthetic result;
+  
+  arg1 = (char *)jarg1; 
+  result = lldb::SBTypeSynthetic::CreateWithScriptCode((char const *)arg1);
+  jresult = new lldb::SBTypeSynthetic((const lldb::SBTypeSynthetic &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBTypeSynthetic__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeSynthetic *arg1 = 0 ;
+  lldb::SBTypeSynthetic *result = 0 ;
+  
+  arg1 = (lldb::SBTypeSynthetic *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBTypeSynthetic const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBTypeSynthetic *)new lldb::SBTypeSynthetic((lldb::SBTypeSynthetic const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBTypeSynthetic(void * jarg1) {
+  lldb::SBTypeSynthetic *arg1 = (lldb::SBTypeSynthetic *) 0 ;
+  
+  arg1 = (lldb::SBTypeSynthetic *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeSynthetic_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTypeSynthetic *arg1 = (lldb::SBTypeSynthetic *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeSynthetic *)jarg1; 
+  result = (bool)((lldb::SBTypeSynthetic const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeSynthetic_IsEqualTo(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBTypeSynthetic *arg1 = (lldb::SBTypeSynthetic *) 0 ;
+  lldb::SBTypeSynthetic *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeSynthetic *)jarg1; 
+  arg2 = (lldb::SBTypeSynthetic *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBTypeSynthetic & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->IsEqualTo(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeSynthetic_IsClassCode(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBTypeSynthetic *arg1 = (lldb::SBTypeSynthetic *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeSynthetic *)jarg1; 
+  result = (bool)(arg1)->IsClassCode();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBTypeSynthetic_GetData(void * jarg1) {
+  char * jresult ;
+  lldb::SBTypeSynthetic *arg1 = (lldb::SBTypeSynthetic *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBTypeSynthetic *)jarg1; 
+  result = (char *)(arg1)->GetData();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBTypeSynthetic_SetClassName(void * jarg1, char * jarg2) {
+  lldb::SBTypeSynthetic *arg1 = (lldb::SBTypeSynthetic *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBTypeSynthetic *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->SetClassName((char const *)arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBTypeSynthetic_SetClassCode(void * jarg1, char * jarg2) {
+  lldb::SBTypeSynthetic *arg1 = (lldb::SBTypeSynthetic *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBTypeSynthetic *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->SetClassCode((char const *)arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBTypeSynthetic_GetOptions(void * jarg1) {
+  void * jresult ;
+  lldb::SBTypeSynthetic *arg1 = (lldb::SBTypeSynthetic *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBTypeSynthetic *)jarg1; 
+  result = (arg1)->GetOptions();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBTypeSynthetic_SetOptions(void * jarg1, void * jarg2) {
+  lldb::SBTypeSynthetic *arg1 = (lldb::SBTypeSynthetic *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBTypeSynthetic *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetOptions(arg2);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBTypeSynthetic_GetDescription(void * jarg1, void * jarg2, int jarg3) {
+  unsigned int jresult ;
+  lldb::SBTypeSynthetic *arg1 = (lldb::SBTypeSynthetic *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  lldb::DescriptionLevel arg3 ;
+  bool result;
+  
+  arg1 = (lldb::SBTypeSynthetic *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  arg3 = (lldb::DescriptionLevel)jarg3; 
+  result = (bool)(arg1)->GetDescription(*arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBValue__SWIG_0() {
+  void * jresult ;
+  lldb::SBValue *result = 0 ;
+  
+  result = (lldb::SBValue *)new lldb::SBValue();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBValue__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = 0 ;
+  lldb::SBValue *result = 0 ;
+  
+  arg1 = (lldb::SBValue *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBValue const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBValue *)new lldb::SBValue((lldb::SBValue const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBValue(void * jarg1) {
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBValue_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (bool)(arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBValue_Clear(void * jarg1) {
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetError(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBError result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->GetError();
+  jresult = new lldb::SBError((const lldb::SBError &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetID(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::user_id_t result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->GetID();
+  jresult = new lldb::user_id_t((const lldb::user_id_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBValue_GetName(void * jarg1) {
+  char * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (char *)(arg1)->GetName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBValue_GetTypeName(void * jarg1) {
+  char * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (char *)(arg1)->GetTypeName();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBValue_GetByteSize(void * jarg1) {
+  unsigned long jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  size_t result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->GetByteSize();
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBValue_IsInScope(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (bool)(arg1)->IsInScope();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBValue_GetFormat(void * jarg1) {
+  int jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::Format result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (lldb::Format)(arg1)->GetFormat();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBValue_SetFormat(void * jarg1, int jarg2) {
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::Format arg2 ;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  arg2 = (lldb::Format)jarg2; 
+  (arg1)->SetFormat(arg2);
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBValue_GetValue(void * jarg1) {
+  char * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (char *)(arg1)->GetValue();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetValueAsSigned__SWIG_0(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBError *arg2 = 0 ;
+  int64_t arg3 ;
+  int64_t *argp3 ;
+  int64_t result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  arg2 = (lldb::SBError *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  argp3 = (int64_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null int64_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->GetValueAsSigned(*arg2,arg3);
+  jresult = new int64_t((const int64_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetValueAsSigned__SWIG_1(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBError *arg2 = 0 ;
+  int64_t result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  arg2 = (lldb::SBError *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->GetValueAsSigned(*arg2);
+  jresult = new int64_t((const int64_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetValueAsUnsigned__SWIG_0(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBError *arg2 = 0 ;
+  uint64_t arg3 ;
+  uint64_t *argp3 ;
+  uint64_t result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  arg2 = (lldb::SBError *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  argp3 = (uint64_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint64_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->GetValueAsUnsigned(*arg2,arg3);
+  jresult = new uint64_t((const uint64_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetValueAsUnsigned__SWIG_1(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBError *arg2 = 0 ;
+  uint64_t result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  arg2 = (lldb::SBError *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->GetValueAsUnsigned(*arg2);
+  jresult = new uint64_t((const uint64_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetValueAsSigned__SWIG_2(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  int64_t arg2 ;
+  int64_t *argp2 ;
+  int64_t result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  argp2 = (int64_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null int64_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetValueAsSigned(arg2);
+  jresult = new int64_t((const int64_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetValueAsSigned__SWIG_3(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  int64_t result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->GetValueAsSigned();
+  jresult = new int64_t((const int64_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetValueAsUnsigned__SWIG_2(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  uint64_t arg2 ;
+  uint64_t *argp2 ;
+  uint64_t result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  argp2 = (uint64_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint64_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetValueAsUnsigned(arg2);
+  jresult = new uint64_t((const uint64_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetValueAsUnsigned__SWIG_3(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  uint64_t result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->GetValueAsUnsigned();
+  jresult = new uint64_t((const uint64_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT int SWIGSTDCALL CSharp_SBValue_GetValueType(void * jarg1) {
+  int jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::ValueType result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (lldb::ValueType)(arg1)->GetValueType();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBValue_GetValueDidChange(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (bool)(arg1)->GetValueDidChange();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBValue_GetSummary(void * jarg1) {
+  char * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (char *)(arg1)->GetSummary();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBValue_GetObjectDescription(void * jarg1) {
+  char * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (char *)(arg1)->GetObjectDescription();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetDynamicValue(void * jarg1, int jarg2) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::DynamicValueType arg2 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  arg2 = (lldb::DynamicValueType)jarg2; 
+  result = (arg1)->GetDynamicValue(arg2);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetStaticValue(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->GetStaticValue();
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetNonSyntheticValue(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->GetNonSyntheticValue();
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBValue_IsDynamic(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (bool)(arg1)->IsDynamic();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBValue_GetLocation(void * jarg1) {
+  char * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (char *)(arg1)->GetLocation();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBValue_SetValueFromCString__SWIG_0(void * jarg1, char * jarg2) {
+  unsigned int jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  char *arg2 = (char *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (bool)(arg1)->SetValueFromCString((char const *)arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBValue_SetValueFromCString__SWIG_1(void * jarg1, char * jarg2, void * jarg3) {
+  unsigned int jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBError *arg3 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (lldb::SBError *)jarg3;
+  if (!arg3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->SetValueFromCString((char const *)arg2,*arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetTypeFormat(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBTypeFormat result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->GetTypeFormat();
+  jresult = new lldb::SBTypeFormat((const lldb::SBTypeFormat &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetTypeSummary(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBTypeSummary result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->GetTypeSummary();
+  jresult = new lldb::SBTypeSummary((const lldb::SBTypeSummary &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetTypeFilter(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBTypeFilter result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->GetTypeFilter();
+  jresult = new lldb::SBTypeFilter((const lldb::SBTypeFilter &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetTypeSynthetic(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBTypeSynthetic result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->GetTypeSynthetic();
+  jresult = new lldb::SBTypeSynthetic((const lldb::SBTypeSynthetic &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetChildAtIndex__SWIG_0(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetChildAtIndex(arg2);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetChildAtIndex__SWIG_1(void * jarg1, void * jarg2, int jarg3, unsigned int jarg4) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  uint32_t arg2 ;
+  lldb::DynamicValueType arg3 ;
+  bool arg4 ;
+  uint32_t *argp2 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  arg3 = (lldb::DynamicValueType)jarg3; 
+  arg4 = jarg4 ? true : false; 
+  result = (arg1)->GetChildAtIndex(arg2,arg3,arg4);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_CreateChildAtOffset(void * jarg1, char * jarg2, void * jarg3, void * jarg4) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  char *arg2 = (char *) 0 ;
+  uint32_t arg3 ;
+  lldb::SBType arg4 ;
+  uint32_t *argp3 ;
+  lldb::SBType *argp4 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  arg2 = (char *)jarg2; 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  argp4 = (lldb::SBType *)jarg4; 
+  if (!argp4) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBType", 0);
+    return 0;
+  }
+  arg4 = *argp4; 
+  result = (arg1)->CreateChildAtOffset((char const *)arg2,arg3,arg4);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_Cast(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBType arg2 ;
+  lldb::SBType *argp2 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  argp2 = (lldb::SBType *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBType", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->Cast(arg2);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_CreateValueFromExpression(void * jarg1, char * jarg2, char * jarg3) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  char *arg2 = (char *) 0 ;
+  char *arg3 = (char *) 0 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (char *)jarg3; 
+  result = (arg1)->CreateValueFromExpression((char const *)arg2,(char const *)arg3);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_CreateValueFromAddress(void * jarg1, char * jarg2, void * jarg3, void * jarg4) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::addr_t arg3 ;
+  lldb::SBType arg4 ;
+  lldb::addr_t *argp3 ;
+  lldb::SBType *argp4 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  arg2 = (char *)jarg2; 
+  argp3 = (lldb::addr_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::addr_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  argp4 = (lldb::SBType *)jarg4; 
+  if (!argp4) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBType", 0);
+    return 0;
+  }
+  arg4 = *argp4; 
+  result = (arg1)->CreateValueFromAddress((char const *)arg2,arg3,arg4);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_CreateValueFromData(void * jarg1, char * jarg2, void * jarg3, void * jarg4) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBData arg3 ;
+  lldb::SBType arg4 ;
+  lldb::SBData *argp3 ;
+  lldb::SBType *argp4 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  arg2 = (char *)jarg2; 
+  argp3 = (lldb::SBData *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBData", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  argp4 = (lldb::SBType *)jarg4; 
+  if (!argp4) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::SBType", 0);
+    return 0;
+  }
+  arg4 = *argp4; 
+  result = (arg1)->CreateValueFromData((char const *)arg2,arg3,arg4);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetType(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBType result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->GetType();
+  jresult = new lldb::SBType((const lldb::SBType &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetIndexOfChildWithName(void * jarg1, char * jarg2) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  char *arg2 = (char *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (arg1)->GetIndexOfChildWithName((char const *)arg2);
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetChildMemberWithName__SWIG_0(void * jarg1, char * jarg2) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (arg1)->GetChildMemberWithName((char const *)arg2);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetChildMemberWithName__SWIG_1(void * jarg1, char * jarg2, int jarg3) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::DynamicValueType arg3 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  arg2 = (char *)jarg2; 
+  arg3 = (lldb::DynamicValueType)jarg3; 
+  result = (arg1)->GetChildMemberWithName((char const *)arg2,arg3);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetValueForExpressionPath(void * jarg1, char * jarg2) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  char *arg2 = (char *) 0 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  arg2 = (char *)jarg2; 
+  result = (arg1)->GetValueForExpressionPath((char const *)arg2);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetNumChildren(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->GetNumChildren();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void* SWIGSTDCALL CSharp_SBValue_GetOpaqueType(void * jarg1) {
+  void* jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  void *result = 0 ;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (void *)(arg1)->GetOpaqueType();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_Dereference(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->Dereference();
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_AddressOf(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->AddressOf();
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBValue_TypeIsPointerType(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (bool)(arg1)->TypeIsPointerType();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetTarget(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBTarget result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->GetTarget();
+  jresult = new lldb::SBTarget((const lldb::SBTarget &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetProcess(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBProcess result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->GetProcess();
+  jresult = new lldb::SBProcess((const lldb::SBProcess &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetThread(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBThread result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->GetThread();
+  jresult = new lldb::SBThread((const lldb::SBThread &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetFrame(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBFrame result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->GetFrame();
+  jresult = new lldb::SBFrame((const lldb::SBFrame &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_Watch(void * jarg1, unsigned int jarg2, unsigned int jarg3, unsigned int jarg4, void * jarg5) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  bool arg2 ;
+  bool arg3 ;
+  bool arg4 ;
+  lldb::SBError *arg5 = 0 ;
+  lldb::SBWatchpoint result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  arg2 = jarg2 ? true : false; 
+  arg3 = jarg3 ? true : false; 
+  arg4 = jarg4 ? true : false; 
+  arg5 = (lldb::SBError *)jarg5;
+  if (!arg5) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->Watch(arg2,arg3,arg4,*arg5);
+  jresult = new lldb::SBWatchpoint((const lldb::SBWatchpoint &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_WatchPointee(void * jarg1, unsigned int jarg2, unsigned int jarg3, unsigned int jarg4, void * jarg5) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  bool arg2 ;
+  bool arg3 ;
+  bool arg4 ;
+  lldb::SBError *arg5 = 0 ;
+  lldb::SBWatchpoint result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  arg2 = jarg2 ? true : false; 
+  arg3 = jarg3 ? true : false; 
+  arg4 = jarg4 ? true : false; 
+  arg5 = (lldb::SBError *)jarg5;
+  if (!arg5) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBError & type is null", 0);
+    return 0;
+  } 
+  result = (arg1)->WatchPointee(arg2,arg3,arg4,*arg5);
+  jresult = new lldb::SBWatchpoint((const lldb::SBWatchpoint &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBValue_GetDescription(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetDescription(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBValue_GetExpressionPath__SWIG_0(void * jarg1, void * jarg2) {
+  unsigned int jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  result = (bool)(arg1)->GetExpressionPath(*arg2);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetPointeeData__SWIG_0(void * jarg1, void * jarg2, void * jarg3) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  uint32_t arg2 ;
+  uint32_t arg3 ;
+  uint32_t *argp2 ;
+  uint32_t *argp3 ;
+  lldb::SBData result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  argp3 = (uint32_t *)jarg3; 
+  if (!argp3) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg3 = *argp3; 
+  result = (arg1)->GetPointeeData(arg2,arg3);
+  jresult = new lldb::SBData((const lldb::SBData &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetPointeeData__SWIG_1(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBData result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->GetPointeeData(arg2);
+  jresult = new lldb::SBData((const lldb::SBData &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetPointeeData__SWIG_2(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBData result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->GetPointeeData();
+  jresult = new lldb::SBData((const lldb::SBData &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetData(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBData result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->GetData();
+  jresult = new lldb::SBData((const lldb::SBData &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetLoadAddress(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::addr_t result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->GetLoadAddress();
+  jresult = new lldb::addr_t((const lldb::addr_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValue_GetAddress(void * jarg1) {
+  void * jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBAddress result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  result = (arg1)->GetAddress();
+  jresult = new lldb::SBAddress((const lldb::SBAddress &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBValue_GetExpressionPath__SWIG_1(void * jarg1, void * jarg2, unsigned int jarg3) {
+  unsigned int jresult ;
+  lldb::SBValue *arg1 = (lldb::SBValue *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  bool arg3 ;
+  bool result;
+  
+  arg1 = (lldb::SBValue *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  arg3 = jarg3 ? true : false; 
+  result = (bool)(arg1)->GetExpressionPath(*arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBValueList__SWIG_0() {
+  void * jresult ;
+  lldb::SBValueList *result = 0 ;
+  
+  result = (lldb::SBValueList *)new lldb::SBValueList();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBValueList__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBValueList *arg1 = 0 ;
+  lldb::SBValueList *result = 0 ;
+  
+  arg1 = (lldb::SBValueList *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBValueList const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBValueList *)new lldb::SBValueList((lldb::SBValueList const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBValueList(void * jarg1) {
+  lldb::SBValueList *arg1 = (lldb::SBValueList *) 0 ;
+  
+  arg1 = (lldb::SBValueList *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBValueList_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBValueList *arg1 = (lldb::SBValueList *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBValueList *)jarg1; 
+  result = (bool)((lldb::SBValueList const *)arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBValueList_Clear(void * jarg1) {
+  lldb::SBValueList *arg1 = (lldb::SBValueList *) 0 ;
+  
+  arg1 = (lldb::SBValueList *)jarg1; 
+  (arg1)->Clear();
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBValueList_Append__SWIG_0(void * jarg1, void * jarg2) {
+  lldb::SBValueList *arg1 = (lldb::SBValueList *) 0 ;
+  lldb::SBValue *arg2 = 0 ;
+  
+  arg1 = (lldb::SBValueList *)jarg1; 
+  arg2 = (lldb::SBValue *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBValue const & type is null", 0);
+    return ;
+  } 
+  (arg1)->Append((lldb::SBValue const &)*arg2);
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBValueList_Append__SWIG_1(void * jarg1, void * jarg2) {
+  lldb::SBValueList *arg1 = (lldb::SBValueList *) 0 ;
+  lldb::SBValueList *arg2 = 0 ;
+  
+  arg1 = (lldb::SBValueList *)jarg1; 
+  arg2 = (lldb::SBValueList *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBValueList const & type is null", 0);
+    return ;
+  } 
+  (arg1)->Append((lldb::SBValueList const &)*arg2);
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValueList_GetSize(void * jarg1) {
+  void * jresult ;
+  lldb::SBValueList *arg1 = (lldb::SBValueList *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBValueList *)jarg1; 
+  result = ((lldb::SBValueList const *)arg1)->GetSize();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValueList_GetValueAtIndex(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBValueList *arg1 = (lldb::SBValueList *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBValueList *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = ((lldb::SBValueList const *)arg1)->GetValueAtIndex(arg2);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBValueList_FindValueObjectByUID(void * jarg1, void * jarg2) {
+  void * jresult ;
+  lldb::SBValueList *arg1 = (lldb::SBValueList *) 0 ;
+  lldb::user_id_t arg2 ;
+  lldb::user_id_t *argp2 ;
+  lldb::SBValue result;
+  
+  arg1 = (lldb::SBValueList *)jarg1; 
+  argp2 = (lldb::user_id_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null lldb::user_id_t", 0);
+    return 0;
+  }
+  arg2 = *argp2; 
+  result = (arg1)->FindValueObjectByUID(arg2);
+  jresult = new lldb::SBValue((const lldb::SBValue &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBWatchpoint__SWIG_0() {
+  void * jresult ;
+  lldb::SBWatchpoint *result = 0 ;
+  
+  result = (lldb::SBWatchpoint *)new lldb::SBWatchpoint();
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_new_SBWatchpoint__SWIG_1(void * jarg1) {
+  void * jresult ;
+  lldb::SBWatchpoint *arg1 = 0 ;
+  lldb::SBWatchpoint *result = 0 ;
+  
+  arg1 = (lldb::SBWatchpoint *)jarg1;
+  if (!arg1) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBWatchpoint const & type is null", 0);
+    return 0;
+  } 
+  result = (lldb::SBWatchpoint *)new lldb::SBWatchpoint((lldb::SBWatchpoint const &)*arg1);
+  jresult = (void *)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_delete_SBWatchpoint(void * jarg1) {
+  lldb::SBWatchpoint *arg1 = (lldb::SBWatchpoint *) 0 ;
+  
+  arg1 = (lldb::SBWatchpoint *)jarg1; 
+  delete arg1;
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBWatchpoint_IsValid(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBWatchpoint *arg1 = (lldb::SBWatchpoint *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBWatchpoint *)jarg1; 
+  result = (bool)(arg1)->IsValid();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBWatchpoint_GetError(void * jarg1) {
+  void * jresult ;
+  lldb::SBWatchpoint *arg1 = (lldb::SBWatchpoint *) 0 ;
+  lldb::SBError result;
+  
+  arg1 = (lldb::SBWatchpoint *)jarg1; 
+  result = (arg1)->GetError();
+  jresult = new lldb::SBError((const lldb::SBError &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBWatchpoint_GetID(void * jarg1) {
+  void * jresult ;
+  lldb::SBWatchpoint *arg1 = (lldb::SBWatchpoint *) 0 ;
+  lldb::watch_id_t result;
+  
+  arg1 = (lldb::SBWatchpoint *)jarg1; 
+  result = (arg1)->GetID();
+  jresult = new lldb::watch_id_t((const lldb::watch_id_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBWatchpoint_GetHardwareIndex(void * jarg1) {
+  void * jresult ;
+  lldb::SBWatchpoint *arg1 = (lldb::SBWatchpoint *) 0 ;
+  int32_t result;
+  
+  arg1 = (lldb::SBWatchpoint *)jarg1; 
+  result = (arg1)->GetHardwareIndex();
+  jresult = new int32_t((const int32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBWatchpoint_GetWatchAddress(void * jarg1) {
+  void * jresult ;
+  lldb::SBWatchpoint *arg1 = (lldb::SBWatchpoint *) 0 ;
+  lldb::addr_t result;
+  
+  arg1 = (lldb::SBWatchpoint *)jarg1; 
+  result = (arg1)->GetWatchAddress();
+  jresult = new lldb::addr_t((const lldb::addr_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT unsigned long SWIGSTDCALL CSharp_SBWatchpoint_GetWatchSize(void * jarg1) {
+  unsigned long jresult ;
+  lldb::SBWatchpoint *arg1 = (lldb::SBWatchpoint *) 0 ;
+  size_t result;
+  
+  arg1 = (lldb::SBWatchpoint *)jarg1; 
+  result = (arg1)->GetWatchSize();
+  jresult = (unsigned long)result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBWatchpoint_SetEnabled(void * jarg1, unsigned int jarg2) {
+  lldb::SBWatchpoint *arg1 = (lldb::SBWatchpoint *) 0 ;
+  bool arg2 ;
+  
+  arg1 = (lldb::SBWatchpoint *)jarg1; 
+  arg2 = jarg2 ? true : false; 
+  (arg1)->SetEnabled(arg2);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBWatchpoint_IsEnabled(void * jarg1) {
+  unsigned int jresult ;
+  lldb::SBWatchpoint *arg1 = (lldb::SBWatchpoint *) 0 ;
+  bool result;
+  
+  arg1 = (lldb::SBWatchpoint *)jarg1; 
+  result = (bool)(arg1)->IsEnabled();
+  jresult = result; 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBWatchpoint_GetHitCount(void * jarg1) {
+  void * jresult ;
+  lldb::SBWatchpoint *arg1 = (lldb::SBWatchpoint *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBWatchpoint *)jarg1; 
+  result = (arg1)->GetHitCount();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void * SWIGSTDCALL CSharp_SBWatchpoint_GetIgnoreCount(void * jarg1) {
+  void * jresult ;
+  lldb::SBWatchpoint *arg1 = (lldb::SBWatchpoint *) 0 ;
+  uint32_t result;
+  
+  arg1 = (lldb::SBWatchpoint *)jarg1; 
+  result = (arg1)->GetIgnoreCount();
+  jresult = new uint32_t((const uint32_t &)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBWatchpoint_SetIgnoreCount(void * jarg1, void * jarg2) {
+  lldb::SBWatchpoint *arg1 = (lldb::SBWatchpoint *) 0 ;
+  uint32_t arg2 ;
+  uint32_t *argp2 ;
+  
+  arg1 = (lldb::SBWatchpoint *)jarg1; 
+  argp2 = (uint32_t *)jarg2; 
+  if (!argp2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "Attempt to dereference null uint32_t", 0);
+    return ;
+  }
+  arg2 = *argp2; 
+  (arg1)->SetIgnoreCount(arg2);
+}
+
+
+SWIGEXPORT char * SWIGSTDCALL CSharp_SBWatchpoint_GetCondition(void * jarg1) {
+  char * jresult ;
+  lldb::SBWatchpoint *arg1 = (lldb::SBWatchpoint *) 0 ;
+  char *result = 0 ;
+  
+  arg1 = (lldb::SBWatchpoint *)jarg1; 
+  result = (char *)(arg1)->GetCondition();
+  jresult = SWIG_csharp_string_callback((const char *)result); 
+  return jresult;
+}
+
+
+SWIGEXPORT void SWIGSTDCALL CSharp_SBWatchpoint_SetCondition(void * jarg1, char * jarg2) {
+  lldb::SBWatchpoint *arg1 = (lldb::SBWatchpoint *) 0 ;
+  char *arg2 = (char *) 0 ;
+  
+  arg1 = (lldb::SBWatchpoint *)jarg1; 
+  arg2 = (char *)jarg2; 
+  (arg1)->SetCondition((char const *)arg2);
+}
+
+
+SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SBWatchpoint_GetDescription(void * jarg1, void * jarg2, int jarg3) {
+  unsigned int jresult ;
+  lldb::SBWatchpoint *arg1 = (lldb::SBWatchpoint *) 0 ;
+  lldb::SBStream *arg2 = 0 ;
+  lldb::DescriptionLevel arg3 ;
+  bool result;
+  
+  arg1 = (lldb::SBWatchpoint *)jarg1; 
+  arg2 = (lldb::SBStream *)jarg2;
+  if (!arg2) {
+    SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "lldb::SBStream & type is null", 0);
+    return 0;
+  } 
+  arg3 = (lldb::DescriptionLevel)jarg3; 
+  result = (bool)(arg1)->GetDescription(*arg2,arg3);
+  jresult = result; 
+  return jresult;
+}
+
+
+#ifdef __cplusplus
+}
+#endif
+

Modified: lldb/branches/windows/source/API/SBAddress.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBAddress.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBAddress.cpp (original)
+++ lldb/branches/windows/source/API/SBAddress.cpp Thu Nov  1 02:04:04 2012
@@ -119,10 +119,13 @@
 
     lldb::addr_t addr = LLDB_INVALID_ADDRESS;
     TargetSP target_sp (target.GetSP());
-    if (m_opaque_ap.get())
+    if (target_sp)
     {
-        Mutex::Locker api_locker (target_sp->GetAPIMutex());
-        addr = m_opaque_ap->GetLoadAddress (target_sp.get());
+        if (m_opaque_ap.get())
+        {
+            Mutex::Locker api_locker (target_sp->GetAPIMutex());
+            addr = m_opaque_ap->GetLoadAddress (target_sp.get());
+        }
     }
     
     if (log)
@@ -182,7 +185,7 @@
 SBAddress::GetOffset ()
 {
     if (m_opaque_ap.get())
-        m_opaque_ap->GetOffset();
+        return m_opaque_ap->GetOffset();
     return 0;
 }
 

Modified: lldb/branches/windows/source/API/SBBlock.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBBlock.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBBlock.cpp (original)
+++ lldb/branches/windows/source/API/SBBlock.cpp Thu Nov  1 02:04:04 2012
@@ -299,7 +299,12 @@
                         if (add_variable)
                         {
                             if (frame_sp)
-                                value_list.Append (frame_sp->GetValueObjectForFrameVariable (variable_sp, use_dynamic));
+                            {
+                                lldb::ValueObjectSP valobj_sp(frame_sp->GetValueObjectForFrameVariable (variable_sp,eNoDynamicValues));
+                                SBValue value_sb;
+                                value_sb.SetSP(valobj_sp, use_dynamic);
+                                value_list.Append (value_sb);
+                            }
                         }
                     }
                 }

Modified: lldb/branches/windows/source/API/SBFrame.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBFrame.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBFrame.cpp (original)
+++ lldb/branches/windows/source/API/SBFrame.cpp Thu Nov  1 02:04:04 2012
@@ -549,12 +549,12 @@
         {
             VariableSP var_sp;
             Error error;
-            ValueObjectSP value_sp (frame->GetValueForVariableExpressionPath (var_path, 
-                                                                              use_dynamic,
+            ValueObjectSP value_sp (frame->GetValueForVariableExpressionPath (var_path,
+                                                                              eNoDynamicValues,
                                                                               StackFrame::eExpressionPathOptionCheckPtrVsMember | StackFrame::eExpressionPathOptionsAllowDirectIVarAccess,
                                                                               var_sp,
                                                                               error));
-            sb_value.SetSP(value_sp);
+            sb_value.SetSP(value_sp, use_dynamic);
         }
         else
         {
@@ -619,8 +619,8 @@
 
             if (var_sp)
             {
-                value_sp = frame->GetValueObjectForFrameVariable(var_sp, use_dynamic);
-                sb_value.SetSP(value_sp);
+                value_sp = frame->GetValueObjectForFrameVariable(var_sp, eNoDynamicValues);
+                sb_value.SetSP(value_sp, use_dynamic);
             }
         }
         else
@@ -697,8 +697,8 @@
                                 variable_sp->GetScope() == value_type &&
                                 variable_sp->GetName() == const_name)
                             {
-                                value_sp = frame->GetValueObjectForFrameVariable (variable_sp, use_dynamic);
-                                sb_value.SetSP (value_sp);
+                                value_sp = frame->GetValueObjectForFrameVariable (variable_sp, eNoDynamicValues);
+                                sb_value.SetSP (value_sp, use_dynamic);
                                 break;
                             }
                         }
@@ -757,7 +757,7 @@
                     if (expr_var_sp)
                     {
                         value_sp = expr_var_sp->GetValueObject();
-                        sb_value.SetSP (value_sp);
+                        sb_value.SetSP (value_sp, use_dynamic);
                     }
                 }
                 break;
@@ -939,7 +939,10 @@
                                 if (in_scope_only && !variable_sp->IsInScope(frame))
                                     continue;
 
-                                value_list.Append(frame->GetValueObjectForFrameVariable (variable_sp, use_dynamic));
+                                ValueObjectSP valobj_sp(frame->GetValueObjectForFrameVariable (variable_sp, eNoDynamicValues));
+                                SBValue value_sb;
+                                value_sb.SetSP(valobj_sp,use_dynamic);
+                                value_list.Append(value_sb);
                             }
                         }
                     }
@@ -1102,7 +1105,7 @@
                                                       frame,
                                                       expr_value_sp,
                                                       options.ref());
-            expr_result.SetSP(expr_value_sp);
+            expr_result.SetSP(expr_value_sp,options.GetFetchDynamicValue());
 #ifdef LLDB_CONFIGURATION_DEBUG
             Host::SetCrashDescription (NULL);
 #endif

Modified: lldb/branches/windows/source/API/SBProcess.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBProcess.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBProcess.cpp (original)
+++ lldb/branches/windows/source/API/SBProcess.cpp Thu Nov  1 02:04:04 2012
@@ -81,6 +81,29 @@
     return Process::GetStaticBroadcasterClass().AsCString();
 }
 
+const char *
+SBProcess::GetPluginName ()
+{
+    ProcessSP process_sp(GetSP());
+    if (process_sp)
+    {
+        return process_sp->GetPluginName();
+    }
+    return "<Unknown>";
+}
+
+const char *
+SBProcess::GetShortPluginName ()
+{
+    ProcessSP process_sp(GetSP());
+    if (process_sp)
+    {
+        return process_sp->GetShortPluginName();
+    }
+    return "<Unknown>";
+}
+
+
 lldb::ProcessSP
 SBProcess::GetSP() const
 {
@@ -396,12 +419,6 @@
 }
 
 bool
-SBProcess::SetSelectedThreadByID (uint32_t tid)
-{
-    return SetSelectedThreadByID ((lldb::tid_t)tid);
-}
-
-bool
 SBProcess::SetSelectedThreadByID (lldb::tid_t tid)
 {
     LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));

Modified: lldb/branches/windows/source/API/SBTarget.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBTarget.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBTarget.cpp (original)
+++ lldb/branches/windows/source/API/SBTarget.cpp Thu Nov  1 02:04:04 2012
@@ -710,7 +710,7 @@
     log = lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API);
     if (log)
     {
-        log->Printf ("SBTarget(%p)::Launch (...) => SBProceess(%p)", 
+        log->Printf ("SBTarget(%p)::Launch (...) => SBProcess(%p)", 
                      target_sp.get(), process_sp.get());
     }
 
@@ -810,7 +810,7 @@
     log = lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API);
     if (log)
     {
-        log->Printf ("SBTarget(%p)::Launch (...) => SBProceess(%p)", 
+        log->Printf ("SBTarget(%p)::Launch (...) => SBProcess(%p)", 
                      target_sp.get(), process_sp.get());
     }
     
@@ -820,9 +820,17 @@
 lldb::SBProcess
 SBTarget::Attach (SBAttachInfo &sb_attach_info, SBError& error)
 {
+    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    
     SBProcess sb_process;
     ProcessSP process_sp;
     TargetSP target_sp(GetSP());
+    
+    if (log)
+    {
+        log->Printf ("SBTarget(%p)::Attach (sb_attach_info, error)...", target_sp.get());
+    }
+    
     if (target_sp)
     {
         Mutex::Locker api_locker (target_sp->GetAPIMutex());
@@ -839,6 +847,11 @@
                     error.SetErrorString ("process attach is in progress");
                 else
                     error.SetErrorString ("a process is already being debugged");
+                if (log)
+                {
+                    log->Printf ("SBTarget(%p)::Attach (...) => error %s",
+                                 target_sp.get(), error.GetCString());
+                }
                 return sb_process;
             }            
         }
@@ -864,6 +877,11 @@
                     else
                     {
                         error.ref().SetErrorStringWithFormat("no process found with process ID %llu", attach_pid);
+                        if (log)
+                        {
+                            log->Printf ("SBTarget(%p)::Attach (...) => error %s",
+                                         target_sp.get(), error.GetCString());
+                        }
                         return sb_process;
                     }
                 }
@@ -887,6 +905,13 @@
     {
         error.SetErrorString ("SBTarget is invalid");
     }
+    
+    if (log)
+    {
+        log->Printf ("SBTarget(%p)::Attach (...) => SBProcess(%p)",
+                     target_sp.get(), process_sp.get());
+    }
+    
     return sb_process;
 }
 
@@ -911,9 +936,17 @@
     SBError& error  // An error explaining what went wrong if attach fails
 )
 {
+    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+
     SBProcess sb_process;
     ProcessSP process_sp;
     TargetSP target_sp(GetSP());
+
+    if (log)
+    {
+        log->Printf ("SBTarget(%p)::AttachToProcessWithID (listener, pid=%lld, error)...", target_sp.get(), pid);
+    }
+    
     if (target_sp)
     {
         Mutex::Locker api_locker (target_sp->GetAPIMutex());
@@ -983,8 +1016,13 @@
     {
         error.SetErrorString ("SBTarget is invalid");
     }
+    
+    if (log)
+    {
+        log->Printf ("SBTarget(%p)::AttachToProcessWithID (...) => SBProcess(%p)",
+                     target_sp.get(), process_sp.get());
+    }
     return sb_process;
-
 }
 
 lldb::SBProcess
@@ -996,9 +1034,17 @@
     SBError& error      // An error explaining what went wrong if attach fails
 )
 {
+    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    
     SBProcess sb_process;
     ProcessSP process_sp;
     TargetSP target_sp(GetSP());
+    
+    if (log)
+    {
+        log->Printf ("SBTarget(%p)::AttachToProcessWithName (listener, name=%s, wait_for=%s, error)...", target_sp.get(), name, wait_for ? "true" : "false");
+    }
+    
     if (name && target_sp)
     {
         Mutex::Locker api_locker (target_sp->GetAPIMutex());
@@ -1059,8 +1105,13 @@
     {
         error.SetErrorString ("SBTarget is invalid");
     }
+    
+    if (log)
+    {
+        log->Printf ("SBTarget(%p)::AttachToPorcessWithName (...) => SBProcess(%p)",
+                     target_sp.get(), process_sp.get());
+    }
     return sb_process;
-
 }
 
 lldb::SBProcess
@@ -1072,9 +1123,17 @@
     SBError& error
 )
 {
+    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+
     SBProcess sb_process;
     ProcessSP process_sp;
     TargetSP target_sp(GetSP());
+    
+    if (log)
+    {
+        log->Printf ("SBTarget(%p)::ConnectRemote (listener, url=%s, plugin_name=%s, error)...", target_sp.get(), url, plugin_name);
+    }
+    
     if (target_sp)
     {
         Mutex::Locker api_locker (target_sp->GetAPIMutex());
@@ -1098,6 +1157,12 @@
     {
         error.SetErrorString ("SBTarget is invalid");
     }
+    
+    if (log)
+    {
+        log->Printf ("SBTarget(%p)::ConnectRemote (...) => SBProcess(%p)",
+                     target_sp.get(), process_sp.get());
+    }
     return sb_process;
 }
 
@@ -1718,7 +1783,9 @@
             watch_type |= LLDB_WATCH_TYPE_WRITE;
         // Target::CreateWatchpoint() is thread safe.
         Error cw_error;
-        watchpoint_sp = target_sp->CreateWatchpoint(addr, size, watch_type, cw_error);
+        // This API doesn't take in a type, so we can't figure out what it is.
+        ClangASTType *type = NULL;
+        watchpoint_sp = target_sp->CreateWatchpoint(addr, size, type, watch_type, cw_error);
         error.SetError(cw_error);
         sb_watchpoint.SetSP (watchpoint_sp);
     }

Modified: lldb/branches/windows/source/API/SBType.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBType.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBType.cpp (original)
+++ lldb/branches/windows/source/API/SBType.cpp Thu Nov  1 02:04:04 2012
@@ -219,6 +219,51 @@
     return SBType(ClangASTType(m_opaque_sp->GetASTContext(),qt.getNonReferenceType().getAsOpaquePtr()));
 }
 
+bool 
+SBType::IsFunctionType ()
+{
+    if (IsValid())
+    {
+        QualType qual_type(QualType::getFromOpaquePtr(m_opaque_sp->GetOpaqueQualType()));
+        const FunctionProtoType* func = dyn_cast<FunctionProtoType>(qual_type.getTypePtr());
+        return func != NULL;
+    }
+    return false;
+}
+
+lldb::SBType
+SBType::GetFunctionReturnType ()
+{
+    if (IsValid())
+    {
+        QualType qual_type(QualType::getFromOpaquePtr(m_opaque_sp->GetOpaqueQualType()));
+        const FunctionProtoType* func = dyn_cast<FunctionProtoType>(qual_type.getTypePtr());
+        
+        if (func)
+            return SBType(ClangASTType(m_opaque_sp->GetASTContext(),
+                                       func->getResultType().getAsOpaquePtr()));
+    }
+    return lldb::SBType();
+}
+
+lldb::SBTypeList
+SBType::GetFunctionArgumentTypes ()
+{
+    SBTypeList sb_type_list;
+    if (IsValid())
+    {
+        QualType qual_type(QualType::getFromOpaquePtr(m_opaque_sp->GetOpaqueQualType()));
+        const FunctionProtoType* func = dyn_cast<FunctionProtoType>(qual_type.getTypePtr());
+        if (func)
+        {
+            const uint32_t num_args = func->getNumArgs();
+            for (uint32_t i=0; i<num_args; ++i)
+                sb_type_list.Append (SBType(ClangASTType(m_opaque_sp->GetASTContext(), func->getArgType(i).getAsOpaquePtr())));
+        }
+    }
+    return sb_type_list;
+}
+
 lldb::SBType
 SBType::GetUnqualifiedType()
 {

Modified: lldb/branches/windows/source/API/SBValue.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/API/SBValue.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/API/SBValue.cpp (original)
+++ lldb/branches/windows/source/API/SBValue.cpp Thu Nov  1 02:04:04 2012
@@ -50,6 +50,98 @@
 using namespace lldb;
 using namespace lldb_private;
 
+namespace {
+    class ValueImpl
+    {
+    public:
+        ValueImpl ()
+        {
+        }
+        
+        ValueImpl (lldb::ValueObjectSP opaque_sp,
+                   lldb::DynamicValueType use_dynamic,
+                   bool use_synthetic) :
+            m_opaque_sp(opaque_sp),
+            m_use_dynamic(use_dynamic),
+            m_use_synthetic(use_synthetic)
+        {
+        }
+        
+        ValueImpl (const ValueImpl& rhs) :
+            m_opaque_sp(rhs.m_opaque_sp),
+            m_use_dynamic(rhs.m_use_dynamic),
+            m_use_synthetic(rhs.m_use_synthetic)
+        {
+        }
+        
+        ValueImpl &
+        operator = (const ValueImpl &rhs)
+        {
+            if (this != &rhs)
+            {
+                m_opaque_sp = rhs.m_opaque_sp;
+                m_use_dynamic = rhs.m_use_dynamic;
+                m_use_synthetic = rhs.m_use_synthetic;
+            }
+            return *this;
+        }
+        
+        bool
+        IsValid ()
+        {
+            return m_opaque_sp.get() != NULL;
+        }
+        
+        lldb::ValueObjectSP
+        GetRootSP ()
+        {
+            return m_opaque_sp;
+        }
+        
+        lldb::ValueObjectSP
+        GetSP ()
+        {
+            if (!m_opaque_sp)
+                return m_opaque_sp;
+            lldb::ValueObjectSP value_sp = m_opaque_sp;
+            if (value_sp->GetDynamicValue(m_use_dynamic))
+                value_sp = value_sp->GetDynamicValue(m_use_dynamic);
+            if (value_sp->GetSyntheticValue(m_use_synthetic))
+                value_sp = value_sp->GetSyntheticValue(m_use_synthetic);
+            return value_sp;
+        }
+        
+        void
+        SetUseDynamic (lldb::DynamicValueType use_dynamic)
+        {
+            m_use_dynamic = use_dynamic;
+        }
+        
+        void
+        SetUseSynthetic (bool use_synthetic)
+        {
+            m_use_synthetic = use_synthetic;
+        }
+        
+        lldb::DynamicValueType
+        GetUseDynamic ()
+        {
+            return m_use_dynamic;
+        }
+        
+        bool
+        GetUseSynthetic ()
+        {
+            return m_use_synthetic;
+        }
+        
+    private:
+        lldb::ValueObjectSP m_opaque_sp;
+        lldb::DynamicValueType m_use_dynamic;
+        bool m_use_synthetic;
+    };
+}
+
 SBValue::SBValue () :
     m_opaque_sp ()
 {
@@ -57,12 +149,12 @@
 
 SBValue::SBValue (const lldb::ValueObjectSP &value_sp)
 {
-    SetSP(value_sp); // whenever setting the SP call SetSP() since it knows how to deal with synthetic values properly
+    SetSP(value_sp);
 }
 
 SBValue::SBValue(const SBValue &rhs)
 {
-    SetSP(rhs.m_opaque_sp); // whenever setting the SP call SetSP() since it knows how to deal with synthetic values properly
+    SetSP(rhs.m_opaque_sp);
 }
 
 SBValue &
@@ -70,7 +162,7 @@
 {
     if (this != &rhs)
     {
-        SetSP(rhs.m_opaque_sp); // whenever setting the SP call SetSP() since it knows how to deal with synthetic values properly
+        SetSP(rhs.m_opaque_sp);
     }
     return *this;
 }
@@ -85,7 +177,7 @@
     // If this function ever changes to anything that does more than just
     // check if the opaque shared pointer is non NULL, then we need to update
     // all "if (m_opaque_sp)" code in this file.
-    return m_opaque_sp.get() != NULL;
+    return m_opaque_sp.get() != NULL && m_opaque_sp->GetRootSP().get() != NULL;
 }
 
 void
@@ -683,7 +775,7 @@
                 TypeImplSP type_sp (type.GetSP());
                 if (type.IsValid())
                 {
-                    sb_value = SBValue(value_sp->GetSyntheticChildAtOffset(offset, type_sp->GetClangASTType(), true));
+                    sb_value.SetSP(value_sp->GetSyntheticChildAtOffset(offset, type_sp->GetClangASTType(), true),GetPreferDynamicValue(),GetPreferSyntheticValue());
                     new_value_sp = sb_value.GetSP();
                     if (new_value_sp)
                         new_value_sp->SetName(ConstString(name));
@@ -712,7 +804,7 @@
     lldb::ValueObjectSP value_sp(GetSP());
     TypeImplSP type_sp (type.GetSP());
     if (value_sp && type_sp)
-        sb_value.SetSP(value_sp->Cast(type_sp->GetClangASTType()));
+        sb_value.SetSP(value_sp->Cast(type_sp->GetClangASTType()),GetPreferDynamicValue(),GetPreferSyntheticValue());
     return sb_value;
 }
 
@@ -904,20 +996,12 @@
                     }
                 }
                     
-                if (child_sp)
-                {
-                    if (use_dynamic != lldb::eNoDynamicValues)
-                    {
-                        lldb::ValueObjectSP dynamic_sp(child_sp->GetDynamicValue (use_dynamic));
-                        if (dynamic_sp)
-                            child_sp = dynamic_sp;
-                    }
-                }
             }
         }
     }
     
-    SBValue sb_value (child_sp);
+    SBValue sb_value;
+    sb_value.SetSP (child_sp, use_dynamic, GetPreferSyntheticValue());
     if (log)
         log->Printf ("SBValue(%p)::GetChildAtIndex (%u) => SBValue(%p)", value_sp.get(), idx, value_sp.get());
 
@@ -993,20 +1077,12 @@
             {
                 Mutex::Locker api_locker (target_sp->GetAPIMutex());
                 child_sp = value_sp->GetChildMemberWithName (str_name, true);
-                if (use_dynamic_value != lldb::eNoDynamicValues)
-                {
-                    if (child_sp)
-                    {
-                        lldb::ValueObjectSP dynamic_sp = child_sp->GetDynamicValue (use_dynamic_value);
-                        if (dynamic_sp)
-                            child_sp = dynamic_sp;
-                    }
-                }
             }
         }
     }
     
-    SBValue sb_value (child_sp);
+    SBValue sb_value;
+    sb_value.SetSP(child_sp, use_dynamic_value, GetPreferSyntheticValue());
 
     if (log)
         log->Printf ("SBValue(%p)::GetChildMemberWithName (name=\"%s\") => SBValue(%p)", value_sp.get(), name, value_sp.get());
@@ -1017,74 +1093,87 @@
 lldb::SBValue
 SBValue::GetDynamicValue (lldb::DynamicValueType use_dynamic)
 {
-    lldb::ValueObjectSP value_sp(GetSP());
-    if (value_sp)
+    SBValue value_sb;
+    if (IsValid())
     {
-        ProcessSP process_sp(value_sp->GetProcessSP());
-        Process::StopLocker stop_locker;
-        if (process_sp && !stop_locker.TryLock(&process_sp->GetRunLock()))
-        {
-            LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
-            if (log)
-                log->Printf ("SBValue(%p)::GetDynamicValue() => error: process is running", value_sp.get());
-        }
-        else
-        {
-            TargetSP target_sp(value_sp->GetTargetSP());
-            if (target_sp)
-            {
-                Mutex::Locker api_locker (target_sp->GetAPIMutex());
-                return SBValue (value_sp->GetDynamicValue(use_dynamic));
-            }
-        }
+        ValueImplSP proxy_sp(new ValueImpl(m_opaque_sp->GetRootSP(),use_dynamic,m_opaque_sp->GetUseSynthetic()));
+        value_sb.SetSP(proxy_sp);
     }
-    
-    return SBValue();
+    return value_sb;
 }
 
 lldb::SBValue
 SBValue::GetStaticValue ()
 {
-    lldb::ValueObjectSP value_sp(GetSP());
-    if (value_sp)
+    SBValue value_sb;
+    if (IsValid())
     {
-        TargetSP target_sp(value_sp->GetTargetSP());
-        if (target_sp)
-        {
-            Mutex::Locker api_locker (target_sp->GetAPIMutex());
-            return SBValue(value_sp->GetStaticValue());
-        }
+        ValueImplSP proxy_sp(new ValueImpl(m_opaque_sp->GetRootSP(),eNoDynamicValues,m_opaque_sp->GetUseSynthetic()));
+        value_sb.SetSP(proxy_sp);
     }
-    
-    return SBValue();
+    return value_sb;
 }
 
 lldb::SBValue
 SBValue::GetNonSyntheticValue ()
 {
-    SBValue sb_value;
+    SBValue value_sb;
+    if (IsValid())
+    {
+        ValueImplSP proxy_sp(new ValueImpl(m_opaque_sp->GetRootSP(),m_opaque_sp->GetUseDynamic(),false));
+        value_sb.SetSP(proxy_sp);
+    }
+    return value_sb;
+}
+
+lldb::DynamicValueType
+SBValue::GetPreferDynamicValue ()
+{
+    if (!IsValid())
+        return eNoDynamicValues;
+    return m_opaque_sp->GetUseDynamic();
+}
+
+void
+SBValue::SetPreferDynamicValue (lldb::DynamicValueType use_dynamic)
+{
+    if (IsValid())
+        return m_opaque_sp->SetUseDynamic (use_dynamic);
+}
+
+bool
+SBValue::GetPreferSyntheticValue ()
+{
+    if (!IsValid())
+        return false;
+    return m_opaque_sp->GetUseSynthetic();
+}
+
+void
+SBValue::SetPreferSyntheticValue (bool use_synthetic)
+{
+    if (IsValid())
+        return m_opaque_sp->SetUseSynthetic (use_synthetic);
+}
+
+bool
+SBValue::IsDynamic()
+{
     lldb::ValueObjectSP value_sp(GetSP());
     if (value_sp)
     {
-        if (value_sp->IsSynthetic())
+        TargetSP target_sp(value_sp->GetTargetSP());
+        if (target_sp)
         {
-            TargetSP target_sp(value_sp->GetTargetSP());
-            if (target_sp)
-            {
-                Mutex::Locker api_locker (target_sp->GetAPIMutex());
-                // deliberately breaking the rules here to optimize the case where we DO NOT want
-                // the synthetic value to be returned to the user - if we did not do this, we would have to tell
-                // the target to suppress the synthetic value, and then return the flag to its original value
-                if (value_sp->GetNonSyntheticValue())
-                    sb_value.m_opaque_sp = value_sp->GetNonSyntheticValue();
-            }
+            Mutex::Locker api_locker (target_sp->GetAPIMutex());
+            return value_sp->IsDynamic();
         }
     }
-    return sb_value;
+    return false;
 }
 
 bool
-SBValue::IsDynamic()
+SBValue::IsSynthetic ()
 {
     lldb::ValueObjectSP value_sp(GetSP());
     if (value_sp)
@@ -1093,7 +1182,7 @@
         if (target_sp)
         {
             Mutex::Locker api_locker (target_sp->GetAPIMutex());
-            return value_sp->IsDynamic();
+            return value_sp->IsSynthetic();
         }
     }
     return false;
@@ -1126,7 +1215,8 @@
         }
     }
     
-    SBValue sb_value (child_sp);
+    SBValue sb_value;
+    sb_value.SetSP(child_sp,GetPreferDynamicValue(),GetPreferSyntheticValue());
     
     if (log)
         log->Printf ("SBValue(%p)::GetValueForExpressionPath (expr_path=\"%s\") => SBValue(%p)", value_sp.get(), expr_path, value_sp.get());
@@ -1158,7 +1248,7 @@
                 Mutex::Locker api_locker (target_sp->GetAPIMutex());
                 Scalar scalar;
                 if (value_sp->ResolveValue (scalar))
-                    return scalar.GetRawBits64(fail_value);
+                    return scalar.SLongLong(fail_value);
                 else
                     error.SetErrorString("could not get value");
             }
@@ -1194,7 +1284,7 @@
                 Mutex::Locker api_locker (target_sp->GetAPIMutex());
                 Scalar scalar;
                 if (value_sp->ResolveValue (scalar))
-                    return scalar.GetRawBits64(fail_value);
+                    return scalar.ULongLong(fail_value);
                 else
                     error.SetErrorString("could not get value");
             }
@@ -1228,7 +1318,7 @@
                 Mutex::Locker api_locker (target_sp->GetAPIMutex());
                 Scalar scalar;
                 if (value_sp->ResolveValue (scalar))
-                    return scalar.GetRawBits64(fail_value);
+                    return scalar.SLongLong(fail_value);
             }
         }
     }
@@ -1257,13 +1347,27 @@
                 Mutex::Locker api_locker (target_sp->GetAPIMutex());
                 Scalar scalar;
                 if (value_sp->ResolveValue (scalar))
-                    return scalar.GetRawBits64(fail_value);
+                    return scalar.ULongLong(fail_value);
             }
         }
     }
     return fail_value;
 }
 
+bool
+SBValue::MightHaveChildren ()
+{
+    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
+    bool has_children = false;
+    lldb::ValueObjectSP value_sp(GetSP());
+    if (value_sp)
+        has_children = value_sp->MightHaveChildren();
+
+    if (log)
+        log->Printf ("SBValue(%p)::HasChildren() => %i", value_sp.get(), has_children);
+    return has_children;
+}
+
 uint32_t
 SBValue::GetNumChildren ()
 {
@@ -1457,17 +1561,77 @@
 lldb::ValueObjectSP
 SBValue::GetSP () const
 {
-    return m_opaque_sp;
+    if (!m_opaque_sp || !m_opaque_sp->IsValid())
+        return ValueObjectSP();
+    return m_opaque_sp->GetSP();
+}
+
+void
+SBValue::SetSP (ValueImplSP impl_sp)
+{
+    m_opaque_sp = impl_sp;
 }
 
 void
 SBValue::SetSP (const lldb::ValueObjectSP &sp)
 {
-    m_opaque_sp = sp;
-    if (IsValid() && m_opaque_sp->HasSyntheticValue())
-        m_opaque_sp = m_opaque_sp->GetSyntheticValue();
+    if (sp)
+    {
+        lldb::TargetSP target_sp(sp->GetTargetSP());
+        if (target_sp)
+        {
+            lldb::DynamicValueType use_dynamic = target_sp->GetPreferDynamicValue();
+            bool use_synthetic = target_sp->TargetProperties::GetEnableSyntheticValue();
+            m_opaque_sp = ValueImplSP(new ValueImpl(sp, use_dynamic, use_synthetic));
+        }
+        else
+            m_opaque_sp = ValueImplSP(new ValueImpl(sp,eNoDynamicValues,true));
+    }
+    else
+        m_opaque_sp = ValueImplSP(new ValueImpl(sp,eNoDynamicValues,false));
 }
 
+void
+SBValue::SetSP (const lldb::ValueObjectSP &sp, lldb::DynamicValueType use_dynamic)
+{
+    if (sp)
+    {
+        lldb::TargetSP target_sp(sp->GetTargetSP());
+        if (target_sp)
+        {
+            bool use_synthetic = target_sp->TargetProperties::GetEnableSyntheticValue();
+            SetSP (sp, use_dynamic, use_synthetic);
+        }
+        else
+            SetSP (sp, use_dynamic, true);
+    }
+    else
+        SetSP (sp, use_dynamic, false);
+}
+
+void
+SBValue::SetSP (const lldb::ValueObjectSP &sp, bool use_synthetic)
+{
+    if (sp)
+    {
+        lldb::TargetSP target_sp(sp->GetTargetSP());
+        if (target_sp)
+        {
+            lldb::DynamicValueType use_dynamic = target_sp->GetPreferDynamicValue();
+            SetSP (sp, use_dynamic, use_synthetic);
+        }
+        else
+            SetSP (sp, eNoDynamicValues, use_synthetic);
+    }
+    else
+        SetSP (sp, eNoDynamicValues, use_synthetic);
+}
+
+void
+SBValue::SetSP (const lldb::ValueObjectSP &sp, lldb::DynamicValueType use_dynamic, bool use_synthetic)
+{
+    m_opaque_sp = ValueImplSP(new ValueImpl(sp,use_dynamic,use_synthetic));
+}
 
 bool
 SBValue::GetExpressionPath (SBStream &description)
@@ -1549,7 +1713,7 @@
         {
             Mutex::Locker api_locker (target_sp->GetAPIMutex());
             Error error;
-            sb_value = value_sp->AddressOf (error);
+            sb_value.SetSP(value_sp->AddressOf (error),GetPreferDynamicValue(), GetPreferSyntheticValue());
         }
     }
     LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
@@ -1766,7 +1930,8 @@
             watch_type |= LLDB_WATCH_TYPE_WRITE;
         
         Error rc;
-        WatchpointSP watchpoint_sp = target_sp->CreateWatchpoint(addr, byte_size, watch_type, rc);
+        ClangASTType type (value_sp->GetClangAST(), value_sp->GetClangType());
+        WatchpointSP watchpoint_sp = target_sp->CreateWatchpoint(addr, byte_size, &type, watch_type, rc);
         error.SetError(rc);
                 
         if (watchpoint_sp) 
@@ -1805,4 +1970,3 @@
         sb_watchpoint = Dereference().Watch (resolve_location, read, write, error);
     return sb_watchpoint;
 }
-

Modified: lldb/branches/windows/source/Breakpoint/Watchpoint.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Breakpoint/Watchpoint.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Breakpoint/Watchpoint.cpp (original)
+++ lldb/branches/windows/source/Breakpoint/Watchpoint.cpp Thu Nov  1 02:04:04 2012
@@ -15,6 +15,10 @@
 // Project includes
 #include "lldb/Breakpoint/StoppointCallbackContext.h"
 #include "lldb/Core/Stream.h"
+#include "lldb/Core/Value.h"
+#include "lldb/Core/ValueObject.h"
+#include "lldb/Core/ValueObjectMemory.h"
+#include "lldb/Symbol/ClangASTContext.h"
 #include "lldb/Target/Process.h"
 #include "lldb/Target/Target.h"
 #include "lldb/Target/ThreadSpec.h"
@@ -23,9 +27,9 @@
 using namespace lldb;
 using namespace lldb_private;
 
-Watchpoint::Watchpoint (lldb::addr_t addr, size_t size, bool hardware) :
+Watchpoint::Watchpoint (Target& target, lldb::addr_t addr, size_t size, const ClangASTType *type, bool hardware) :
     StoppointLocation (0, addr, size, hardware),
-    m_target(NULL),
+    m_target(target),
     m_enabled(false),
     m_is_hardware(hardware),
     m_is_watch_variable(false),
@@ -39,13 +43,27 @@
     m_false_alarms(0),
     m_decl_str(),
     m_watch_spec_str(),
-    m_snapshot_old_str(),
-    m_snapshot_new_str(),
-    m_snapshot_old_val(0),
-    m_snapshot_new_val(0),
+    m_type(),
     m_error(),
     m_options ()
 {
+    if (type && type->IsValid())
+        m_type = *type;
+    else
+    {
+        // If we don't have a known type, then we force it to unsigned int of the right size.
+        ClangASTContext *ast_context = target.GetScratchClangASTContext();
+        clang_type_t clang_type = ast_context->GetBuiltinTypeForEncodingAndBitSize(eEncodingUint, 8 * size);
+        m_type.SetClangType(ast_context->getASTContext(), clang_type);
+    }
+    
+    // Set the initial value of the watched variable:
+    if (m_target.GetProcessSP())
+    {
+        ExecutionContext exe_ctx;
+        m_target.GetProcessSP()->CalculateExecutionContext(exe_ctx);
+        CaptureWatchedValue (exe_ctx);
+    }
 }
 
 Watchpoint::~Watchpoint()
@@ -97,78 +115,6 @@
     return;
 }
 
-// Strip at most one character from the end of the string.
-static inline std::string
-RStripOnce(const std::string &str, const char c)
-{
-    std::string res = str;
-    size_t len = res.length();
-    if (len && res.at(len - 1) == '\n')
-        res.resize(len - 1);
-    return res;
-}
-
-std::string
-Watchpoint::GetOldSnapshot() const
-{
-    return m_snapshot_old_str;
-}
-
-void
-Watchpoint::SetOldSnapshot (const std::string &str)
-{
-    m_snapshot_old_str = RStripOnce(str, '\n');
-}
-
-std::string
-Watchpoint::GetNewSnapshot() const
-{
-    return m_snapshot_new_str;
-}
-
-void
-Watchpoint::SetNewSnapshot (const std::string &str)
-{
-    m_snapshot_old_str = m_snapshot_new_str;
-    m_snapshot_new_str = RStripOnce(str, '\n');
-}
-
-uint64_t
-Watchpoint::GetOldSnapshotVal() const
-{
-    return m_snapshot_old_val;
-}
-
-void
-Watchpoint::SetOldSnapshotVal (uint64_t val)
-{
-    m_snapshot_old_val = val;
-    return;
-}
-
-uint64_t
-Watchpoint::GetNewSnapshotVal() const
-{
-    return m_snapshot_new_val;
-}
-
-void
-Watchpoint::SetNewSnapshotVal (uint64_t val)
-{
-    m_snapshot_old_val = m_snapshot_new_val;
-    m_snapshot_new_val = val;
-    return;
-}
-
-void
-Watchpoint::ClearSnapshots()
-{
-    m_snapshot_old_str.clear();
-    m_snapshot_new_str.clear();
-    m_snapshot_old_val = 0;
-    m_snapshot_new_val = 0;
-}
-
 // Override default impl of StoppointLocation::IsHardware() since m_is_hardware
 // member field is more accurate.
 bool
@@ -189,6 +135,28 @@
     m_is_watch_variable = val;
 }
 
+bool
+Watchpoint::CaptureWatchedValue (const ExecutionContext &exe_ctx)
+{
+    ConstString watch_name("$__lldb__watch_value");
+    m_old_value_sp = m_new_value_sp;
+    Address watch_address(GetLoadAddress());
+    if (!m_type.IsValid())
+    {
+        // Don't know how to report new & old values, since we couldn't make a scalar type for this watchpoint.
+        // This works around an assert in ValueObjectMemory::Create.
+        // FIXME: This should not happen, but if it does in some case we care about,
+        // we can go grab the value raw and print it as unsigned.
+        return false;
+    }
+    m_new_value_sp = ValueObjectMemory::Create (exe_ctx.GetBestExecutionContextScope(), watch_name.AsCString(), watch_address, m_type);
+    m_new_value_sp = m_new_value_sp->CreateConstantValue(watch_name);
+    if (m_new_value_sp && m_new_value_sp->GetError().Success())
+        return true;
+    else
+        return false;
+}
+
 void
 Watchpoint::IncrementFalseAlarmsAndReviseHitCount()
 {
@@ -247,19 +215,14 @@
         s->Printf("\nWatchpoint %u hit:", GetID());
         prefix = "";
     }
-
-    if (IsWatchVariable())
+    
+    if (m_old_value_sp)
     {
-        if (!m_snapshot_old_str.empty())
-            s->Printf("\n%sold value: %s", prefix, m_snapshot_old_str.c_str());
-        if (!m_snapshot_new_str.empty())
-            s->Printf("\n%snew value: %s", prefix, m_snapshot_new_str.c_str());
+        s->Printf("\n%sold value: %s", prefix, m_old_value_sp->GetValueAsCString());
     }
-    else
+    if (m_new_value_sp)
     {
-        uint32_t num_hex_digits = GetByteSize() * 2;
-        s->Printf("\n%sold value: 0x%0*.*llx", prefix, num_hex_digits, num_hex_digits, m_snapshot_old_val);
-        s->Printf("\n%snew value: 0x%0*.*llx", prefix, num_hex_digits, num_hex_digits, m_snapshot_new_val);
+        s->Printf("\n%snew value: %s", prefix, m_new_value_sp->GetValueAsCString());
     }
 }
 
@@ -345,7 +308,6 @@
 
         // Don't clear the snapshots for now.
         // Within StopInfo.cpp, we purposely do disable/enable watchpoint while performing watchpoint actions.
-        //ClearSnapshots();
     }
     m_enabled = enabled;
 }

Modified: lldb/branches/windows/source/Commands/CommandObjectBreakpointCommand.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Commands/CommandObjectBreakpointCommand.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Commands/CommandObjectBreakpointCommand.cpp (original)
+++ lldb/branches/windows/source/Commands/CommandObjectBreakpointCommand.cpp Thu Nov  1 02:04:04 2012
@@ -44,71 +44,86 @@
         m_options (interpreter)
     {
         SetHelpLong (
-"\nGeneral information about entering breakpoint commands \n\
------------------------------------------------------- \n\
- \n\
-This command will cause you to be prompted to enter the command or set \n\
-of commands you wish to be executed when the specified breakpoint is \n\
-hit.  You will be told to enter your command(s), and will see a '> ' \n\
-prompt. Because you can enter one or many commands to be executed when \n\
-a breakpoint is hit, you will continue to be prompted after each \n\
-new-line that you enter, until you enter the word 'DONE', which will \n\
-cause the commands you have entered to be stored with the breakpoint \n\
-and executed when the breakpoint is hit. \n\
- \n\
-Syntax checking is not necessarily done when breakpoint commands are \n\
-entered.  An improperly written breakpoint command will attempt to get \n\
-executed when the breakpoint gets hit, and usually silently fail.  If \n\
-your breakpoint command does not appear to be getting executed, go \n\
-back and check your syntax. \n\
- \n\
- \n\
-Special information about PYTHON breakpoint commands                            \n\
-----------------------------------------------------                            \n\
-                                                                                \n\
-You may enter either one line of Python or multiple lines of Python             \n\
-(including defining whole functions, if desired).  If you enter a               \n\
-single line of Python, that will be passed to the Python interpreter            \n\
-'as is' when the breakpoint gets hit.  If you enter function                    \n\
-definitions, they will be passed to the Python interpreter as soon as           \n\
-you finish entering the breakpoint command, and they can be called              \n\
-later (don't forget to add calls to them, if you want them called when          \n\
-the breakpoint is hit).  If you enter multiple lines of Python that             \n\
-are not function definitions, they will be collected into a new,                \n\
-automatically generated Python function, and a call to the newly                \n\
-generated function will be attached to the breakpoint.                          \n\
-                                                                                \n\
-This auto-generated function is passed in two arguments:                        \n\
-                                                                                \n\
-    frame:  an SBFrame object representing the frame which hit the breakpoint.  \n\
-            From the frame you can get back to the thread and process.          \n\
-    bp_loc: the number of the breakpoint location that was hit.                 \n\
-            This is useful since one breakpoint can have many locations.        \n\
-                                                                                \n\
-Important Note: Because loose Python code gets collected into functions,        \n\
-if you want to access global variables in the 'loose' code, you need to         \n\
-specify that they are global, using the 'global' keyword.  Be sure to           \n\
-use correct Python syntax, including indentation, when entering Python          \n\
-breakpoint commands.                                                            \n\
-                                                                                \n\
-As a third option, you can pass the name of an already existing Python function \n\
-and that function will be attached to the breakpoint. It will get passed the    \n\
-frame and bp_loc arguments mentioned above.                                     \n\
-                                                                                \n\
-Example Python one-line breakpoint command: \n\
- \n\
-(lldb) breakpoint command add -s python 1 \n\
-Enter your Python command(s). Type 'DONE' to end. \n\
-> print \"Hit this breakpoint!\" \n\
-> DONE \n\
- \n\
-As a convenience, this also works for a short Python one-liner: \n\
-(lldb) breakpoint command add -s python 1 -o \"import time; print time.asctime()\" \n\
-(lldb) run \n\
-Launching '.../a.out'  (x86_64) \n\
-(lldb) Fri Sep 10 12:17:45 2010 \n\
-Process 21778 Stopped \n\
-* thread #1: tid = 0x2e03, 0x0000000100000de8 a.out`c + 7 at main.c:39, stop reason = breakpoint 1.1, queue = com.apple.main-thread \n\
+"\nGeneral information about entering breakpoint commands\n\
+------------------------------------------------------\n\
+\n\
+This command will cause you to be prompted to enter the command or set of\n\
+commands you wish to be executed when the specified breakpoint is hit. You\n\
+will be told to enter your command(s), and will see a '> 'prompt. Because\n\
+you can enter one or many commands to be executed when a breakpoint is hit,\n\
+you will continue to be prompted after each new-line that you enter, until you\n\
+enter the word 'DONE', which will cause the commands you have entered to be\n\
+stored with the breakpoint and executed when the breakpoint is hit.\n\
+\n\
+Syntax checking is not necessarily done when breakpoint commands are entered.\n\
+An improperly written breakpoint command will attempt to get executed when the\n\
+breakpoint gets hit, and usually silently fail.  If your breakpoint command does\n\
+not appear to be getting executed, go back and check your syntax.\n\
+\n\
+Special information about PYTHON breakpoint commands\n\
+----------------------------------------------------\n\
+\n\
+You may enter either one line of Python, multiple lines of Python (including\n\
+function definitions), or specify a Python function in a module that has already,\n\
+or will be imported.  If you enter a single line of Python, that will be passed\n\
+to the Python interpreter 'as is' when the breakpoint gets hit.  If you enter\n\
+function definitions, they will be passed to the Python interpreter as soon as\n\
+you finish entering the breakpoint command, and they can be called later (don't\n\
+forget to add calls to them, if you want them called when the breakpoint is\n\
+hit).  If you enter multiple lines of Python that are not function definitions,\n\
+they will be collected into a new, automatically generated Python function, and\n\
+a call to the newly generated function will be attached to the breakpoint.\n\
+\n\
+\n\
+This auto-generated function is passed in three arguments:\n\
+\n\
+    frame:  a lldb.SBFrame object for the frame which hit breakpoint.\n\
+    bp_loc: a lldb.SBBreakpointLocation object that represents the breakpoint\n\
+            location that was hit.\n\
+    dict:   the python session dictionary hit.\n\
+\n\
+When specifying a python function with the --python-function option, you need\n\
+to supply the function name prepended by the module name. So if you import a\n\
+module named 'myutils' that contains a 'breakpoint_callback' function, you would\n\
+specify the option as:\n\
+\n\
+    --python-function myutils.breakpoint_callback\n\
+\n\
+The function itself must have the following prototype:\n\
+\n\
+def breakpoint_callback(frame, bp_loc, dict):\n\
+  # Your code goes here\n\
+\n\
+The arguments are the same as the 3 auto generation function arguments listed\n\
+above. Note that the global variable 'lldb.frame' will NOT be setup when this\n\
+function is called, so be sure to use the 'frame' argument. The 'frame' argument\n\
+can get you to the thread (frame.GetThread()), the thread can get you to the\n\
+process (thread.GetProcess()), and the process can get you back to the target\n\
+(process.GetTarget()).\n\
+\n\
+Important Note: Because loose Python code gets collected into functions, if you\n\
+want to access global variables in the 'loose' code, you need to specify that\n\
+they are global, using the 'global' keyword.  Be sure to use correct Python\n\
+syntax, including indentation, when entering Python breakpoint commands.\n\
+\n\
+As a third option, you can pass the name of an already existing Python function\n\
+and that function will be attached to the breakpoint. It will get passed the\n\
+frame and bp_loc arguments mentioned above.\n\
+\n\
+Example Python one-line breakpoint command:\n\
+\n\
+(lldb) breakpoint command add -s python 1\n\
+Enter your Python command(s). Type 'DONE' to end.\n\
+> print \"Hit this breakpoint!\"\n\
+> DONE\n\
+\n\
+As a convenience, this also works for a short Python one-liner:\n\
+(lldb) breakpoint command add -s python 1 -o \"import time; print time.asctime()\"\n\
+(lldb) run\n\
+Launching '.../a.out'  (x86_64)\n\
+(lldb) Fri Sep 10 12:17:45 2010\n\
+Process 21778 Stopped\n\
+* thread #1: tid = 0x2e03, 0x0000000100000de8 a.out`c + 7 at main.c:39, stop reason = breakpoint 1.1, queue = com.apple.main-thread\n\
   36   	\n\
   37   	int c(int val)\n\
   38   	{\n\
@@ -116,50 +131,50 @@
   40   	}\n\
   41   	\n\
   42   	int main (int argc, char const *argv[])\n\
-(lldb) \n\
- \n\
-Example multiple line Python breakpoint command, using function definition: \n\
- \n\
-(lldb) breakpoint command add -s python 1 \n\
-Enter your Python command(s). Type 'DONE' to end. \n\
-> def breakpoint_output (bp_no): \n\
->     out_string = \"Hit breakpoint number \" + repr (bp_no) \n\
->     print out_string \n\
->     return True \n\
-> breakpoint_output (1) \n\
-> DONE \n\
- \n\
- \n\
-Example multiple line Python breakpoint command, using 'loose' Python: \n\
- \n\
-(lldb) breakpoint command add -s p 1 \n\
-Enter your Python command(s). Type 'DONE' to end. \n\
-> global bp_count \n\
-> bp_count = bp_count + 1 \n\
-> print \"Hit this breakpoint \" + repr(bp_count) + \" times!\" \n\
-> DONE \n\
- \n\
-In this case, since there is a reference to a global variable, \n\
-'bp_count', you will also need to make sure 'bp_count' exists and is \n\
-initialized: \n\
- \n\
-(lldb) script \n\
->>> bp_count = 0 \n\
->>> quit() \n\
- \n\
-(lldb)  \n\
- \n\
- \n\
-Final Note:  If you get a warning that no breakpoint command was generated, \n\
-but you did not get any syntax errors, you probably forgot to add a call \n\
-to your functions. \n\
- \n\
-Special information about debugger command breakpoint commands \n\
--------------------------------------------------------------- \n\
- \n\
-You may enter any debugger command, exactly as you would at the \n\
-debugger prompt.  You may enter as many debugger commands as you like, \n\
-but do NOT enter more than one command per line. \n" );
+(lldb)\n\
+\n\
+Example multiple line Python breakpoint command, using function definition:\n\
+\n\
+(lldb) breakpoint command add -s python 1\n\
+Enter your Python command(s). Type 'DONE' to end.\n\
+> def breakpoint_output (bp_no):\n\
+>     out_string = \"Hit breakpoint number \" + repr (bp_no)\n\
+>     print out_string\n\
+>     return True\n\
+> breakpoint_output (1)\n\
+> DONE\n\
+\n\
+\n\
+Example multiple line Python breakpoint command, using 'loose' Python:\n\
+\n\
+(lldb) breakpoint command add -s p 1\n\
+Enter your Python command(s). Type 'DONE' to end.\n\
+> global bp_count\n\
+> bp_count = bp_count + 1\n\
+> print \"Hit this breakpoint \" + repr(bp_count) + \" times!\"\n\
+> DONE\n\
+\n\
+In this case, since there is a reference to a global variable,\n\
+'bp_count', you will also need to make sure 'bp_count' exists and is\n\
+initialized:\n\
+\n\
+(lldb) script\n\
+>>> bp_count = 0\n\
+>>> quit()\n\
+\n\
+(lldb)\n\
+\n\
+\n\
+Final Note:  If you get a warning that no breakpoint command was generated, but\n\
+you did not get any syntax errors, you probably forgot to add a call to your\n\
+functions.\n\
+\n\
+Special information about debugger command breakpoint commands\n\
+--------------------------------------------------------------\n\
+\n\
+You may enter any debugger command, exactly as you would at the debugger prompt.\n\
+You may enter as many debugger commands as you like, but do NOT enter more than\n\
+one command per line.\n" );
 
         CommandArgumentEntry arg;
         CommandArgumentData bp_id_arg;

Modified: lldb/branches/windows/source/Commands/CommandObjectExpression.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Commands/CommandObjectExpression.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Commands/CommandObjectExpression.cpp (original)
+++ lldb/branches/windows/source/Commands/CommandObjectExpression.cpp Thu Nov  1 02:04:04 2012
@@ -164,7 +164,7 @@
 CommandObjectExpression::CommandObjectExpression (CommandInterpreter &interpreter) :
     CommandObjectRaw (interpreter,
                       "expression",
-                      "Evaluate a C/ObjC/C++ expression in the current program context, using variables currently in scope.",
+                      "Evaluate a C/ObjC/C++ expression in the current program context, using user defined variables and variables currently in scope.",
                       NULL,
                       eFlagProcessMustBePaused),
     m_option_group (interpreter),
@@ -180,10 +180,18 @@
     currently .25 seconds.  If it doesn't return in that time, the evaluation will be interrupted\n\
     and resumed with all threads running.  You can use the -a option to disable retrying on all\n\
     threads.  You can use the -t option to set a shorter timeout.\n\
+\n\
+User defined variables:\n\
+    You can define your own variables for convenience or to be used in subsequent expressions.\n\
+    You define them the same way you would define variables in C.  If the first character of \n\
+    your user defined variable is a $, then the variable's value will be available in future\n\
+    expressions, otherwise it will just be available in the current expression.\n\
+\n\
 Examples: \n\
 \n\
    expr my_struct->a = my_array[3] \n\
    expr -f bin -- (index * 8) + 5 \n\
+   expr unsigned int $foo = 5\n\
    expr char c[] = \"foo\"; c[0]\n");
 
     CommandArgumentEntry arg;

Modified: lldb/branches/windows/source/Commands/CommandObjectProcess.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Commands/CommandObjectProcess.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Commands/CommandObjectProcess.cpp (original)
+++ lldb/branches/windows/source/Commands/CommandObjectProcess.cpp Thu Nov  1 02:04:04 2012
@@ -314,13 +314,13 @@
 //CommandObjectProcessLaunch::CommandOptions::g_option_table[] =
 //{
 //{ SET1 | SET2 | SET3, false, "stop-at-entry", 's', no_argument,       NULL, 0, eArgTypeNone,    "Stop at the entry point of the program when launching a process."},
-//{ SET1              , false, "stdin",         'i', required_argument, NULL, 0, eArgTypePath,    "Redirect stdin for the process to <path>."},
-//{ SET1              , false, "stdout",        'o', required_argument, NULL, 0, eArgTypePath,    "Redirect stdout for the process to <path>."},
-//{ SET1              , false, "stderr",        'e', required_argument, NULL, 0, eArgTypePath,    "Redirect stderr for the process to <path>."},
+//{ SET1              , false, "stdin",         'i', required_argument, NULL, 0, eArgTypeDirectoryName,    "Redirect stdin for the process to <path>."},
+//{ SET1              , false, "stdout",        'o', required_argument, NULL, 0, eArgTypeDirectoryName,    "Redirect stdout for the process to <path>."},
+//{ SET1              , false, "stderr",        'e', required_argument, NULL, 0, eArgTypeDirectoryName,    "Redirect stderr for the process to <path>."},
 //{ SET1 | SET2 | SET3, false, "plugin",        'p', required_argument, NULL, 0, eArgTypePlugin,  "Name of the process plugin you want to use."},
-//{        SET2       , false, "tty",           't', optional_argument, NULL, 0, eArgTypePath,    "Start the process in a terminal. If <path> is specified, look for a terminal whose name contains <path>, else start the process in a new terminal."},
+//{        SET2       , false, "tty",           't', optional_argument, NULL, 0, eArgTypeDirectoryName,    "Start the process in a terminal. If <path> is specified, look for a terminal whose name contains <path>, else start the process in a new terminal."},
 //{               SET3, false, "no-stdio",      'n', no_argument,       NULL, 0, eArgTypeNone,    "Do not set up for terminal I/O to go to running process."},
-//{ SET1 | SET2 | SET3, false, "working-dir",   'w', required_argument, NULL, 0, eArgTypePath,    "Set the current working directory to <path> when running the inferior."},
+//{ SET1 | SET2 | SET3, false, "working-dir",   'w', required_argument, NULL, 0, eArgTypeDirectoryName,    "Set the current working directory to <path> when running the inferior."},
 //{ 0,                  false, NULL,             0,  0,                 NULL, 0, eArgTypeNone,    NULL }
 //};
 //

Modified: lldb/branches/windows/source/Commands/CommandObjectTarget.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Commands/CommandObjectTarget.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Commands/CommandObjectTarget.cpp (original)
+++ lldb/branches/windows/source/Commands/CommandObjectTarget.cpp Thu Nov  1 02:04:04 2012
@@ -155,7 +155,7 @@
         m_option_group (interpreter),
         m_arch_option (),
         m_platform_options(true), // Do include the "--platform" option in the platform settings by passing true
-        m_core_file (LLDB_OPT_SET_1, false, "core", 'c', 0, eArgTypePath, "Fullpath to a core file to use for this target.")
+        m_core_file (LLDB_OPT_SET_1, false, "core", 'c', 0, eArgTypeFilename, "Fullpath to a core file to use for this target.")
     {
         CommandArgumentEntry arg;
         CommandArgumentData file_arg;
@@ -234,13 +234,6 @@
 
             if (target_sp)
             {
-                if (file_path)
-                {
-                    // Use exactly what the user typed as the first argument
-                    // when we exec or posix_spawn
-                    target_sp->SetArg0 (file_path);
-                }
-
                 debugger.GetTargetList().SetSelectedTarget(target_sp.get());
                 if (core_file)
                 {
@@ -584,8 +577,8 @@
         m_option_group (interpreter),
         m_option_variable (false), // Don't include frame options
         m_option_format (eFormatDefault),
-        m_option_compile_units    (LLDB_OPT_SET_1, false, "file", 'f', 0, eArgTypePath, "A basename or fullpath to a file that contains global variables. This option can be specified multiple times."),
-        m_option_shared_libraries (LLDB_OPT_SET_1, false, "shlib",'s', 0, eArgTypePath, "A basename or fullpath to a shared library to use in the search for global variables. This option can be specified multiple times."),
+        m_option_compile_units    (LLDB_OPT_SET_1, false, "file", 'f', 0, eArgTypeFilename, "A basename or fullpath to a file that contains global variables. This option can be specified multiple times."),
+        m_option_shared_libraries (LLDB_OPT_SET_1, false, "shlib",'s', 0, eArgTypeFilename, "A basename or fullpath to a shared library to use in the search for global variables. This option can be specified multiple times."),
         m_varobj_options()
     {
         CommandArgumentEntry arg;
@@ -1159,7 +1152,7 @@
         CommandArgumentData path_arg;
         
         // Define the first (and only) variant of this arg.
-        path_arg.arg_type = eArgTypePath;
+        path_arg.arg_type = eArgTypeDirectoryName;
         path_arg.arg_repetition = eArgRepeatPlain;
         
         // There is only one variant this argument could be; put it into the argument entry.
@@ -2556,7 +2549,7 @@
                                                       "Set the load addresses for one or more sections in a target module.",
                                                       "target modules load [--file <module> --uuid <uuid>] <sect-name> <address> [<sect-name> <address> ....]"),
         m_option_group (interpreter),
-        m_file_option (LLDB_OPT_SET_1, false, "file", 'f', 0, eArgTypePath, "Fullpath or basename for module to load."),
+        m_file_option (LLDB_OPT_SET_1, false, "file", 'f', 0, eArgTypeFilename, "Fullpath or basename for module to load."),
         m_slide_option(LLDB_OPT_SET_1, false, "slide", 's', 0, eArgTypeOffset, "Set the load address for all sections to be the virtual address in the file plus the offset.", 0)
     {
         m_option_group.Append (&m_uuid_option_group, LLDB_OPT_SET_ALL, LLDB_OPT_SET_1);

Modified: lldb/branches/windows/source/Commands/CommandObjectWatchpoint.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Commands/CommandObjectWatchpoint.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Commands/CommandObjectWatchpoint.cpp (original)
+++ lldb/branches/windows/source/Commands/CommandObjectWatchpoint.cpp Thu Nov  1 02:04:04 2012
@@ -1056,6 +1056,8 @@
                 valobj_sp = valobj_list.GetValueObjectAtIndex(0);
         }
         
+        ClangASTType type;
+        
         if (valobj_sp) {
             AddressType addr_type;
             addr = valobj_sp->GetAddressOf(false, &addr_type);
@@ -1065,6 +1067,7 @@
                 size = m_option_watchpoint.watch_size == 0 ? valobj_sp->GetByteSize()
                                                            : m_option_watchpoint.watch_size;
             }
+            type.SetClangType(valobj_sp->GetClangAST(), valobj_sp->GetClangType());
         } else {
             const char *error_cstr = error.AsCString(NULL);
             if (error_cstr)
@@ -1078,7 +1081,7 @@
         // Now it's time to create the watchpoint.
         uint32_t watch_type = m_option_watchpoint.watch_type;
         error.Clear();
-        Watchpoint *wp = target->CreateWatchpoint(addr, size, watch_type, error).get();
+        Watchpoint *wp = target->CreateWatchpoint(addr, size, &type, watch_type, error).get();
         if (wp) {
             wp->SetWatchSpec(command.GetArgumentAtIndex(0));
             wp->SetWatchVariable(true);
@@ -1088,9 +1091,6 @@
                 var_sp->GetDeclaration().DumpStopContext(&ss, true);
                 wp->SetDeclInfo(ss.GetString());
             }
-            StreamString ss;
-            ValueObject::DumpValueObject(ss, valobj_sp.get());
-            wp->SetNewSnapshot(ss.GetString());
             output_stream.Printf("Watchpoint created: ");
             wp->GetDescription(&output_stream, lldb::eDescriptionLevelFull);
             output_stream.EOL();
@@ -1265,8 +1265,15 @@
 
         // Now it's time to create the watchpoint.
         uint32_t watch_type = m_option_watchpoint.watch_type;
+        
+        // Fetch the type from the value object, the type of the watched object is the pointee type
+        /// of the expression, so convert to that if we  found a valid type.
+        ClangASTType type(valobj_sp->GetClangAST(), valobj_sp->GetClangType());
+        if (type.IsValid())
+            type.SetClangType(type.GetASTContext(), type.GetPointeeType());
+        
         Error error;
-        Watchpoint *wp = target->CreateWatchpoint(addr, size, watch_type, error).get();
+        Watchpoint *wp = target->CreateWatchpoint(addr, size, &type, watch_type, error).get();
         if (wp) {
             if (var_sp && var_sp->GetDeclaration().GetFile()) {
                 StreamString ss;
@@ -1275,11 +1282,6 @@
                 wp->SetDeclInfo(ss.GetString());
             }
             output_stream.Printf("Watchpoint created: ");
-            uint64_t val = target->GetProcessSP()->ReadUnsignedIntegerFromMemory(addr, size, 0, error);
-            if (error.Success())
-                wp->SetNewSnapshotVal(val);
-            else
-                output_stream.Printf("watchpoint snapshot failed: %s", error.AsCString());
             wp->GetDescription(&output_stream, lldb::eDescriptionLevelFull);
             output_stream.EOL();
             result.SetStatus(eReturnStatusSuccessFinishResult);

Modified: lldb/branches/windows/source/Core/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Core/CMakeLists.txt?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Core/CMakeLists.txt (original)
+++ lldb/branches/windows/source/Core/CMakeLists.txt Thu Nov  1 02:04:04 2012
@@ -64,6 +64,7 @@
   UUID.cpp
   Value.cpp
   ValueObject.cpp
+  ValueObjectCast.cpp
   ValueObjectChild.cpp
   ValueObjectConstResult.cpp
   ValueObjectConstResultChild.cpp

Modified: lldb/branches/windows/source/Core/CXXFormatterFunctions.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Core/CXXFormatterFunctions.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Core/CXXFormatterFunctions.cpp (original)
+++ lldb/branches/windows/source/Core/CXXFormatterFunctions.cpp Thu Nov  1 02:04:04 2012
@@ -19,6 +19,7 @@
 #include "lldb/Core/ValueObject.h"
 #include "lldb/Core/ValueObjectConstResult.h"
 #include "lldb/Host/Endian.h"
+#include "lldb/Symbol/ClangASTContext.h"
 #include "lldb/Target/ObjCLanguageRuntime.h"
 #include "lldb/Target/Target.h"
 
@@ -686,6 +687,63 @@
     return true;
 }
 
+bool
+lldb_private::formatters::ObjCBOOLSummaryProvider (ValueObject& valobj, Stream& stream)
+{
+    const uint32_t type_info = ClangASTContext::GetTypeInfo(valobj.GetClangType(),
+                                                            valobj.GetClangAST(),
+                                                            NULL);
+    
+    ValueObjectSP real_guy_sp = valobj.GetSP();
+    
+    if (type_info & ClangASTContext::eTypeIsPointer)
+    {
+        Error err;
+        real_guy_sp = valobj.Dereference(err);
+        if (err.Fail() || !real_guy_sp)
+            return false;
+    }
+    else if (type_info & ClangASTContext::eTypeIsReference)
+    {
+        real_guy_sp =  valobj.GetChildAtIndex(0, true);
+        if (!real_guy_sp)
+            return false;
+    }
+    uint64_t value = real_guy_sp->GetValueAsUnsigned(0);
+    if (value == 0)
+    {
+        stream.Printf("NO");
+        return true;
+    }
+    stream.Printf("YES");
+    return true;
+}
+
+template <bool is_sel_ptr>
+bool
+lldb_private::formatters::ObjCSELSummaryProvider (ValueObject& valobj, Stream& stream)
+{
+    lldb::addr_t data_address = LLDB_INVALID_ADDRESS;
+    
+    if (is_sel_ptr)
+        data_address = valobj.GetValueAsUnsigned(LLDB_INVALID_ADDRESS);
+    else
+        data_address = valobj.GetAddressOf();
+
+    if (data_address == LLDB_INVALID_ADDRESS)
+        return false;
+    
+    ExecutionContext exe_ctx(valobj.GetExecutionContextRef());
+    
+    void* char_opaque_type = valobj.GetClangAST()->CharTy.getAsOpaquePtr();
+    ClangASTType charstar(valobj.GetClangAST(),ClangASTType::GetPointerType(valobj.GetClangAST(), char_opaque_type));
+    
+    ValueObjectSP valobj_sp(ValueObject::CreateValueObjectFromAddress("text", data_address, exe_ctx, charstar));
+    
+    stream.Printf("%s",valobj_sp->GetSummaryAsCString());
+    return true;
+}
+
 lldb_private::formatters::NSArrayMSyntheticFrontEnd::NSArrayMSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp) :
 SyntheticChildrenFrontEnd(*valobj_sp.get()),
 m_exe_ctx_ref(),
@@ -772,6 +830,14 @@
     return false;
 }
 
+bool
+lldb_private::formatters::NSArrayMSyntheticFrontEnd::MightHaveChildren ()
+{
+    if (!m_data_32 && !m_data_64)
+        Update ();
+    return CalculateNumChildren();
+}
+
 static uint32_t
 ExtractIndexFromString (const char* item_name)
 {
@@ -881,6 +947,14 @@
     return false;
 }
 
+bool
+lldb_private::formatters::NSArrayISyntheticFrontEnd::MightHaveChildren ()
+{
+    if (!m_data_ptr)
+        Update ();
+    return CalculateNumChildren();
+}
+
 lldb::ValueObjectSP
 lldb_private::formatters::NSArrayISyntheticFrontEnd::GetChildAtIndex (uint32_t idx)
 {
@@ -975,6 +1049,12 @@
     return false;
 }
 
+bool
+lldb_private::formatters::NSArrayCodeRunningSyntheticFrontEnd::MightHaveChildren ()
+{
+    return CalculateNumChildren() > 0;
+}
+
 uint32_t
 lldb_private::formatters::NSArrayCodeRunningSyntheticFrontEnd::GetIndexOfChildWithName (const ConstString &name)
 {
@@ -1066,6 +1146,12 @@
     return false;
 }
 
+bool
+lldb_private::formatters::NSDictionaryCodeRunningSyntheticFrontEnd::MightHaveChildren ()
+{
+    return CalculateNumChildren() > 0;
+}
+
 uint32_t
 lldb_private::formatters::NSDictionaryCodeRunningSyntheticFrontEnd::GetIndexOfChildWithName (const ConstString &name)
 {
@@ -1158,6 +1244,14 @@
     return false;
 }
 
+bool
+lldb_private::formatters::NSDictionaryISyntheticFrontEnd::MightHaveChildren ()
+{
+    if (!m_data_32 && !m_data_64)
+        Update ();
+    return CalculateNumChildren();
+}
+
 lldb::ValueObjectSP
 lldb_private::formatters::NSDictionaryISyntheticFrontEnd::GetChildAtIndex (uint32_t idx)
 {
@@ -1299,6 +1393,14 @@
     return false;
 }
 
+bool
+lldb_private::formatters::NSDictionaryMSyntheticFrontEnd::MightHaveChildren ()
+{
+    if (!m_data_32 && !m_data_64)
+        Update ();
+    return CalculateNumChildren();
+}
+
 lldb::ValueObjectSP
 lldb_private::formatters::NSDictionaryMSyntheticFrontEnd::GetChildAtIndex (uint32_t idx)
 {
@@ -1372,3 +1474,9 @@
 
 template bool
 lldb_private::formatters::NSDataSummaryProvider<false> (ValueObject&, Stream&) ;
+
+template bool
+lldb_private::formatters::ObjCSELSummaryProvider<true> (ValueObject&, Stream&) ;
+
+template bool
+lldb_private::formatters::ObjCSELSummaryProvider<false> (ValueObject&, Stream&) ;

Modified: lldb/branches/windows/source/Core/DataExtractor.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Core/DataExtractor.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Core/DataExtractor.cpp (original)
+++ lldb/branches/windows/source/Core/DataExtractor.cpp Thu Nov  1 02:04:04 2012
@@ -11,6 +11,8 @@
 #include <stddef.h>
 
 #include <bitset>
+#include <limits>
+#include <sstream>
 #include <string>
 
 #include "llvm/ADT/APFloat.h"
@@ -715,10 +717,10 @@
     {
         if (bitfield_bit_offset > 0)
             sval64 >>= bitfield_bit_offset;
-        uint64_t bitfield_mask = ((1 << bitfield_bit_size) - 1);
+        uint64_t bitfield_mask = (((uint64_t)1) << bitfield_bit_size) - 1;
         sval64 &= bitfield_mask;
         // sign extend if needed
-        if (sval64 & (1 << (bitfield_bit_size - 1)))
+        if (sval64 & (((uint64_t)1) << (bitfield_bit_size - 1)))
             sval64 |= ~bitfield_mask;
     }
     return sval64;
@@ -1706,22 +1708,30 @@
             break;
 
         case eFormatFloat:
-            if (sizeof(float) == item_byte_size)
-            {
-                s->Printf ("%g", GetFloat (&offset));
-            }
-            else if (sizeof(double) == item_byte_size)
-            {
-                s->Printf ("%lg", GetDouble(&offset));
-            }
-            else if (sizeof(long double) == item_byte_size)
-            {
-                s->Printf ("%Lg", GetLongDouble(&offset));
-            }
-            else
             {
-                s->Printf("error: unsupported byte size (%u) for float format", item_byte_size);
-                return offset;
+                std::ostringstream ss;
+                switch (item_byte_size)
+                {
+                default:
+                    s->Printf("error: unsupported byte size (%u) for float format", item_byte_size);
+                    return offset;
+                case sizeof(float):
+                    ss.precision(std::numeric_limits<float>::digits10);
+                    ss << GetFloat(&offset);
+                    break;
+                case sizeof(double):
+                    ss.precision(std::numeric_limits<double>::digits10);
+                    ss << GetDouble(&offset);
+                    break;
+#ifndef _MSC_VER
+                case sizeof(long double):
+                    ss.precision(std::numeric_limits<long double>::digits10);
+                    ss << GetLongDouble(&offset);
+                    break;
+#endif
+                }
+                ss.flush();
+                s->Printf("%s", ss.str().c_str());
             }
             break;
 

Modified: lldb/branches/windows/source/Core/Debugger.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Core/Debugger.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Core/Debugger.cpp (original)
+++ lldb/branches/windows/source/Core/Debugger.cpp Thu Nov  1 02:04:04 2012
@@ -22,6 +22,7 @@
 #include "lldb/Core/FormatManager.h"
 #include "lldb/Core/InputReader.h"
 #include "lldb/Core/Module.h"
+#include "lldb/Core/PluginManager.h"
 #include "lldb/Core/RegisterValue.h"
 #include "lldb/Core/State.h"
 #include "lldb/Core/StreamAsynchronousIO.h"
@@ -125,7 +126,8 @@
 {   "term-width",               OptionValue::eTypeSInt64 , true, 80   , NULL, NULL, "The maximum number of columns to use for displaying text." },
 {   "thread-format",            OptionValue::eTypeString , true, 0    , DEFAULT_THREAD_FORMAT, NULL, "The default thread format string to use when displaying thread information." },
 {   "use-external-editor",      OptionValue::eTypeBoolean, true, false, NULL, NULL, "Whether to use an external editor or not." },
-{   NULL,                       OptionValue::eTypeInvalid, true, 0    , NULL, NULL, NULL }
+
+    {   NULL,                       OptionValue::eTypeInvalid, true, 0    , NULL, NULL, NULL }
 };
 
 enum
@@ -438,6 +440,8 @@
                                           this);
         }
     }
+    
+    PluginManager::DebuggerInitialize (*this);
 }
 
 DebuggerSP
@@ -677,7 +681,12 @@
     if (out_file.IsValid() == false)
         out_file.SetStream (stdout, false);
     
-    GetCommandInterpreter().GetScriptInterpreter()->ResetOutputFileHandle (fh);
+    // do not create the ScriptInterpreter just for setting the output file handle
+    // as the constructor will know how to do the right thing on its own
+    const bool can_create = false;
+    ScriptInterpreter* script_interpreter = GetCommandInterpreter().GetScriptInterpreter(can_create);
+    if (script_interpreter)
+        script_interpreter->ResetOutputFileHandle (fh);
 }
 
 void

Modified: lldb/branches/windows/source/Core/Event.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Core/Event.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Core/Event.cpp (original)
+++ lldb/branches/windows/source/Core/Event.cpp Thu Nov  1 02:04:04 2012
@@ -52,7 +52,25 @@
 void
 Event::Dump (Stream *s) const
 {
-    s->Printf("%p Event: broadcaster = %p, type = 0x%8.8x, data = ", this, m_broadcaster, m_type);
+    if (m_broadcaster)
+    {
+        StreamString event_name;
+        if (m_broadcaster->GetEventNames (event_name, m_type, false))
+            s->Printf("%p Event: broadcaster = %p (%s), type = 0x%8.8x (%s), data = ",
+                      this,
+                      m_broadcaster,
+                      m_broadcaster->GetBroadcasterName().GetCString(),
+                      m_type,
+                      event_name.GetString().c_str());
+        else
+            s->Printf("%p Event: broadcaster = %p (%s), type = 0x%8.8x, data = ",
+                      this,
+                      m_broadcaster,
+                      m_broadcaster->GetBroadcasterName().GetCString(),
+                      m_type);
+    }
+    else
+        s->Printf("%p Event: broadcaster = NULL, type = 0x%8.8x, data = ", this, m_type);
 
     if (m_data_ap.get() == NULL)
         s->Printf ("<NULL>");

Modified: lldb/branches/windows/source/Core/FormatManager.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Core/FormatManager.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Core/FormatManager.cpp (original)
+++ lldb/branches/windows/source/Core/FormatManager.cpp Thu Nov  1 02:04:04 2012
@@ -437,14 +437,20 @@
     uint32_t reason_why;        
     ActiveCategoriesIterator begin, end = m_active_categories.end();
     
+    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_TYPES));
+    
     for (begin = m_active_categories.begin(); begin != end; begin++)
     {
-        lldb::TypeCategoryImplSP category = *begin;
+        lldb::TypeCategoryImplSP category_sp = *begin;
         lldb::TypeSummaryImplSP current_format;
-        if (!category->Get(valobj, current_format, use_dynamic, &reason_why))
+        if (log)
+            log->Printf("[CategoryMap::GetSummaryFormat] Trying to use category %s\n", category_sp->GetName());
+        if (!category_sp->Get(valobj, current_format, use_dynamic, &reason_why))
             continue;
         return current_format;
     }
+    if (log)
+        log->Printf("[CategoryMap::GetSummaryFormat] nothing found - returning empty SP\n");
     return lldb::TypeSummaryImplSP();
 }
 
@@ -554,14 +560,20 @@
     
     ActiveCategoriesIterator begin, end = m_active_categories.end();
     
+    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_TYPES));
+    
     for (begin = m_active_categories.begin(); begin != end; begin++)
     {
-        lldb::TypeCategoryImplSP category = *begin;
+        lldb::TypeCategoryImplSP category_sp = *begin;
         lldb::SyntheticChildrenSP current_format;
-        if (!category->Get(valobj, current_format, use_dynamic, &reason_why))
+        if (log)
+            log->Printf("[CategoryMap::GetSyntheticChildren] Trying to use category %s\n", category_sp->GetName());
+        if (!category_sp->Get(valobj, current_format, use_dynamic, &reason_why))
             continue;
         return current_format;
     }
+    if (log)
+        log->Printf("[CategoryMap::GetSyntheticChildren] nothing found - returning empty SP\n");
     return lldb::SyntheticChildrenSP();
 }
 #endif
@@ -935,35 +947,28 @@
 
     TypeCategoryImpl::SharedPointer objc_category_sp = GetCategory(m_objc_category_name);
     
-#ifndef LLDB_DISABLE_PYTHON
-    lldb::TypeSummaryImplSP ObjC_BOOL_summary(new ScriptSummaryFormat(objc_flags,
-                                                                      "lldb.formatters.objc.objc.BOOL_SummaryProvider",
-                                                                      ""));
+    lldb::TypeSummaryImplSP ObjC_BOOL_summary(new CXXFunctionSummaryFormat(objc_flags, lldb_private::formatters::ObjCBOOLSummaryProvider,""));
     objc_category_sp->GetSummaryNavigator()->Add(ConstString("BOOL"),
                                                  ObjC_BOOL_summary);
-
-    lldb::TypeSummaryImplSP ObjC_BOOLRef_summary(new ScriptSummaryFormat(objc_flags,
-                                                                      "lldb.formatters.objc.objc.BOOLRef_SummaryProvider",
-                                                                      ""));
     objc_category_sp->GetSummaryNavigator()->Add(ConstString("BOOL &"),
-                                                 ObjC_BOOLRef_summary);
-    lldb::TypeSummaryImplSP ObjC_BOOLPtr_summary(new ScriptSummaryFormat(objc_flags,
-                                                                      "lldb.formatters.objc.objc.BOOLPtr_SummaryProvider",
-                                                                      ""));
+                                                 ObjC_BOOL_summary);
     objc_category_sp->GetSummaryNavigator()->Add(ConstString("BOOL *"),
-                                                 ObjC_BOOLPtr_summary);
+                                                 ObjC_BOOL_summary);
+
 
-    
     // we need to skip pointers here since we are special casing a SEL* when retrieving its value
     objc_flags.SetSkipPointers(true);
-    AddScriptSummary(objc_category_sp, "lldb.formatters.objc.Selector.SEL_Summary", ConstString("SEL"), objc_flags);
-    AddScriptSummary(objc_category_sp, "lldb.formatters.objc.Selector.SEL_Summary", ConstString("struct objc_selector"), objc_flags);
-    AddScriptSummary(objc_category_sp, "lldb.formatters.objc.Selector.SEL_Summary", ConstString("objc_selector"), objc_flags);
-    AddScriptSummary(objc_category_sp, "lldb.formatters.objc.Selector.SELPointer_Summary", ConstString("objc_selector *"), objc_flags);
+#ifndef LLDB_DISABLE_PYTHON
+    AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCSELSummaryProvider<false>, "SEL summary", ConstString("SEL"), objc_flags);
+    AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCSELSummaryProvider<false>, "SEL summary", ConstString("struct objc_selector"), objc_flags);
+    AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCSELSummaryProvider<false>, "SEL summary", ConstString("objc_selector"), objc_flags);
+    AddCXXSummary(objc_category_sp, lldb_private::formatters::ObjCSELSummaryProvider<true>, "SEL summary", ConstString("objc_selector *"), objc_flags);
+    
     AddScriptSummary(objc_category_sp, "lldb.formatters.objc.Class.Class_Summary", ConstString("Class"), objc_flags);
-    objc_flags.SetSkipPointers(false);
 #endif // LLDB_DISABLE_PYTHON
 
+    objc_flags.SetSkipPointers(false);
+
     TypeCategoryImpl::SharedPointer corefoundation_category_sp = GetCategory(m_corefoundation_category_name);
 
     AddSummary(corefoundation_category_sp,

Modified: lldb/branches/windows/source/Core/Module.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Core/Module.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Core/Module.cpp (original)
+++ lldb/branches/windows/source/Core/Module.cpp Thu Nov  1 02:04:04 2012
@@ -696,7 +696,8 @@
     std::string type_scope;
     std::string type_basename;
     const bool append = true;
-    if (Type::GetTypeScopeAndBasename (type_name_cstr, type_scope, type_basename))
+    TypeClass type_class = eTypeClassAny;
+    if (Type::GetTypeScopeAndBasename (type_name_cstr, type_scope, type_basename, type_class))
     {
         // Check if "name" starts with "::" which means the qualified type starts
         // from the root namespace and implies and exact match. The typenames we
@@ -711,14 +712,25 @@
         ConstString type_basename_const_str (type_basename.c_str());
         if (FindTypes_Impl(sc, type_basename_const_str, NULL, append, max_matches, types))
         {
-            types.RemoveMismatchedTypes (type_scope, type_basename, exact_match);
+            types.RemoveMismatchedTypes (type_scope, type_basename, type_class, exact_match);
             num_matches = types.GetSize();
         }
     }
     else
     {
         // The type is not in a namespace/class scope, just search for it by basename
-        num_matches = FindTypes_Impl(sc, name, NULL, append, max_matches, types);
+        if (type_class != eTypeClassAny)
+        {
+            // The "type_name_cstr" will have been modified if we have a valid type class
+            // prefix (like "struct", "class", "union", "typedef" etc).
+            num_matches = FindTypes_Impl(sc, ConstString(type_name_cstr), NULL, append, max_matches, types);
+            types.RemoveMismatchedTypes (type_class);
+            num_matches = types.GetSize();
+        }
+        else
+        {
+            num_matches = FindTypes_Impl(sc, name, NULL, append, max_matches, types);
+        }
     }
     
     return num_matches;

Modified: lldb/branches/windows/source/Core/PluginManager.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Core/PluginManager.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Core/PluginManager.cpp (original)
+++ lldb/branches/windows/source/Core/PluginManager.cpp Thu Nov  1 02:04:04 2012
@@ -14,10 +14,12 @@
 #include <string>
 #include <vector>
 
+#include "lldb/Core/Debugger.h"
 #include "lldb/Core/Error.h"
 #include "lldb/Host/FileSpec.h"
 #include "lldb/Host/Host.h"
 #include "lldb/Host/Mutex.h"
+#include "lldb/Interpreter/OptionValueProperties.h"
 
 #include "llvm/ADT/StringRef.h"
 
@@ -436,13 +438,15 @@
     DynamicLoaderInstance() :
         name(),
         description(),
-        create_callback(NULL)
+        create_callback(NULL),
+        debugger_init_callback (NULL)
     {
     }
 
     std::string name;
     std::string description;
     DynamicLoaderCreateInstance create_callback;
+    DebuggerInitializeCallback debugger_init_callback;
 };
 
 typedef std::vector<DynamicLoaderInstance> DynamicLoaderInstances;
@@ -468,7 +472,8 @@
 (
     const char *name,
     const char *description,
-    DynamicLoaderCreateInstance create_callback
+    DynamicLoaderCreateInstance create_callback,
+    DebuggerInitializeCallback debugger_init_callback
 )
 {
     if (create_callback)
@@ -479,6 +484,7 @@
         if (description && description[0])
             instance.description = description;
         instance.create_callback = create_callback;
+        instance.debugger_init_callback = debugger_init_callback;
         Mutex::Locker locker (GetDynamicLoaderMutex ());
         GetDynamicLoaderInstances ().push_back (instance);
     }
@@ -1802,3 +1808,92 @@
     return NULL;
 }
 
+void
+PluginManager::DebuggerInitialize (Debugger &debugger)
+{
+    Mutex::Locker locker (GetDynamicLoaderMutex ());
+    DynamicLoaderInstances &instances = GetDynamicLoaderInstances ();
+    
+    DynamicLoaderInstances::iterator pos, end = instances.end();
+    for (pos = instances.begin(); pos != end; ++ pos)
+    {
+        if (pos->debugger_init_callback)
+            pos->debugger_init_callback (debugger);
+    }
+}
+
+static lldb::OptionValuePropertiesSP
+GetDebuggerPropertyForPlugins (Debugger &debugger,
+                               const ConstString &plugin_type_name,
+                               const ConstString &plugin_type_desc,
+                               bool can_create)
+{
+    lldb::OptionValuePropertiesSP parent_properties_sp (debugger.GetValueProperties());
+    if (parent_properties_sp)
+    {
+        static ConstString g_property_name("plugin");
+        
+        OptionValuePropertiesSP plugin_properties_sp = parent_properties_sp->GetSubProperty (NULL, g_property_name);
+        if (!plugin_properties_sp && can_create)
+        {
+            plugin_properties_sp.reset (new OptionValueProperties (g_property_name));
+            parent_properties_sp->AppendProperty (g_property_name,
+                                                  ConstString("Settings specify to plugins."),
+                                                  true,
+                                                  plugin_properties_sp);
+        }
+        
+        if (plugin_properties_sp)
+        {
+            lldb::OptionValuePropertiesSP plugin_type_properties_sp = plugin_properties_sp->GetSubProperty (NULL, plugin_type_name);
+            if (!plugin_type_properties_sp && can_create)
+            {
+                plugin_type_properties_sp.reset (new OptionValueProperties (plugin_type_name));
+                plugin_properties_sp->AppendProperty (plugin_type_name,
+                                                      plugin_type_desc,
+                                                      true,
+                                                      plugin_type_properties_sp);
+            }
+            return plugin_type_properties_sp;
+        }
+    }
+    return lldb::OptionValuePropertiesSP();
+}
+
+lldb::OptionValuePropertiesSP
+PluginManager::GetSettingForDynamicLoaderPlugin (Debugger &debugger, const ConstString &setting_name)
+{
+    lldb::OptionValuePropertiesSP properties_sp;
+    lldb::OptionValuePropertiesSP plugin_type_properties_sp (GetDebuggerPropertyForPlugins (debugger,
+                                                                                            ConstString("dynamic-loader"),
+                                                                                            ConstString(), // not creating to so we don't need the description
+                                                                                            false));
+    if (plugin_type_properties_sp)
+        properties_sp = plugin_type_properties_sp->GetSubProperty (NULL, setting_name);
+    return properties_sp;
+}
+
+bool
+PluginManager::CreateSettingForDynamicLoaderPlugin (Debugger &debugger,
+                                                    const lldb::OptionValuePropertiesSP &properties_sp,
+                                                    const ConstString &description,
+                                                    bool is_global_property)
+{
+    if (properties_sp)
+    {
+        lldb::OptionValuePropertiesSP plugin_type_properties_sp (GetDebuggerPropertyForPlugins (debugger,
+                                                                                                ConstString("dynamic-loader"),
+                                                                                                ConstString("Settings for dynamic loader plug-ins"),
+                                                                                                true));
+        if (plugin_type_properties_sp)
+        {
+            plugin_type_properties_sp->AppendProperty (properties_sp->GetName(),
+                                                       description,
+                                                       is_global_property,
+                                                       properties_sp);
+            return true;
+        }
+    }
+    return false;
+}
+

Modified: lldb/branches/windows/source/Core/UserSettingsController.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Core/UserSettingsController.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Core/UserSettingsController.cpp (original)
+++ lldb/branches/windows/source/Core/UserSettingsController.cpp Thu Nov  1 02:04:04 2012
@@ -95,3 +95,15 @@
     }
     return matching_properties.size();
 }
+
+
+lldb::OptionValuePropertiesSP
+Properties::GetSubProperty (const ExecutionContext *exe_ctx,
+                            const ConstString &name)
+{
+    OptionValuePropertiesSP properties_sp (GetValueProperties ());
+    if (properties_sp)
+        return properties_sp->GetSubProperty (exe_ctx, name);
+    return lldb::OptionValuePropertiesSP();
+}
+

Modified: lldb/branches/windows/source/Core/Value.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Core/Value.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Core/Value.cpp (original)
+++ lldb/branches/windows/source/Core/Value.cpp Thu Nov  1 02:04:04 2012
@@ -662,6 +662,7 @@
     switch (value_type)
     {
     case eValueTypeScalar:      return "scalar";
+    case eValueTypeVector:      return "vector";
     case eValueTypeFileAddress: return "file address";
     case eValueTypeLoadAddress: return "load address";
     case eValueTypeHostAddress: return "host address";

Modified: lldb/branches/windows/source/Core/ValueObject.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Core/ValueObject.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Core/ValueObject.cpp (original)
+++ lldb/branches/windows/source/Core/ValueObject.cpp Thu Nov  1 02:04:04 2012
@@ -24,6 +24,7 @@
 #include "lldb/Core/Log.h"
 #include "lldb/Core/Module.h"
 #include "lldb/Core/StreamString.h"
+#include "lldb/Core/ValueObjectCast.h"
 #include "lldb/Core/ValueObjectChild.h"
 #include "lldb/Core/ValueObjectConstResult.h"
 #include "lldb/Core/ValueObjectDynamicValue.h"
@@ -276,10 +277,14 @@
 }
 
 void
-ValueObject::ResetCompleteTypeInfo ()
+ValueObject::ClearDynamicTypeInformation ()
 {
     m_did_calculate_complete_objc_class_type = false;
+    m_last_format_mgr_revision = 0;
     m_override_type = ClangASTType();
+    SetValueFormat(lldb::TypeFormatImplSP());
+    SetSummaryFormat(lldb::TypeSummaryImplSP());
+    SetSyntheticChildren(lldb::SyntheticChildrenSP());
 }
 
 ClangASTType
@@ -417,6 +422,7 @@
                 break;
 
             case Value::eValueTypeScalar:
+            case Value::eValueTypeVector:
                 if (m_value.GetContextType() == Value::eContextTypeRegisterInfo)
                 {
                     RegisterInfo *reg_info = m_value.GetRegisterInfo();
@@ -426,10 +432,10 @@
                             m_location_str = reg_info->name;
                         else if (reg_info->alt_name)
                             m_location_str = reg_info->alt_name;
-                        break;
+
+                        m_location_str = (reg_info->encoding == lldb::eEncodingVector) ? "vector" : "scalar";
                     }
                 }
-                m_location_str = "scalar";
                 break;
 
             case Value::eValueTypeLoadAddress:
@@ -593,6 +599,30 @@
     }
     return m_children.GetChildrenCount();
 }
+
+bool
+ValueObject::MightHaveChildren()
+{
+    bool has_children = false;
+    clang_type_t clang_type = GetClangType();
+    if (clang_type)
+    {
+        const uint32_t type_info = ClangASTContext::GetTypeInfo (clang_type,
+                                                                 GetClangAST(),
+                                                                 NULL);
+        if (type_info & (ClangASTContext::eTypeHasChildren |
+                         ClangASTContext::eTypeIsPointer |
+                         ClangASTContext::eTypeIsReference))
+            has_children = true;
+    }
+    else
+    {
+        has_children = GetNumChildren () > 0;
+    }
+    return has_children;
+}
+
+// Should only be called by ValueObject::GetNumChildren()
 void
 ValueObject::SetNumChildren (uint32_t num_children)
 {
@@ -1266,7 +1296,7 @@
         {
             if (success)
                 *success = true;
-            return scalar.GetRawBits64(fail_value);
+            return scalar.ULongLong(fail_value);
         }
         // fallthrough, otherwise...
     }
@@ -1556,6 +1586,7 @@
     switch (m_value.GetValueType())
     {
     case Value::eValueTypeScalar:
+    case Value::eValueTypeVector:
         if (scalar_is_load_address)
         {
             if(address_type)
@@ -1592,6 +1623,7 @@
     switch (m_value.GetValueType())
     {
     case Value::eValueTypeScalar:
+    case Value::eValueTypeVector:
         address = m_value.GetScalar().ULongLong(LLDB_INVALID_ADDRESS);
         break;
 
@@ -1653,7 +1685,7 @@
                     Process *process = exe_ctx.GetProcessPtr();
                     if (process)
                     {
-                        addr_t target_addr = m_value.GetScalar().GetRawBits64(LLDB_INVALID_ADDRESS);
+                        addr_t target_addr = m_value.GetScalar().ULongLong(LLDB_INVALID_ADDRESS);
                         size_t bytes_written = process->WriteScalarToMemory (target_addr, 
                                                                              new_scalar, 
                                                                              byte_size, 
@@ -1691,7 +1723,8 @@
                 break;
             case Value::eValueTypeFileAddress:
             case Value::eValueTypeScalar:
-                break;    
+            case Value::eValueTypeVector:
+                break;
             }
         }
         else
@@ -2059,12 +2092,17 @@
         return;
     }
     
+    lldb::SyntheticChildrenSP current_synth_sp(m_synthetic_children_sp);
+    
     if (!UpdateFormatsIfNeeded(m_last_format_mgr_dynamic) && m_synthetic_value)
         return;
     
     if (m_synthetic_children_sp.get() == NULL)
         return;
     
+    if (current_synth_sp == m_synthetic_children_sp && m_synthetic_value)
+        return;
+    
     m_synthetic_value = new ValueObjectSynthetic(*this, m_synthetic_children_sp);
 }
 
@@ -2079,7 +2117,10 @@
         ExecutionContext exe_ctx (GetExecutionContextRef());
         Process *process = exe_ctx.GetProcessPtr();
         if (process && process->IsPossibleDynamicValue(*this))
+        {
+            ClearDynamicTypeInformation ();
             m_dynamic_value = new ValueObjectDynamicValue (*this, use_dynamic);
+        }
     }
 }
 

Modified: lldb/branches/windows/source/Core/ValueObjectDynamicValue.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Core/ValueObjectDynamicValue.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Core/ValueObjectDynamicValue.cpp (original)
+++ lldb/branches/windows/source/Core/ValueObjectDynamicValue.cpp Thu Nov  1 02:04:04 2012
@@ -20,6 +20,7 @@
 #include "lldb/Core/Value.h"
 #include "lldb/Core/ValueObject.h"
 
+#include "lldb/Symbol/ClangASTType.h"
 #include "lldb/Symbol/ObjectFile.h"
 #include "lldb/Symbol/SymbolContext.h"
 #include "lldb/Symbol/Type.h"
@@ -32,112 +33,8 @@
 #include "lldb/Target/Target.h"
 #include "lldb/Target/Thread.h"
 
-
 using namespace lldb_private;
 
-lldb::ValueObjectSP
-ValueObjectCast::Create (ValueObject &parent, 
-                         const ConstString &name, 
-                         const ClangASTType &cast_type)
-{
-    ValueObjectCast *cast_valobj_ptr = new ValueObjectCast (parent, name, cast_type);
-    return cast_valobj_ptr->GetSP();
-}
-
-ValueObjectCast::ValueObjectCast
-(
-    ValueObject &parent, 
-    const ConstString &name, 
-    const ClangASTType &cast_type
-) :
-    ValueObject(parent),
-    m_cast_type (cast_type)
-{
-    SetName (name);
-    m_value.SetContext (Value::eContextTypeClangType, cast_type.GetOpaqueQualType());
-}
-
-ValueObjectCast::~ValueObjectCast()
-{
-}
-
-lldb::clang_type_t
-ValueObjectCast::GetClangTypeImpl ()
-{
-    return m_cast_type.GetOpaqueQualType();
-}
-
-uint32_t
-ValueObjectCast::CalculateNumChildren()
-{
-    return ClangASTContext::GetNumChildren (GetClangAST (), GetClangType(), true);
-}
-
-clang::ASTContext *
-ValueObjectCast::GetClangASTImpl ()
-{
-    return m_cast_type.GetASTContext();
-}
-
-size_t
-ValueObjectCast::GetByteSize()
-{
-    return m_value.GetValueByteSize(GetClangAST(), NULL);
-}
-
-lldb::ValueType
-ValueObjectCast::GetValueType() const
-{
-    // Let our parent answer global, local, argument, etc...
-    return m_parent->GetValueType();
-}
-
-bool
-ValueObjectCast::UpdateValue ()
-{
-    SetValueIsValid (false);
-    m_error.Clear();
-    
-    if (m_parent->UpdateValueIfNeeded(false))
-    {
-        Value old_value(m_value);
-        m_update_point.SetUpdated();
-        m_value = m_parent->GetValue();
-        m_value.SetContext (Value::eContextTypeClangType, GetClangType());
-        SetAddressTypeOfChildren(m_parent->GetAddressTypeOfChildren());
-        if (ClangASTContext::IsAggregateType (GetClangType()))
-        {
-            // this value object represents an aggregate type whose
-            // children have values, but this object does not. So we
-            // say we are changed if our location has changed.
-            SetValueDidChange (m_value.GetValueType() != old_value.GetValueType() || m_value.GetScalar() != old_value.GetScalar());
-        } 
-        ExecutionContext exe_ctx (GetExecutionContextRef());
-        m_error = m_value.GetValueAsData(&exe_ctx, GetClangAST(), m_data, 0, GetModule().get());
-        SetValueDidChange (m_parent->GetValueDidChange());
-        return true;
-    }
-    
-    // The dynamic value failed to get an error, pass the error along
-    if (m_error.Success() && m_parent->GetError().Fail())
-        m_error = m_parent->GetError();
-    SetValueIsValid (false);
-    return false;
-}
-
-
-
-bool
-ValueObjectCast::IsInScope ()
-{
-    return m_parent->IsInScope();
-}
-
-//----------------------------------------------------------------------
-
-
-
-
 ValueObjectDynamicValue::ValueObjectDynamicValue (ValueObject &parent, lldb::DynamicValueType use_dynamic) :
     ValueObject(parent),
     m_address (),
@@ -290,29 +187,24 @@
 
     lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_TYPES));
     
+    bool has_changed_type = false;
+    
     if (!m_type_sp)
     {
         m_type_sp = dynamic_type_sp;
-        ResetCompleteTypeInfo ();
-        if (log)
-            log->Printf("[%s %p] now has a dynamic type %s",
-                        GetName().GetCString(),
-                        this,
-                        GetTypeName().AsCString(""));
+        has_changed_type = true;
     }
     else if (dynamic_type_sp != m_type_sp)
     {
         // We are another type, we need to tear down our children...
         m_type_sp = dynamic_type_sp;
         SetValueDidChange (true);
-        ResetCompleteTypeInfo ();
-        if (log)
-            log->Printf("[%s %p] has a new dynamic type %s",
-                        GetName().GetCString(),
-                        this,
-                        GetTypeName().AsCString(""));
+        has_changed_type = true;
     }
     
+    if (has_changed_type)
+        ClearDynamicTypeInformation ();
+    
     if (!m_address.IsValid() || m_address != dynamic_address)
     {
         if (m_address.IsValid())
@@ -341,6 +233,12 @@
     // because we aren't pointing to the LOCATION that stores the pointer to us, we're pointing to us...
     m_value.SetValueType(Value::eValueTypeScalar);
 
+    if (has_changed_type && log)
+        log->Printf("[%s %p] has a new dynamic type %s",
+                    GetName().GetCString(),
+                    this,
+                    GetTypeName().GetCString());
+    
     if (m_address.IsValid() && m_type_sp)
     {
         // The variable value is in the Scalar value inside the m_value.

Modified: lldb/branches/windows/source/Core/ValueObjectSyntheticFilter.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Core/ValueObjectSyntheticFilter.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Core/ValueObjectSyntheticFilter.cpp (original)
+++ lldb/branches/windows/source/Core/ValueObjectSyntheticFilter.cpp Thu Nov  1 02:04:04 2012
@@ -45,6 +45,12 @@
     }
     
     bool
+    MightHaveChildren ()
+    {
+        return true;
+    }
+    
+    bool
     Update()
     {
         return false;
@@ -58,7 +64,8 @@
     m_children_byindex(),
     m_name_toindex(),
     m_synthetic_children_count(UINT32_MAX),
-    m_parent_type_name(parent.GetTypeName())
+    m_parent_type_name(parent.GetTypeName()),
+    m_might_have_children(eLazyBoolCalculate)
 {
 #ifdef LLDB_CONFIGURATION_DEBUG
     std::string new_name(parent.GetName().AsCString());
@@ -67,6 +74,7 @@
 #else
     SetName(parent.GetName());
 #endif
+    CopyParentData();
     CreateSynthFilter();
 }
 
@@ -95,6 +103,15 @@
     return (m_synthetic_children_count = m_synth_filter_ap->CalculateNumChildren());
 }
 
+bool
+ValueObjectSynthetic::MightHaveChildren()
+{
+    if (m_might_have_children == eLazyBoolCalculate)
+        m_might_have_children = (m_synth_filter_ap->MightHaveChildren() ? eLazyBoolYes : eLazyBoolNo);
+    return (m_might_have_children == eLazyBoolNo ? false : true);
+}
+
+
 clang::ASTContext *
 ValueObjectSynthetic::GetClangASTImpl ()
 {
@@ -155,8 +172,11 @@
         // that they need to come back to us asking for children
         m_children_count_valid = false;
         m_synthetic_children_count = UINT32_MAX;
+        m_might_have_children = eLazyBoolCalculate;
     }
     
+    CopyParentData();
+    
     SetValueIsValid(true);
     return true;
 }
@@ -230,3 +250,11 @@
 {
     return m_parent->GetSP();
 }
+
+void
+ValueObjectSynthetic::CopyParentData ()
+{
+    m_value = m_parent->GetValue();
+    ExecutionContext exe_ctx (GetExecutionContextRef());
+    m_error = m_value.GetValueAsData (&exe_ctx, GetClangAST(), m_data, 0, GetModule().get());
+}

Modified: lldb/branches/windows/source/Core/ValueObjectVariable.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Core/ValueObjectVariable.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Core/ValueObjectVariable.cpp (original)
+++ lldb/branches/windows/source/Core/ValueObjectVariable.cpp Thu Nov  1 02:04:04 2012
@@ -176,6 +176,7 @@
                     break;
                 case Value::eValueTypeLoadAddress:
                 case Value::eValueTypeScalar:
+                case Value::eValueTypeVector:
                     SetAddressTypeOfChildren(eAddressTypeLoad);
                     break;
             }

Modified: lldb/branches/windows/source/Expression/ASTResultSynthesizer.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Expression/ASTResultSynthesizer.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Expression/ASTResultSynthesizer.cpp (original)
+++ lldb/branches/windows/source/Expression/ASTResultSynthesizer.cpp Thu Nov  1 02:04:04 2012
@@ -269,7 +269,7 @@
         if (!implicit_cast)
             break;
         
-        if (!implicit_cast->getCastKind() == CK_LValueToRValue)
+        if (implicit_cast->getCastKind() != CK_LValueToRValue)
             break;
         
         last_expr = implicit_cast->getSubExpr();

Modified: lldb/branches/windows/source/Expression/ClangExpressionDeclMap.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Expression/ClangExpressionDeclMap.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Expression/ClangExpressionDeclMap.cpp (original)
+++ lldb/branches/windows/source/Expression/ClangExpressionDeclMap.cpp Thu Nov  1 02:04:04 2012
@@ -1083,8 +1083,13 @@
             Value ret;
             
             ret.SetContext(Value::eContextTypeRegisterInfo, reg_info);
-            if (!reg_value.GetScalarValue(ret.GetScalar()))
-                return Value();
+            if (reg_info->encoding == eEncodingVector) 
+			{
+                if (ret.SetVectorBytes((uint8_t *)reg_value.GetBytes(), reg_value.GetByteSize(), reg_value.GetByteOrder()))
+                    ret.SetScalarFromVector();
+            }
+            else if (!reg_value.GetScalarValue(ret.GetScalar()))
+				return Value();
             
             return ret;
         }
@@ -2465,34 +2470,83 @@
             
             clang::CXXMethodDecl *method_decl = llvm::dyn_cast<clang::CXXMethodDecl>(decl_context);
             
-            if (!method_decl)
-                return;
-            
-            clang::CXXRecordDecl *class_decl = method_decl->getParent();
-            
-            QualType class_qual_type(class_decl->getTypeForDecl(), 0);
-            
-            TypeFromUser class_user_type (class_qual_type.getAsOpaquePtr(),
-                                          &class_decl->getASTContext());
-            
-            if (log)
+            if (method_decl)
             {
-                ASTDumper ast_dumper(class_qual_type);
-                log->Printf("  CEDM::FEVD[%u] Adding type for $__lldb_class: %s", current_id, ast_dumper.GetCString());
-            }
-            
-            AddOneType(context, class_user_type, current_id, true);
             
-            if (method_decl->isInstance())
-            {
-                // self is a pointer to the object
+                clang::CXXRecordDecl *class_decl = method_decl->getParent();
                 
-                QualType class_pointer_type = method_decl->getASTContext().getPointerType(class_qual_type);
+                QualType class_qual_type(class_decl->getTypeForDecl(), 0);
                 
-                TypeFromUser self_user_type(class_pointer_type.getAsOpaquePtr(),
-                                            &method_decl->getASTContext());
+                TypeFromUser class_user_type (class_qual_type.getAsOpaquePtr(),
+                                              &class_decl->getASTContext());
                 
-                m_struct_vars->m_object_pointer_type = self_user_type;
+                if (log)
+                {
+                    ASTDumper ast_dumper(class_qual_type);
+                    log->Printf("  CEDM::FEVD[%u] Adding type for $__lldb_class: %s", current_id, ast_dumper.GetCString());
+                }
+                
+                AddOneType(context, class_user_type, current_id, true);
+                
+                if (method_decl->isInstance())
+                {
+                    // self is a pointer to the object
+                    
+                    QualType class_pointer_type = method_decl->getASTContext().getPointerType(class_qual_type);
+                    
+                    TypeFromUser self_user_type(class_pointer_type.getAsOpaquePtr(),
+                                                &method_decl->getASTContext());
+                    
+                    m_struct_vars->m_object_pointer_type = self_user_type;
+                }
+            }
+            else
+            {
+                // This branch will get hit if we are executing code in the context of a function that
+                // claims to have an object pointer (through DW_AT_object_pointer?) but is not formally a
+                // method of the class.  In that case, just look up the "this" variable in the the current
+                // scope and use its type.
+                // FIXME: This code is formally correct, but clang doesn't currently emit DW_AT_object_pointer
+                // for C++ so it hasn't actually been tested.
+                
+                VariableList *vars = frame->GetVariableList(false);
+                
+                lldb::VariableSP this_var = vars->FindVariable(ConstString("this"));
+                
+                if (this_var &&
+                    this_var->IsInScope(frame) &&
+                    this_var->LocationIsValidForFrame (frame))
+                {
+                    Type *this_type = this_var->GetType();
+                    
+                    if (!this_type)
+                        return;
+                    
+                    QualType this_qual_type = QualType::getFromOpaquePtr(this_type->GetClangFullType());
+                    const PointerType *class_pointer_type = this_qual_type->getAs<PointerType>();
+                    
+                    if (class_pointer_type)
+                    {
+                        QualType class_type = class_pointer_type->getPointeeType();
+                        
+                        if (log)
+                        {
+                            ASTDumper ast_dumper(this_type->GetClangFullType());
+                            log->Printf("  FEVD[%u] Adding type for $__lldb_objc_class: %s", current_id, ast_dumper.GetCString());
+                        }
+                        
+                        TypeFromUser class_user_type (class_type.getAsOpaquePtr(),
+                                                        this_type->GetClangAST());
+                        AddOneType(context, class_user_type, current_id, false);
+                                    
+                                    
+                        TypeFromUser this_user_type(this_type->GetClangFullType(),
+                                                    this_type->GetClangAST());
+                        
+                        m_struct_vars->m_object_pointer_type = this_user_type;
+                        return;
+                    }
+                }
             }
             
             return;
@@ -2524,65 +2578,96 @@
             
             clang::ObjCMethodDecl *method_decl = llvm::dyn_cast<clang::ObjCMethodDecl>(decl_context);
             
-            if (!method_decl)
-                return;
-
-            ObjCInterfaceDecl* self_interface = method_decl->getClassInterface();
-            
-            if (!self_interface)
-                return;
-            
-            const clang::Type *interface_type = self_interface->getTypeForDecl();
-                    
-            TypeFromUser class_user_type(QualType(interface_type, 0).getAsOpaquePtr(),
-                                         &method_decl->getASTContext());
-            
-            if (log)
+            if (method_decl)
             {
-                ASTDumper ast_dumper(interface_type);
-                log->Printf("  FEVD[%u] Adding type for $__lldb_objc_class: %s", current_id, ast_dumper.GetCString());
-            }
-                
-            AddOneType(context, class_user_type, current_id, false);
-            
-#if 0
-            VariableList *vars = frame->GetVariableList(false);
-            
-            lldb::VariableSP self_var = vars->FindVariable(ConstString("self"));
-            
-            if (self_var &&
-                self_var->IsInScope(frame) && 
-                self_var->LocationIsValidForFrame (frame)) {
-                Type *self_type = self_var->GetType();
+
+                ObjCInterfaceDecl* self_interface = method_decl->getClassInterface();
                 
-                if (!self_type)
+                if (!self_interface)
                     return;
                 
-                TypeFromUser self_user_type(self_type->GetClangFullType(),
-                                            self_type->GetClangAST());
-            }
-#endif
-            
-            if (method_decl->isInstanceMethod())
-            {
-                // self is a pointer to the object
+                const clang::Type *interface_type = self_interface->getTypeForDecl();
+                        
+                TypeFromUser class_user_type(QualType(interface_type, 0).getAsOpaquePtr(),
+                                             &method_decl->getASTContext());
                 
-                QualType class_pointer_type = method_decl->getASTContext().getObjCObjectPointerType(QualType(interface_type, 0));
-            
-                TypeFromUser self_user_type(class_pointer_type.getAsOpaquePtr(),
-                                            &method_decl->getASTContext());
-            
-                m_struct_vars->m_object_pointer_type = self_user_type;
+                if (log)
+                {
+                    ASTDumper ast_dumper(interface_type);
+                    log->Printf("  FEVD[%u] Adding type for $__lldb_objc_class: %s", current_id, ast_dumper.GetCString());
+                }
+                    
+                AddOneType(context, class_user_type, current_id, false);
+                                
+                if (method_decl->isInstanceMethod())
+                {
+                    // self is a pointer to the object
+                    
+                    QualType class_pointer_type = method_decl->getASTContext().getObjCObjectPointerType(QualType(interface_type, 0));
+                
+                    TypeFromUser self_user_type(class_pointer_type.getAsOpaquePtr(),
+                                                &method_decl->getASTContext());
+                
+                    m_struct_vars->m_object_pointer_type = self_user_type;
+                }
+                else
+                {
+                    // self is a Class pointer
+                    QualType class_type = method_decl->getASTContext().getObjCClassType();
+                    
+                    TypeFromUser self_user_type(class_type.getAsOpaquePtr(),
+                                                &method_decl->getASTContext());
+                    
+                    m_struct_vars->m_object_pointer_type = self_user_type;
+                }
+
+                return;
             }
             else
             {
-                // self is a Class pointer
-                QualType class_type = method_decl->getASTContext().getObjCClassType();
+                // This branch will get hit if we are executing code in the context of a function that
+                // claims to have an object pointer (through DW_AT_object_pointer?) but is not formally a
+                // method of the class.  In that case, just look up the "self" variable in the the current
+                // scope and use its type.
+                
+                VariableList *vars = frame->GetVariableList(false);
                 
-                TypeFromUser self_user_type(class_type.getAsOpaquePtr(),
-                                            &method_decl->getASTContext());
+                lldb::VariableSP self_var = vars->FindVariable(ConstString("self"));
                 
-                m_struct_vars->m_object_pointer_type = self_user_type;
+                if (self_var &&
+                    self_var->IsInScope(frame) && 
+                    self_var->LocationIsValidForFrame (frame))
+                {
+                    Type *self_type = self_var->GetType();
+                    
+                    if (!self_type)
+                        return;
+                    
+                    QualType self_qual_type = QualType::getFromOpaquePtr(self_type->GetClangFullType());
+                    const ObjCObjectPointerType *class_pointer_type = self_qual_type->getAs<ObjCObjectPointerType>();
+                    
+                    if (class_pointer_type)
+                    {
+                        QualType class_type = class_pointer_type->getPointeeType();
+                        
+                        if (log)
+                        {
+                            ASTDumper ast_dumper(self_type->GetClangFullType());
+                            log->Printf("  FEVD[%u] Adding type for $__lldb_objc_class: %s", current_id, ast_dumper.GetCString());
+                        }
+                        
+                        TypeFromUser class_user_type (class_type.getAsOpaquePtr(),
+                                                        self_type->GetClangAST());
+                        AddOneType(context, class_user_type, current_id, false);
+                                    
+                                    
+                        TypeFromUser self_user_type(self_type->GetClangFullType(),
+                                                    self_type->GetClangAST());
+                        
+                        m_struct_vars->m_object_pointer_type = self_user_type;
+                        return;
+                    }
+                }
             }
 
             return;
@@ -2661,7 +2746,8 @@
         {
             valobj = frame->GetValueForVariableExpressionPath(name_unique_cstr, 
                                                               eNoDynamicValues, 
-                                                              StackFrame::eExpressionPathOptionCheckPtrVsMember,
+                                                              StackFrame::eExpressionPathOptionCheckPtrVsMember
+                                                              | StackFrame::eExpressionPathOptionsAllowDirectIVarAccess,
                                                               var,
                                                               err);
             

Modified: lldb/branches/windows/source/Expression/ClangExpressionParser.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Expression/ClangExpressionParser.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Expression/ClangExpressionParser.cpp (original)
+++ lldb/branches/windows/source/Expression/ClangExpressionParser.cpp Thu Nov  1 02:04:04 2012
@@ -53,7 +53,7 @@
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/TargetSelect.h"
 
-#if !defined(__APPLE__)
+#if defined(__FreeBSD__)
 #define USE_STANDARD_JIT
 #endif
 
@@ -465,13 +465,13 @@
 	func_end = LLDB_INVALID_ADDRESS;
     lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
 
-    std::auto_ptr<llvm::ExecutionEngine> execution_engine;
+    std::auto_ptr<llvm::ExecutionEngine> execution_engine_ap;
     
     Error err;
     
-    llvm::Module *module = m_code_generator->ReleaseModule();
+    std::auto_ptr<llvm::Module> module_ap (m_code_generator->ReleaseModule());
 
-    if (!module)
+    if (!module_ap.get())
     {
         err.SetErrorToGenericError();
         err.SetErrorString("IR doesn't contain a module");
@@ -482,7 +482,7 @@
     
     std::string function_name;
     
-    if (!FindFunctionInModule(function_name, module, m_expr.FunctionName()))
+    if (!FindFunctionInModule(function_name, module_ap.get(), m_expr.FunctionName()))
     {
         err.SetErrorToGenericError();
         err.SetErrorStringWithFormat("Couldn't find %s() in the module", m_expr.FunctionName());
@@ -511,7 +511,7 @@
                                   error_stream,
                                   function_name.c_str());
         
-        bool ir_can_run = ir_for_target.runOnModule(*module);
+        bool ir_can_run = ir_for_target.runOnModule(*module_ap);
         
         Error &interpreter_error(ir_for_target.getInterpreterError());
         
@@ -572,7 +572,7 @@
             
             IRDynamicChecks ir_dynamic_checks(*process->GetDynamicCheckers(), function_name.c_str());
         
-            if (!ir_dynamic_checks.runOnModule(*module))
+            if (!ir_dynamic_checks.runOnModule(*module_ap))
             {
                 err.SetErrorToGenericError();
                 err.SetErrorString("Couldn't add dynamic checks to the expression");
@@ -592,14 +592,15 @@
         std::string s;
         raw_string_ostream oss(s);
         
-        module->print(oss, NULL);
+        module_ap->print(oss, NULL);
         
         oss.flush();
         
         log->Printf ("Module being sent to JIT: \n%s", s.c_str());
     }
-    
-    EngineBuilder builder(module);
+    llvm::Triple triple(module_ap->getTargetTriple());
+    llvm::Function *function = module_ap->getFunction (function_name.c_str());
+    EngineBuilder builder(module_ap.release());
     builder.setEngineKind(EngineKind::JIT)
         .setErrorStr(&error_string)
         .setRelocationModel(llvm::Reloc::PIC_)
@@ -609,7 +610,6 @@
         .setCodeModel(CodeModel::Small)
         .setUseMCJIT(true);
     
-    llvm::Triple triple(module->getTargetTriple());
     StringRef mArch;
     StringRef mCPU;
     SmallVector<std::string, 0> mAttrs;
@@ -619,22 +619,21 @@
                                                          mCPU,
                                                          mAttrs);
     
-    execution_engine.reset(builder.create(target_machine));
+    execution_engine_ap.reset(builder.create(target_machine));
         
-    if (!execution_engine.get())
+    if (!execution_engine_ap.get())
     {
         err.SetErrorToGenericError();
         err.SetErrorStringWithFormat("Couldn't JIT the function: %s", error_string.c_str());
         return err;
     }
     
-    execution_engine->DisableLazyCompilation();
+    execution_engine_ap->DisableLazyCompilation();
     
-    llvm::Function *function = module->getFunction (function_name.c_str());
     
     // We don't actually need the function pointer here, this just forces it to get resolved.
     
-    void *fun_ptr = execution_engine->getPointerToFunction(function);
+    void *fun_ptr = execution_engine_ap->getPointerToFunction(function);
         
     // Errors usually cause failures in the JIT, but if we're lucky we get here.
     
@@ -664,7 +663,7 @@
     }
         
     jit_memory_manager->CommitAllocations(*process);
-    jit_memory_manager->ReportAllocations(*execution_engine);
+    jit_memory_manager->ReportAllocations(*execution_engine_ap);
     jit_memory_manager->WriteData(*process);
     
     std::vector<JittedFunction>::iterator pos, end = m_jitted_functions.end();
@@ -699,8 +698,6 @@
         }
     }
     
-    execution_engine.reset();
-    
     err.Clear();
     return err;
 }

Added: lldb/branches/windows/source/Expression/ClangExpressionParser.cpp.orig
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Expression/ClangExpressionParser.cpp.orig?rev=167218&view=auto
==============================================================================
--- lldb/branches/windows/source/Expression/ClangExpressionParser.cpp.orig (added)
+++ lldb/branches/windows/source/Expression/ClangExpressionParser.cpp.orig Thu Nov  1 02:04:04 2012
@@ -0,0 +1,842 @@
+//===-- ClangExpressionParser.cpp -------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "lldb/Expression/ClangExpressionParser.h"
+
+#include "lldb/Core/ArchSpec.h"
+#include "lldb/Core/DataBufferHeap.h"
+#include "lldb/Core/Debugger.h"
+#include "lldb/Core/Disassembler.h"
+#include "lldb/Core/Stream.h"
+#include "lldb/Core/StreamString.h"
+#include "lldb/Expression/ClangASTSource.h"
+#include "lldb/Expression/ClangExpression.h"
+#include "lldb/Expression/ClangExpressionDeclMap.h"
+#include "lldb/Expression/IRDynamicChecks.h"
+#include "lldb/Expression/RecordingMemoryManager.h"
+#include "lldb/Target/ExecutionContext.h"
+#include "lldb/Target/ObjCLanguageRuntime.h"
+#include "lldb/Target/Process.h"
+#include "lldb/Target/Target.h"
+
+#include "clang/AST/ASTContext.h"
+#include "clang/AST/ExternalASTSource.h"
+#include "clang/Basic/FileManager.h"
+#include "clang/Basic/TargetInfo.h"
+#include "clang/Basic/Version.h"
+#include "clang/CodeGen/CodeGenAction.h"
+#include "clang/CodeGen/ModuleBuilder.h"
+#include "clang/Driver/CC1Options.h"
+#include "clang/Driver/OptTable.h"
+#include "clang/Frontend/CompilerInstance.h"
+#include "clang/Frontend/CompilerInvocation.h"
+#include "clang/Frontend/FrontendActions.h"
+#include "clang/Frontend/FrontendDiagnostic.h"
+#include "clang/Frontend/FrontendPluginRegistry.h"
+#include "clang/Frontend/TextDiagnosticBuffer.h"
+#include "clang/Frontend/TextDiagnosticPrinter.h"
+#include "clang/Lex/Preprocessor.h"
+#include "clang/Parse/ParseAST.h"
+<<<<<<< .working
+#include "clang/Basic/Version.h"
+#if CLANG_VERSION_MAJOR > 3 || (CLANG_VERSION_MAJOR == 3 && CLANG_VERSION_MINOR  >= 2)
+#include "clang/Rewrite/Frontend/FrontendActions.h"
+#else
+#include "clang/Rewrite/FrontendActions.h"
+=======
+#include "clang/Rewrite/Frontend/FrontendActions.h"
+>>>>>>> .merge-right.r164814
+#endif
+#include "clang/Sema/SemaConsumer.h"
+#include "clang/StaticAnalyzer/Frontend/FrontendActions.h"
+
+#include "llvm/ADT/StringRef.h"
+#include "llvm/ExecutionEngine/ExecutionEngine.h"
+#include "llvm/Support/Debug.h"
+#include "llvm/Support/TargetSelect.h"
+
+#if !defined(__APPLE__)
+#define USE_STANDARD_JIT
+#endif
+
+#if defined (USE_STANDARD_JIT)
+#include "llvm/ExecutionEngine/JIT.h"
+#else
+#include "llvm/ExecutionEngine/MCJIT.h"
+#endif
+#include "llvm/LLVMContext.h"
+#include "llvm/Module.h"
+#include "llvm/Support/ErrorHandling.h"
+#include "llvm/Support/MemoryBuffer.h"
+#include "llvm/Support/DynamicLibrary.h"
+#include "llvm/Support/Host.h"
+#include "llvm/Support/Signals.h"
+
+using namespace clang;
+using namespace llvm;
+using namespace lldb_private;
+
+//===----------------------------------------------------------------------===//
+// Utility Methods for Clang
+//===----------------------------------------------------------------------===//
+
+std::string GetBuiltinIncludePath(const char *Argv0) {
+    llvm::sys::Path P =
+    llvm::sys::Path::GetMainExecutable(Argv0,
+                                       (void*)(intptr_t) GetBuiltinIncludePath);
+    
+    if (!P.isEmpty()) {
+        P.eraseComponent();  // Remove /clang from foo/bin/clang
+        P.eraseComponent();  // Remove /bin   from foo/bin
+        
+        // Get foo/lib/clang/<version>/include
+        P.appendComponent("lib");
+        P.appendComponent("clang");
+        P.appendComponent(CLANG_VERSION_STRING);
+        P.appendComponent("include");
+    }
+    
+    return P.str();
+}
+
+
+//===----------------------------------------------------------------------===//
+// Main driver for Clang
+//===----------------------------------------------------------------------===//
+
+static void LLVMErrorHandler(void *UserData, const std::string &Message) {
+    DiagnosticsEngine &Diags = *static_cast<DiagnosticsEngine*>(UserData);
+    
+    Diags.Report(diag::err_fe_error_backend) << Message;
+    
+    // We cannot recover from llvm errors.
+    assert(0);
+}
+
+static FrontendAction *CreateFrontendBaseAction(CompilerInstance &CI) {
+    using namespace clang::frontend;
+    
+    switch (CI.getFrontendOpts().ProgramAction) {
+        default:
+            llvm_unreachable("Invalid program action!");
+            
+        case ASTDump:                return new ASTDumpAction();
+        case ASTPrint:               return new ASTPrintAction();
+        case ASTDumpXML:             return new ASTDumpXMLAction();
+        case ASTView:                return new ASTViewAction();
+        case DumpRawTokens:          return new DumpRawTokensAction();
+        case DumpTokens:             return new DumpTokensAction();
+        case EmitAssembly:           return new EmitAssemblyAction();
+        case EmitBC:                 return new EmitBCAction();
+        case EmitHTML:               return new HTMLPrintAction();
+        case EmitLLVM:               return new EmitLLVMAction();
+        case EmitLLVMOnly:           return new EmitLLVMOnlyAction();
+        case EmitCodeGenOnly:        return new EmitCodeGenOnlyAction();
+        case EmitObj:                return new EmitObjAction();
+        case FixIt:                  return new FixItAction();
+        case GeneratePCH:            return new GeneratePCHAction();
+        case GeneratePTH:            return new GeneratePTHAction();
+        case InitOnly:               return new InitOnlyAction();
+        case ParseSyntaxOnly:        return new SyntaxOnlyAction();
+            
+        case PluginAction: {
+            for (FrontendPluginRegistry::iterator it =
+                 FrontendPluginRegistry::begin(), ie = FrontendPluginRegistry::end();
+                 it != ie; ++it) {
+                if (it->getName() == CI.getFrontendOpts().ActionName) {
+                    llvm::OwningPtr<PluginASTAction> P(it->instantiate());
+                    if (!P->ParseArgs(CI, CI.getFrontendOpts().PluginArgs))
+                        return 0;
+                    return P.take();
+                }
+            }
+            
+            CI.getDiagnostics().Report(diag::err_fe_invalid_plugin_name)
+            << CI.getFrontendOpts().ActionName;
+            return 0;
+        }
+            
+        case PrintDeclContext:       return new DeclContextPrintAction();
+        case PrintPreamble:          return new PrintPreambleAction();
+        case PrintPreprocessedInput: return new PrintPreprocessedAction();
+        case RewriteMacros:          return new RewriteMacrosAction();
+        case RewriteObjC:            return new RewriteObjCAction();
+        case RewriteTest:            return new RewriteTestAction();
+        //case RunAnalysis:            return new AnalysisAction();
+        case RunPreprocessorOnly:    return new PreprocessOnlyAction();
+    }
+}
+
+static FrontendAction *CreateFrontendAction(CompilerInstance &CI) {
+    // Create the underlying action.
+    FrontendAction *Act = CreateFrontendBaseAction(CI);
+    if (!Act)
+        return 0;
+    
+    // If there are any AST files to merge, create a frontend action
+    // adaptor to perform the merge.
+    if (!CI.getFrontendOpts().ASTMergeFiles.empty())
+        Act = new ASTMergeAction(Act, CI.getFrontendOpts().ASTMergeFiles);
+    
+    return Act;
+}
+
+//===----------------------------------------------------------------------===//
+// Implementation of ClangExpressionParser
+//===----------------------------------------------------------------------===//
+
+ClangExpressionParser::ClangExpressionParser (ExecutionContextScope *exe_scope,
+                                              ClangExpression &expr) :
+    m_expr (expr),
+    m_compiler (),
+    m_code_generator (NULL),
+    m_jitted_functions ()
+{
+    // Initialize targets first, so that --version shows registered targets.
+    static struct InitializeLLVM {
+        InitializeLLVM() {
+            llvm::InitializeAllTargets();
+            llvm::InitializeAllAsmPrinters();
+            llvm::InitializeAllTargetMCs();
+            llvm::InitializeAllDisassemblers();
+            
+            llvm::DisablePrettyStackTrace = true;
+        }
+    } InitializeLLVM;
+    
+    // 1. Create a new compiler instance.
+    m_compiler.reset(new CompilerInstance());    
+    
+    // 2. Install the target.
+
+    lldb::TargetSP target_sp;
+    if (exe_scope)
+        target_sp = exe_scope->CalculateTarget();
+    
+    // TODO: figure out what to really do when we don't have a valid target.
+    // Sometimes this will be ok to just use the host target triple (when we
+    // evaluate say "2+3", but other expressions like breakpoint conditions
+    // and other things that _are_ target specific really shouldn't just be
+    // using the host triple. This needs to be fixed in a better way.
+    if (target_sp && target_sp->GetArchitecture().IsValid())
+    {
+        std::string triple = target_sp->GetArchitecture().GetTriple().str();
+        
+        int dash_count = 0;
+        for (size_t i = 0; i < triple.size(); ++i)
+        {
+            if (triple[i] == '-')
+                dash_count++;
+            if (dash_count == 3)
+            {
+                triple.resize(i);
+                break;
+            }
+        }
+        
+        m_compiler->getTargetOpts().Triple = triple;
+    }
+    else
+    {
+        m_compiler->getTargetOpts().Triple = llvm::sys::getDefaultTargetTriple();
+    }
+    
+    if (m_compiler->getTargetOpts().Triple.find("ios") != std::string::npos)
+        m_compiler->getTargetOpts().ABI = "apcs-gnu";
+    
+    m_compiler->createDiagnostics(0, 0);
+    
+    // Create the target instance.
+    m_compiler->setTarget(TargetInfo::CreateTargetInfo(m_compiler->getDiagnostics(),
+                                                       m_compiler->getTargetOpts()));
+    
+    assert (m_compiler->hasTarget());
+    
+    // 3. Set options.
+    
+    lldb::LanguageType language = expr.Language();
+    
+    switch (language)
+    {
+    case lldb::eLanguageTypeC:
+        break;
+    case lldb::eLanguageTypeObjC:
+        m_compiler->getLangOpts().ObjC1 = true;
+        m_compiler->getLangOpts().ObjC2 = true;
+        break;
+    case lldb::eLanguageTypeC_plus_plus:
+        m_compiler->getLangOpts().CPlusPlus = true;
+        m_compiler->getLangOpts().CPlusPlus0x = true;
+        break;
+    case lldb::eLanguageTypeObjC_plus_plus:
+    default:
+        m_compiler->getLangOpts().ObjC1 = true;
+        m_compiler->getLangOpts().ObjC2 = true;
+        m_compiler->getLangOpts().CPlusPlus = true;
+        m_compiler->getLangOpts().CPlusPlus0x = true;
+        break;
+    }
+    
+    m_compiler->getLangOpts().DebuggerSupport = true; // Features specifically for debugger clients
+    if (expr.DesiredResultType() == ClangExpression::eResultTypeId)
+        m_compiler->getLangOpts().DebuggerCastResultToId = true;
+    
+    // Spell checking is a nice feature, but it ends up completing a
+    // lot of types that we didn't strictly speaking need to complete.
+    // As a result, we spend a long time parsing and importing debug
+    // information.
+    m_compiler->getLangOpts().SpellChecking = false; 
+    
+    lldb::ProcessSP process_sp;
+    if (exe_scope)
+        process_sp = exe_scope->CalculateProcess();
+
+    if (process_sp && m_compiler->getLangOpts().ObjC1)
+    {
+        if (process_sp->GetObjCLanguageRuntime())
+        {
+            if (process_sp->GetObjCLanguageRuntime()->GetRuntimeVersion() == eAppleObjC_V2)
+<<<<<<< .working
+            {
+#if CLANG_MAJOR_VERSION == 3 && CLANG_MINOR_VERSION < 2
+                m_compiler->getLangOpts().ObjCNonFragileABI = true;     // NOT i386
+                m_compiler->getLangOpts().ObjCNonFragileABI2 = true;    // NOT i386
+#endif
+            }
+=======
+                m_compiler->getLangOpts().ObjCRuntime.set(ObjCRuntime::MacOSX, VersionTuple(10, 7));
+            else
+                m_compiler->getLangOpts().ObjCRuntime.set(ObjCRuntime::FragileMacOSX, VersionTuple(10, 7));
+>>>>>>> .merge-right.r164814
+            
+            if (process_sp->GetObjCLanguageRuntime()->HasNewLiteralsAndIndexing())
+                m_compiler->getLangOpts().DebuggerObjCLiteral = true;
+        }
+    }
+
+    m_compiler->getLangOpts().ThreadsafeStatics = false;
+    m_compiler->getLangOpts().AccessControl = false; // Debuggers get universal access
+    m_compiler->getLangOpts().DollarIdents = true; // $ indicates a persistent variable name
+    
+    // Set CodeGen options
+    m_compiler->getCodeGenOpts().EmitDeclMetadata = true;
+    m_compiler->getCodeGenOpts().InstrumentFunctions = false;
+    
+    // Disable some warnings.
+    m_compiler->getDiagnosticOpts().Warnings.push_back("no-unused-value");
+    
+    // Inform the target of the language options
+    //
+    // FIXME: We shouldn't need to do this, the target should be immutable once
+    // created. This complexity should be lifted elsewhere.
+    m_compiler->getTarget().setForcedLangOptions(m_compiler->getLangOpts());
+    
+    // 4. Set up the diagnostic buffer for reporting errors
+    
+    m_compiler->getDiagnostics().setClient(new clang::TextDiagnosticBuffer);
+    
+    // 5. Set up the source management objects inside the compiler
+    
+    clang::FileSystemOptions file_system_options;
+    m_file_manager.reset(new clang::FileManager(file_system_options));
+    
+    if (!m_compiler->hasSourceManager())
+        m_compiler->createSourceManager(*m_file_manager.get());
+    
+    m_compiler->createFileManager();
+    m_compiler->createPreprocessor();
+    
+    // 6. Most of this we get from the CompilerInstance, but we 
+    // also want to give the context an ExternalASTSource.
+    m_selector_table.reset(new SelectorTable());
+    m_builtin_context.reset(new Builtin::Context());
+    
+    std::auto_ptr<clang::ASTContext> ast_context(new ASTContext(m_compiler->getLangOpts(),
+                                                                m_compiler->getSourceManager(),
+                                                                &m_compiler->getTarget(),
+                                                                m_compiler->getPreprocessor().getIdentifierTable(),
+                                                                *m_selector_table.get(),
+                                                                *m_builtin_context.get(),
+                                                                0));
+    
+    ClangExpressionDeclMap *decl_map = m_expr.DeclMap();
+    
+    if (decl_map)
+    {
+        llvm::OwningPtr<clang::ExternalASTSource> ast_source(decl_map->CreateProxy());
+        decl_map->InstallASTContext(ast_context.get());
+        ast_context->setExternalSource(ast_source);
+    }
+    
+    m_compiler->setASTContext(ast_context.release());
+    
+    std::string module_name("$__lldb_module");
+
+    m_llvm_context.reset(new LLVMContext());
+    m_code_generator.reset(CreateLLVMCodeGen(m_compiler->getDiagnostics(),
+                                             module_name,
+                                             m_compiler->getCodeGenOpts(),
+                                             *m_llvm_context));
+}
+
+ClangExpressionParser::~ClangExpressionParser()
+{
+}
+
+unsigned
+ClangExpressionParser::Parse (Stream &stream)
+{
+    TextDiagnosticBuffer *diag_buf = static_cast<TextDiagnosticBuffer*>(m_compiler->getDiagnostics().getClient());
+        
+    diag_buf->FlushDiagnostics (m_compiler->getDiagnostics());
+    
+    MemoryBuffer *memory_buffer = MemoryBuffer::getMemBufferCopy(m_expr.Text(), __FUNCTION__);
+    m_compiler->getSourceManager().createMainFileIDForMemBuffer (memory_buffer);
+    
+    diag_buf->BeginSourceFile(m_compiler->getLangOpts(), &m_compiler->getPreprocessor());
+    
+    ASTConsumer *ast_transformer = m_expr.ASTTransformer(m_code_generator.get());
+    
+    if (ast_transformer)
+        ParseAST(m_compiler->getPreprocessor(), ast_transformer, m_compiler->getASTContext());
+    else 
+        ParseAST(m_compiler->getPreprocessor(), m_code_generator.get(), m_compiler->getASTContext());    
+    
+    diag_buf->EndSourceFile();
+        
+    TextDiagnosticBuffer::const_iterator diag_iterator;
+    
+    int num_errors = 0;
+    
+    for (diag_iterator = diag_buf->warn_begin();
+         diag_iterator != diag_buf->warn_end();
+         ++diag_iterator)
+        stream.Printf("warning: %s\n", (*diag_iterator).second.c_str());
+    
+    num_errors = 0;
+    
+    for (diag_iterator = diag_buf->err_begin();
+         diag_iterator != diag_buf->err_end();
+         ++diag_iterator)
+    {
+        num_errors++;
+        stream.Printf("error: %s\n", (*diag_iterator).second.c_str());
+    }
+    
+    for (diag_iterator = diag_buf->note_begin();
+         diag_iterator != diag_buf->note_end();
+         ++diag_iterator)
+        stream.Printf("note: %s\n", (*diag_iterator).second.c_str());
+    
+    if (!num_errors)
+    {
+        if (m_expr.DeclMap() && !m_expr.DeclMap()->ResolveUnknownTypes())
+        {
+            stream.Printf("error: Couldn't infer the type of a variable\n");
+            num_errors++;
+        }
+    }
+    
+    return num_errors;
+}
+
+static bool FindFunctionInModule (std::string &mangled_name,
+                                  llvm::Module *module,
+                                  const char *orig_name)
+{
+    for (llvm::Module::iterator fi = module->getFunctionList().begin(), fe = module->getFunctionList().end();
+         fi != fe;
+         ++fi)
+    {        
+        if (fi->getName().str().find(orig_name) != std::string::npos)
+        {
+            mangled_name = fi->getName().str();
+            return true;
+        }
+    }
+    
+    return false;
+}
+
+Error
+ClangExpressionParser::PrepareForExecution (lldb::addr_t &func_allocation_addr, 
+                                            lldb::addr_t &func_addr, 
+                                            lldb::addr_t &func_end, 
+                                            ExecutionContext &exe_ctx,
+                                            IRForTarget::StaticDataAllocator *data_allocator,
+                                            bool &evaluated_statically,
+                                            lldb::ClangExpressionVariableSP &const_result,
+                                            ExecutionPolicy execution_policy)
+{
+    func_allocation_addr = LLDB_INVALID_ADDRESS;
+	func_addr = LLDB_INVALID_ADDRESS;
+	func_end = LLDB_INVALID_ADDRESS;
+    lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
+
+    std::auto_ptr<llvm::ExecutionEngine> execution_engine;
+    
+    Error err;
+    
+    llvm::Module *module = m_code_generator->ReleaseModule();
+
+    if (!module)
+    {
+        err.SetErrorToGenericError();
+        err.SetErrorString("IR doesn't contain a module");
+        return err;
+    }
+    
+    // Find the actual name of the function (it's often mangled somehow)
+    
+    std::string function_name;
+    
+    if (!FindFunctionInModule(function_name, module, m_expr.FunctionName()))
+    {
+        err.SetErrorToGenericError();
+        err.SetErrorStringWithFormat("Couldn't find %s() in the module", m_expr.FunctionName());
+        return err;
+    }
+    else
+    {
+        if (log)
+            log->Printf("Found function %s for %s", function_name.c_str(), m_expr.FunctionName());
+    }
+    
+    ClangExpressionDeclMap *decl_map = m_expr.DeclMap(); // result can be NULL
+    
+    if (decl_map)
+    {
+        Stream *error_stream = NULL;
+        Target *target = exe_ctx.GetTargetPtr();
+        if (target)
+            error_stream = &target->GetDebugger().GetErrorStream();
+    
+        IRForTarget ir_for_target(decl_map,
+                                  m_expr.NeedsVariableResolution(),
+                                  execution_policy,
+                                  const_result,
+                                  data_allocator,
+                                  error_stream,
+                                  function_name.c_str());
+        
+        bool ir_can_run = ir_for_target.runOnModule(*module);
+        
+        Error &interpreter_error(ir_for_target.getInterpreterError());
+        
+        if (execution_policy != eExecutionPolicyAlways && interpreter_error.Success())
+        {
+            if (const_result)
+                const_result->TransferAddress();
+            evaluated_statically = true;
+            err.Clear();
+            return err;
+        }
+        
+        Process *process = exe_ctx.GetProcessPtr();
+
+        if (!process || execution_policy == eExecutionPolicyNever)
+        {
+            err.SetErrorToGenericError();
+            if (execution_policy == eExecutionPolicyAlways)
+                err.SetErrorString("Execution needed to run in the target, but the target can't be run");
+            else
+                err.SetErrorStringWithFormat("Interpreting the expression locally failed: %s", interpreter_error.AsCString());
+
+            return err;
+        }
+        else if (!ir_can_run)
+        {
+            err.SetErrorToGenericError();
+            err.SetErrorString("The expression could not be prepared to run in the target");
+            
+            return err;
+        }
+        
+        if (execution_policy != eExecutionPolicyNever &&
+            m_expr.NeedsValidation() && 
+            process)
+        {
+            if (!process->GetDynamicCheckers())
+            {                
+                DynamicCheckerFunctions *dynamic_checkers = new DynamicCheckerFunctions();
+                
+                StreamString install_errors;
+                
+                if (!dynamic_checkers->Install(install_errors, exe_ctx))
+                {
+                    if (install_errors.GetString().empty())
+                        err.SetErrorString ("couldn't install checkers, unknown error");
+                    else
+                        err.SetErrorString (install_errors.GetString().c_str());
+                    
+                    return err;
+                }
+                
+                process->SetDynamicCheckers(dynamic_checkers);
+                
+                if (log)
+                    log->Printf("== [ClangUserExpression::Evaluate] Finished installing dynamic checkers ==");
+            }
+            
+            IRDynamicChecks ir_dynamic_checks(*process->GetDynamicCheckers(), function_name.c_str());
+        
+            if (!ir_dynamic_checks.runOnModule(*module))
+            {
+                err.SetErrorToGenericError();
+                err.SetErrorString("Couldn't add dynamic checks to the expression");
+                return err;
+            }
+        }
+    }
+    
+    // llvm will own this pointer when llvm::ExecutionEngine::createJIT is called 
+    // below so we don't need to free it.
+    RecordingMemoryManager *jit_memory_manager = new RecordingMemoryManager();
+    
+    std::string error_string;
+
+    if (log)
+    {
+        std::string s;
+        raw_string_ostream oss(s);
+        
+        module->print(oss, NULL);
+        
+        oss.flush();
+        
+        log->Printf ("Module being sent to JIT: \n%s", s.c_str());
+    }
+    
+    EngineBuilder builder(module);
+    builder.setEngineKind(EngineKind::JIT)
+        .setErrorStr(&error_string)
+        .setRelocationModel(llvm::Reloc::PIC_)
+        .setJITMemoryManager(jit_memory_manager)
+        .setOptLevel(CodeGenOpt::Less)
+        .setAllocateGVsWithCode(true)
+        .setCodeModel(CodeModel::Small)
+        .setUseMCJIT(true);
+    
+    llvm::Triple triple(module->getTargetTriple());
+    StringRef mArch;
+    StringRef mCPU;
+    SmallVector<std::string, 0> mAttrs;
+    
+    TargetMachine *target_machine = builder.selectTarget(triple,
+                                                         mArch,
+                                                         mCPU,
+                                                         mAttrs);
+    
+    execution_engine.reset(builder.create(target_machine));
+        
+    if (!execution_engine.get())
+    {
+        err.SetErrorToGenericError();
+        err.SetErrorStringWithFormat("Couldn't JIT the function: %s", error_string.c_str());
+        return err;
+    }
+    
+    execution_engine->DisableLazyCompilation();
+    
+    llvm::Function *function = module->getFunction (function_name.c_str());
+    
+    // We don't actually need the function pointer here, this just forces it to get resolved.
+    
+    void *fun_ptr = execution_engine->getPointerToFunction(function);
+        
+    // Errors usually cause failures in the JIT, but if we're lucky we get here.
+    
+    if (!function)
+    {
+        err.SetErrorToGenericError();
+        err.SetErrorStringWithFormat("Couldn't find '%s' in the JITted module", function_name.c_str());
+        return err;
+    }
+    
+    if (!fun_ptr)
+    {
+        err.SetErrorToGenericError();
+        err.SetErrorStringWithFormat("'%s' was in the JITted module but wasn't lowered", function_name.c_str());
+        return err;
+    }
+    
+    m_jitted_functions.push_back (ClangExpressionParser::JittedFunction(function_name.c_str(), (lldb::addr_t)fun_ptr));
+    
+
+    Process *process = exe_ctx.GetProcessPtr();
+    if (process == NULL)
+    {
+        err.SetErrorToGenericError();
+        err.SetErrorString("Couldn't write the JIT compiled code into the target because there is no target");
+        return err;
+    }
+        
+    jit_memory_manager->CommitAllocations(*process);
+    jit_memory_manager->ReportAllocations(*execution_engine);
+    jit_memory_manager->WriteData(*process);
+    
+    std::vector<JittedFunction>::iterator pos, end = m_jitted_functions.end();
+    
+    for (pos = m_jitted_functions.begin(); pos != end; pos++)
+    {
+        (*pos).m_remote_addr = jit_memory_manager->GetRemoteAddressForLocal ((*pos).m_local_addr);
+    
+        if (!(*pos).m_name.compare(function_name.c_str()))
+        {
+            RecordingMemoryManager::AddrRange func_range = jit_memory_manager->GetRemoteRangeForLocal((*pos).m_local_addr);
+            func_end = func_range.first + func_range.second;
+            func_addr = (*pos).m_remote_addr;
+        }
+    }
+    
+    if (log)
+    {
+        log->Printf("Code can be run in the target.");
+        
+        StreamString disassembly_stream;
+        
+        Error err = DisassembleFunction(disassembly_stream, exe_ctx, jit_memory_manager);
+        
+        if (!err.Success())
+        {
+            log->Printf("Couldn't disassemble function : %s", err.AsCString("unknown error"));
+        }
+        else
+        {
+            log->Printf("Function disassembly:\n%s", disassembly_stream.GetData());
+        }
+    }
+    
+    execution_engine.reset();
+    
+    err.Clear();
+    return err;
+}
+
+Error
+ClangExpressionParser::DisassembleFunction (Stream &stream, ExecutionContext &exe_ctx, RecordingMemoryManager *jit_memory_manager)
+{
+    lldb::LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
+    
+    const char *name = m_expr.FunctionName();
+    
+    Error ret;
+    
+    ret.Clear();
+    
+    lldb::addr_t func_local_addr = LLDB_INVALID_ADDRESS;
+    lldb::addr_t func_remote_addr = LLDB_INVALID_ADDRESS;
+    
+    std::vector<JittedFunction>::iterator pos, end = m_jitted_functions.end();
+    
+    for (pos = m_jitted_functions.begin(); pos < end; pos++)
+    {
+        if (strstr(pos->m_name.c_str(), name))
+        {
+            func_local_addr = pos->m_local_addr;
+            func_remote_addr = pos->m_remote_addr;
+        }
+    }
+    
+    if (func_local_addr == LLDB_INVALID_ADDRESS)
+    {
+        ret.SetErrorToGenericError();
+        ret.SetErrorStringWithFormat("Couldn't find function %s for disassembly", name);
+        return ret;
+    }
+    
+    if (log)
+        log->Printf("Found function, has local address 0x%llx and remote address 0x%llx", (uint64_t)func_local_addr, (uint64_t)func_remote_addr);
+    
+    std::pair <lldb::addr_t, lldb::addr_t> func_range;
+    
+    func_range = jit_memory_manager->GetRemoteRangeForLocal(func_local_addr);
+    
+    if (func_range.first == 0 && func_range.second == 0)
+    {
+        ret.SetErrorToGenericError();
+        ret.SetErrorStringWithFormat("Couldn't find code range for function %s", name);
+        return ret;
+    }
+    
+    if (log)
+        log->Printf("Function's code range is [0x%llx+0x%llx]", func_range.first, func_range.second);
+    
+    Target *target = exe_ctx.GetTargetPtr();
+    if (!target)
+    {
+        ret.SetErrorToGenericError();
+        ret.SetErrorString("Couldn't find the target");
+    }
+    
+    lldb::DataBufferSP buffer_sp(new DataBufferHeap(func_range.second, 0));
+    
+    Process *process = exe_ctx.GetProcessPtr();
+    Error err;
+    process->ReadMemory(func_remote_addr, buffer_sp->GetBytes(), buffer_sp->GetByteSize(), err);
+    
+    if (!err.Success())
+    {
+        ret.SetErrorToGenericError();
+        ret.SetErrorStringWithFormat("Couldn't read from process: %s", err.AsCString("unknown error"));
+        return ret;
+    }
+    
+    ArchSpec arch(target->GetArchitecture());
+    
+    lldb::DisassemblerSP disassembler = Disassembler::FindPlugin(arch, NULL);
+    
+    if (!disassembler)
+    {
+        ret.SetErrorToGenericError();
+        ret.SetErrorStringWithFormat("Unable to find disassembler plug-in for %s architecture.", arch.GetArchitectureName());
+        return ret;
+    }
+    
+    if (!process)
+    {
+        ret.SetErrorToGenericError();
+        ret.SetErrorString("Couldn't find the process");
+        return ret;
+    }
+    
+    DataExtractor extractor(buffer_sp, 
+                            process->GetByteOrder(),
+                            target->GetArchitecture().GetAddressByteSize());
+    
+    if (log)
+    {
+        log->Printf("Function data has contents:");
+        extractor.PutToLog (log.get(),
+                            0,
+                            extractor.GetByteSize(),
+                            func_remote_addr,
+                            16,
+                            DataExtractor::TypeUInt8);
+    }
+    
+    disassembler->DecodeInstructions (Address (func_remote_addr), extractor, 0, UINT32_MAX, false);
+    
+    InstructionList &instruction_list = disassembler->GetInstructionList();
+    const uint32_t max_opcode_byte_size = instruction_list.GetMaxOpcocdeByteSize();
+    for (uint32_t instruction_index = 0, num_instructions = instruction_list.GetSize(); 
+         instruction_index < num_instructions; 
+         ++instruction_index)
+    {
+        Instruction *instruction = instruction_list.GetInstructionAtIndex(instruction_index).get();
+        instruction->Dump (&stream,
+                           max_opcode_byte_size,
+                           true,
+                           true,
+                           &exe_ctx);
+        stream.PutChar('\n');
+    }
+    
+    return ret;
+}

Modified: lldb/branches/windows/source/Expression/ClangUserExpression.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Expression/ClangUserExpression.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Expression/ClangUserExpression.cpp (original)
+++ lldb/branches/windows/source/Expression/ClangUserExpression.cpp Thu Nov  1 02:04:04 2012
@@ -31,6 +31,10 @@
 #include "lldb/Expression/ExpressionSourceCode.h"
 #include "lldb/Host/Host.h"
 #include "lldb/Symbol/Block.h"
+#include "lldb/Symbol/ClangASTContext.h"
+#include "lldb/Symbol/Function.h"
+#include "lldb/Symbol/Type.h"
+#include "lldb/Symbol/ClangExternalASTSourceCommon.h"
 #include "lldb/Symbol/VariableList.h"
 #include "lldb/Target/ExecutionContext.h"
 #include "lldb/Target/Process.h"
@@ -192,6 +196,29 @@
                 m_static_method = true;
         }
     }
+    else if (clang::FunctionDecl *function_decl = llvm::dyn_cast<clang::FunctionDecl>(decl_context))
+    {
+        // We might also have a function that said in the debug information that it captured an
+        // object pointer.  The best way to deal with getting to the ivars at present it by pretending
+        // that this is a method of a class in whatever runtime the debug info says the object pointer
+        // belongs to.  Do that here.
+        
+        ClangASTMetadata *metadata = ClangASTContext::GetMetadata (&decl_context->getParentASTContext(), (uintptr_t) function_decl);
+        if (metadata && metadata->HasObjectPtr())
+        {
+            lldb::LanguageType language = metadata->GetObjectPtrLanguage();
+            if (language == lldb::eLanguageTypeC_plus_plus)
+            {
+                m_cplusplus = true;
+                m_needs_object_ptr = true;
+            }
+            else if (language == lldb::eLanguageTypeObjC)
+            {
+                m_objectivec = true;
+                m_needs_object_ptr = true;
+            }
+        }
+    }
 }
 
 // This is a really nasty hack, meant to fix Objective-C expressions of the form

Modified: lldb/branches/windows/source/Expression/IRInterpreter.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Expression/IRInterpreter.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Expression/IRInterpreter.cpp (original)
+++ lldb/branches/windows/source/Expression/IRInterpreter.cpp Thu Nov  1 02:04:04 2012
@@ -676,7 +676,11 @@
                     if (bare_register)
                         indirect_variable = false;
                     
-                    Memory::Region data_region = m_memory.Malloc(value->getType());
+                    lldb_private::RegisterInfo *reg_info = resolved_value.GetRegisterInfo();
+                    Memory::Region data_region = (reg_info->encoding == lldb::eEncodingVector) ?
+                        m_memory.Malloc(reg_info->byte_size, m_target_data.getPrefTypeAlignment(value->getType())) :
+                        m_memory.Malloc(value->getType());
+
                     data_region.m_allocation->m_origin = resolved_value;
                     Memory::Region ref_region = m_memory.Malloc(value->getType());
                     Memory::Region pointer_region;

Modified: lldb/branches/windows/source/Host/common/File.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Host/common/File.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Host/common/File.cpp (original)
+++ lldb/branches/windows/source/Host/common/File.cpp Thu Nov  1 02:04:04 2012
@@ -373,7 +373,7 @@
     Error error;
     if (DescriptorIsValid())
     {
-        offset = ::lseek (m_descriptor, offset, SEEK_CUR);
+        offset = ::lseek (m_descriptor, offset, SEEK_END);
         
         if (offset == -1)
             error.SetErrorToErrno();

Modified: lldb/branches/windows/source/Host/macosx/Symbols.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Host/macosx/Symbols.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Host/macosx/Symbols.cpp (original)
+++ lldb/branches/windows/source/Host/macosx/Symbols.cpp Thu Nov  1 02:04:04 2012
@@ -11,6 +11,7 @@
 
 // C Includes
 #include <dirent.h>
+#include <pwd.h>
 #include "llvm/Support/MachO.h"
 
 // C++ Includes
@@ -696,12 +697,27 @@
             
             if (!g_dsym_for_uuid_exe_exists)
             {
-                dsym_for_uuid_exe_spec.SetFile("~rc/bin/dsymForUUID", true);
+                dsym_for_uuid_exe_spec.SetFile("/usr/local/bin/dsymForUUID", false);
                 g_dsym_for_uuid_exe_exists = dsym_for_uuid_exe_spec.Exists();
                 if (!g_dsym_for_uuid_exe_exists)
                 {
-                    dsym_for_uuid_exe_spec.SetFile("/usr/local/bin/dsymForUUID", false);
-                    g_dsym_for_uuid_exe_exists = dsym_for_uuid_exe_spec.Exists();
+                    int bufsize;
+                    if ((bufsize = sysconf(_SC_GETPW_R_SIZE_MAX)) != -1)
+                    {
+                        char buffer[bufsize];
+                        struct passwd pwd;
+                        struct passwd *tilde_rc = NULL;
+                        // we are a library so we need to use the reentrant version of getpwnam()
+                        if (getpwnam_r ("rc", &pwd, buffer, bufsize, &tilde_rc) == 0 
+                            && tilde_rc 
+                            && tilde_rc->pw_dir)
+                        {
+                            std::string dsymforuuid_path(tilde_rc->pw_dir);
+                            dsymforuuid_path += "/bin/dsymForUUID";
+                            dsym_for_uuid_exe_spec.SetFile(dsymforuuid_path.c_str(), false);
+                            g_dsym_for_uuid_exe_exists = dsym_for_uuid_exe_spec.Exists();
+                        }
+                    }
                 }
             }
             if (!g_dsym_for_uuid_exe_exists && g_dbgshell_command != NULL)

Modified: lldb/branches/windows/source/Interpreter/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Interpreter/CMakeLists.txt?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Interpreter/CMakeLists.txt (original)
+++ lldb/branches/windows/source/Interpreter/CMakeLists.txt Thu Nov  1 02:04:04 2012
@@ -13,6 +13,7 @@
   OptionGroupFormat.cpp
   OptionGroupOutputFile.cpp
   OptionGroupPlatform.cpp
+  OptionGroupString.cpp
   OptionGroupUInt64.cpp
   OptionGroupUUID.cpp
   OptionGroupValueObjectDisplay.cpp

Modified: lldb/branches/windows/source/Interpreter/CommandInterpreter.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Interpreter/CommandInterpreter.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Interpreter/CommandInterpreter.cpp (original)
+++ lldb/branches/windows/source/Interpreter/CommandInterpreter.cpp Thu Nov  1 02:04:04 2012
@@ -42,23 +42,28 @@
 #include "../Commands/CommandObjectVersion.h"
 #include "../Commands/CommandObjectWatchpoint.h"
 
-#include "lldb/Interpreter/Args.h"
-#include "lldb/Interpreter/Options.h"
 #include "lldb/Core/Debugger.h"
 #include "lldb/Core/InputReader.h"
+#include "lldb/Core/Log.h"
 #include "lldb/Core/Stream.h"
 #include "lldb/Core/Timer.h"
+
 #include "lldb/Host/Host.h"
-#include "lldb/Target/Process.h"
-#include "lldb/Target/Thread.h"
-#include "lldb/Target/TargetList.h"
-#include "lldb/Utility/CleanUp.h"
 
+#include "lldb/Interpreter/Args.h"
 #include "lldb/Interpreter/CommandReturnObject.h"
 #include "lldb/Interpreter/CommandInterpreter.h"
+#include "lldb/Interpreter/Options.h"
 #include "lldb/Interpreter/ScriptInterpreterNone.h"
 #include "lldb/Interpreter/ScriptInterpreterPython.h"
 
+
+#include "lldb/Target/Process.h"
+#include "lldb/Target/Thread.h"
+#include "lldb/Target/TargetList.h"
+
+#include "lldb/Utility/CleanUp.h"
+
 using namespace lldb;
 using namespace lldb_private;
 
@@ -519,8 +524,8 @@
     std::auto_ptr<CommandObjectRegexCommand>
     connect_gdb_remote_cmd_ap(new CommandObjectRegexCommand (*this,
                                                       "gdb-remote",
-                                                      "Connect to a remote GDB server.",
-                                                      "gdb-remote [<host>:<port>]\ngdb-remote [<port>]", 2));
+                                                      "Connect to a remote GDB server.  If no hostname is provided, localhost is assumed.",
+                                                      "gdb-remote [<hostname>:]<portnum>", 2));
     if (connect_gdb_remote_cmd_ap.get())
     {
         if (connect_gdb_remote_cmd_ap->AddRegexCommand("^([^:]+:[[:digit:]]+)$", "process connect --plugin gdb-remote connect://%1") &&
@@ -534,8 +539,8 @@
     std::auto_ptr<CommandObjectRegexCommand>
     connect_kdp_remote_cmd_ap(new CommandObjectRegexCommand (*this,
                                                              "kdp-remote",
-                                                             "Connect to a remote KDP server.",
-                                                             "kdp-remote [<host>]\nkdp-remote [<host>:<port>]", 2));
+                                                             "Connect to a remote KDP server.  udp port 41139 is the default port number.",
+                                                             "kdp-remote <hostname>[:<portnum>]", 2));
     if (connect_kdp_remote_cmd_ap.get())
     {
         if (connect_kdp_remote_cmd_ap->AddRegexCommand("^([^:]+:[[:digit:]]+)$", "process connect --plugin kdp-remote udp://%1") &&
@@ -2549,8 +2554,14 @@
 }
 
 ScriptInterpreter *
-CommandInterpreter::GetScriptInterpreter ()
+CommandInterpreter::GetScriptInterpreter (bool can_create)
 {
+    if (m_script_interpreter_ap.get() != NULL)
+        return m_script_interpreter_ap.get();
+    
+    if (!can_create)
+        return NULL;
+ 
     // <rdar://problem/11751427>
     // we need to protect the initialization of the script interpreter
     // otherwise we could end up with two threads both trying to create
@@ -2561,8 +2572,9 @@
     static Mutex g_interpreter_mutex(Mutex::eMutexTypeRecursive);
     Mutex::Locker interpreter_lock(g_interpreter_mutex);
     
-    if (m_script_interpreter_ap.get() != NULL)
-        return m_script_interpreter_ap.get();
+    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_OBJECT));
+    if (log)
+        log->Printf("Initializing the ScriptInterpreter now\n");
     
     lldb::ScriptLanguage script_lang = GetDebugger().GetScriptLanguage();
     switch (script_lang)

Modified: lldb/branches/windows/source/Interpreter/CommandObject.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Interpreter/CommandObject.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Interpreter/CommandObject.cpp (original)
+++ lldb/branches/windows/source/Interpreter/CommandObject.cpp Thu Nov  1 02:04:04 2012
@@ -744,6 +744,33 @@
 }
 
 static const char *
+LanguageTypeHelpTextCallback ()
+{
+    static char* help_text_ptr = NULL;
+    
+    if (help_text_ptr)
+        return help_text_ptr;
+    
+    StreamString sstr;
+    sstr << "One of the following languages:\n";
+    
+    for (LanguageType l = eLanguageTypeUnknown; l < eNumLanguageTypes; l = (LanguageType)((int)l + 1))
+    {
+        sstr << "  " << LanguageRuntime::GetNameForLanguageType(l) << "\n";
+    }
+    
+    sstr.Flush();
+    
+    std::string data = sstr.GetString();
+    
+    help_text_ptr = new char[data.length()+1];
+    
+    data.copy(help_text_ptr, data.length());
+    
+    return help_text_ptr;
+}
+
+static const char *
 SummaryStringHelpTextCallback()
 {
     return
@@ -925,6 +952,7 @@
     { eArgTypeClassName, "class-name", CommandCompletions::eNoCompletion, { NULL, false }, "Then name of a class from the debug information in the program." },
     { eArgTypeCommandName, "cmd-name", CommandCompletions::eNoCompletion, { NULL, false }, "A debugger command (may be multiple words), without any options or arguments." },
     { eArgTypeCount, "count", CommandCompletions::eNoCompletion, { NULL, false }, "An unsigned integer." },
+    { eArgTypeDirectoryName, "directory", CommandCompletions::eDiskDirectoryCompletion, { NULL, false }, "A directory name." },
     { eArgTypeEndAddress, "end-address", CommandCompletions::eNoCompletion, { NULL, false }, "Help text goes here." },
     { eArgTypeExpression, "expr", CommandCompletions::eNoCompletion, { NULL, false }, "Help text goes here." },
     { eArgTypeExpressionPath, "expr-path", CommandCompletions::eNoCompletion, { ExprPathHelpTextCallback, true }, NULL },
@@ -937,7 +965,7 @@
     { eArgTypeFunctionOrSymbol, "function-or-symbol", CommandCompletions::eNoCompletion, { NULL, false }, "The name of a function or symbol." },
     { eArgTypeGDBFormat, "gdb-format", CommandCompletions::eNoCompletion, { GDBFormatHelpTextCallback, true }, NULL },
     { eArgTypeIndex, "index", CommandCompletions::eNoCompletion, { NULL, false }, "An index into a list." },
-    { eArgTypeLanguage, "language", CommandCompletions::eNoCompletion, { NULL, false }, "A source language name." },
+    { eArgTypeLanguage, "language", CommandCompletions::eNoCompletion, { LanguageTypeHelpTextCallback, true }, NULL },
     { eArgTypeLineNum, "linenum", CommandCompletions::eNoCompletion, { NULL, false }, "Line number in a source file." },
     { eArgTypeLogCategory, "log-category", CommandCompletions::eNoCompletion, { NULL, false }, "The name of a category within a log channel, e.g. all (try \"log list\" to see a list of all channels and their categories." },
     { eArgTypeLogChannel, "log-channel", CommandCompletions::eNoCompletion, { NULL, false }, "The name of a log channel, e.g. process.gdb-remote (try \"log list\" to see a list of all channels and their categories)." },
@@ -949,7 +977,6 @@
     { eArgTypeOffset, "offset", CommandCompletions::eNoCompletion, { NULL, false }, "Help text goes here." },
     { eArgTypeOldPathPrefix, "old-path-prefix", CommandCompletions::eNoCompletion, { NULL, false }, "Help text goes here." },
     { eArgTypeOneLiner, "one-line-command", CommandCompletions::eNoCompletion, { NULL, false }, "A command that is entered as a single line of text." },
-    { eArgTypePath, "path", CommandCompletions::eNoCompletion, { NULL, false }, "Help text goes here." },
     { eArgTypePid, "pid", CommandCompletions::eNoCompletion, { NULL, false }, "The process ID number." },
     { eArgTypePlugin, "plugin", CommandCompletions::eNoCompletion, { NULL, false }, "Help text goes here." },
     { eArgTypeProcessName, "process-name", CommandCompletions::eNoCompletion, { NULL, false }, "The name of the process." },

Modified: lldb/branches/windows/source/Interpreter/CommandObjectScript.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Interpreter/CommandObjectScript.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Interpreter/CommandObjectScript.cpp (original)
+++ lldb/branches/windows/source/Interpreter/CommandObjectScript.cpp Thu Nov  1 02:04:04 2012
@@ -68,7 +68,7 @@
     }
 
     // We can do better when reporting the status of one-liner script execution.
-    if (script_interpreter->ExecuteOneLine (command, &result, true))
+    if (script_interpreter->ExecuteOneLine (command, &result))
         result.SetStatus(eReturnStatusSuccessFinishNoResult);
     else
         result.SetStatus(eReturnStatusFailed);

Modified: lldb/branches/windows/source/Interpreter/OptionGroupOutputFile.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Interpreter/OptionGroupOutputFile.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Interpreter/OptionGroupOutputFile.cpp (original)
+++ lldb/branches/windows/source/Interpreter/OptionGroupOutputFile.cpp Thu Nov  1 02:04:04 2012
@@ -31,7 +31,7 @@
 static OptionDefinition
 g_option_table[] =
 {
-    { LLDB_OPT_SET_1 , false, "outfile", 'o', required_argument, NULL, 0, eArgTypePath , "Specify a path for capturing command output."},
+    { LLDB_OPT_SET_1 , false, "outfile", 'o', required_argument, NULL, 0, eArgTypeFilename , "Specify a path for capturing command output."},
     { LLDB_OPT_SET_1 , false, "append-outfile" , 'A', no_argument, NULL, 0, eArgTypeNone , "Append to the the file specified with '--outfile <path>'."},
 };
 

Modified: lldb/branches/windows/source/Interpreter/OptionValueProperties.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Interpreter/OptionValueProperties.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Interpreter/OptionValueProperties.cpp (original)
+++ lldb/branches/windows/source/Interpreter/OptionValueProperties.cpp Thu Nov  1 02:04:04 2012
@@ -741,4 +741,19 @@
     }
 }
 
+lldb::OptionValuePropertiesSP
+OptionValueProperties::GetSubProperty (const ExecutionContext *exe_ctx,
+                                       const ConstString &name)
+{
+    lldb::OptionValueSP option_value_sp(GetValueForKey(exe_ctx, name, false));
+    if (option_value_sp)
+    {
+        OptionValueProperties *ov_properties = option_value_sp->GetAsProperties ();
+        if (ov_properties)
+            return ov_properties->shared_from_this();
+    }
+    return lldb::OptionValuePropertiesSP();
+}
+
+
 

Modified: lldb/branches/windows/source/Interpreter/ScriptInterpreterNone.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Interpreter/ScriptInterpreterNone.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Interpreter/ScriptInterpreterNone.cpp (original)
+++ lldb/branches/windows/source/Interpreter/ScriptInterpreterNone.cpp Thu Nov  1 02:04:04 2012
@@ -26,7 +26,7 @@
 }
 
 bool
-ScriptInterpreterNone::ExecuteOneLine (const char *command, CommandReturnObject *, bool enable_io, bool set_lldb_globals)
+ScriptInterpreterNone::ExecuteOneLine (const char *command, CommandReturnObject *, const ExecuteScriptOptions&)
 {
     m_interpreter.GetDebugger().GetErrorStream().PutCString ("error: there is no embedded script interpreter in this mode.\n");
     return false;

Modified: lldb/branches/windows/source/Interpreter/ScriptInterpreterPython.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Interpreter/ScriptInterpreterPython.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Interpreter/ScriptInterpreterPython.cpp (original)
+++ lldb/branches/windows/source/Interpreter/ScriptInterpreterPython.cpp Thu Nov  1 02:04:04 2012
@@ -53,6 +53,7 @@
 static ScriptInterpreter::SWIGPythonGetIndexOfChildWithName g_swig_get_index_child = NULL;
 static ScriptInterpreter::SWIGPythonCastPyObjectToSBValue g_swig_cast_to_sbvalue  = NULL;
 static ScriptInterpreter::SWIGPythonUpdateSynthProviderInstance g_swig_update_provider = NULL;
+static ScriptInterpreter::SWIGPythonMightHaveChildrenSynthProviderInstance g_swig_mighthavechildren_provider = NULL;
 static ScriptInterpreter::SWIGPythonCallCommand g_swig_call_command = NULL;
 static ScriptInterpreter::SWIGPythonCallModuleInit g_swig_call_module_init = NULL;
 static ScriptInterpreter::SWIGPythonCreateOSPlugin g_swig_create_os_plugin = NULL;
@@ -99,11 +100,12 @@
  );
 
 
-extern "C" uint32_t       LLDBSwigPython_CalculateNumChildren        (void *implementor);
-extern "C" void*          LLDBSwigPython_GetChildAtIndex             (void *implementor, uint32_t idx);
-extern "C" int            LLDBSwigPython_GetIndexOfChildWithName     (void *implementor, const char* child_name);
-extern "C" void*          LLDBSWIGPython_CastPyObjectToSBValue       (void* data);
-extern "C" bool           LLDBSwigPython_UpdateSynthProviderInstance (void* implementor);
+extern "C" uint32_t       LLDBSwigPython_CalculateNumChildren                   (void *implementor);
+extern "C" void*          LLDBSwigPython_GetChildAtIndex                        (void *implementor, uint32_t idx);
+extern "C" int            LLDBSwigPython_GetIndexOfChildWithName                (void *implementor, const char* child_name);
+extern "C" void*          LLDBSWIGPython_CastPyObjectToSBValue                  (void* data);
+extern "C" bool           LLDBSwigPython_UpdateSynthProviderInstance            (void* implementor);
+extern "C" bool           LLDBSwigPython_MightHaveChildrenSynthProviderInstance (void* implementor);
 
 extern "C" bool           LLDBSwigPythonCallCommand 
 (
@@ -197,24 +199,6 @@
     DoFreeLock();
 }
 
-class ForceDisableSyntheticChildren
-{
-public:
-    ForceDisableSyntheticChildren (Target* target) :
-        m_target(target)
-    {
-        m_old_value = target->GetSuppressSyntheticValue();
-        target->SetSuppressSyntheticValue(true);
-    }
-    ~ForceDisableSyntheticChildren ()
-    {
-        m_target->SetSuppressSyntheticValue(m_old_value);
-    }
-private:
-    Target* m_target;
-    bool m_old_value;
-};
-
 ScriptInterpreterPython::PythonInputReaderManager::PythonInputReaderManager (ScriptInterpreterPython *interpreter) :
 m_interpreter(interpreter),
 m_debugger_sp(),
@@ -500,8 +484,7 @@
     // WARNING: temporary code that loads Cocoa formatters - this should be done on a per-platform basis rather than loading the whole set
     // and letting the individual formatter classes exploit APIs to check whether they can/cannot do their task
     run_string.Clear();
-    //run_string.Printf ("run_one_line (%s, 'from lldb.formatters import *; from lldb.formatters.objc import *; from lldb.formatters.cpp import *')", m_dictionary_name.c_str());
-    run_string.Printf ("run_one_line (%s, 'import lldb.runtime.objc, lldb.formatters, lldb.formatters.objc, lldb.formatters.cpp')", m_dictionary_name.c_str());
+    run_string.Printf ("run_one_line (%s, 'import lldb.runtime.objc, lldb.formatters, lldb.formatters.objc, lldb.formatters.cpp, pydoc')", m_dictionary_name.c_str());
     PyRun_SimpleString (run_string.GetData());
 
     int new_count = Debugger::TestDebuggerRefCount();
@@ -510,7 +493,7 @@
         Debugger::Terminate();
 
     run_string.Clear();
-    run_string.Printf ("run_one_line (%s, 'lldb.debugger_unique_id = %llu')", m_dictionary_name.c_str(),
+    run_string.Printf ("run_one_line (%s, 'lldb.debugger_unique_id = %llu; pydoc.pager = pydoc.plainpager')", m_dictionary_name.c_str(),
                        interpreter.GetDebugger().GetID());
     PyRun_SimpleString (run_string.GetData());
     
@@ -518,6 +501,11 @@
     {
         m_new_sysout = PyFile_FromFile (m_dbg_stdout, (char *) "", (char *) "w", _check_and_flush);
     }
+    
+    // get the output file handle from the debugger (if any)
+    File& out_file = interpreter.GetDebugger().GetOutputFile();
+    if (out_file.IsValid())
+        ResetOutputFileHandle(out_file.GetStream());
 }
 
 ScriptInterpreterPython::~ScriptInterpreterPython ()
@@ -721,7 +709,7 @@
 }
 
 bool
-ScriptInterpreterPython::ExecuteOneLine (const char *command, CommandReturnObject *result, bool enable_io, bool set_lldb_globals)
+ScriptInterpreterPython::ExecuteOneLine (const char *command, CommandReturnObject *result, const ExecuteScriptOptions &options)
 {
     if (!m_valid_session)
         return false;
@@ -732,8 +720,8 @@
     // method to pass the command string directly down to Python.
 
     Locker locker(this,
-                  ScriptInterpreterPython::Locker::AcquireLock | (set_lldb_globals ? ScriptInterpreterPython::Locker::InitSession : 0),
-                  ScriptInterpreterPython::Locker::FreeAcquiredLock | (set_lldb_globals ? ScriptInterpreterPython::Locker::TearDownSession : 0));
+                  ScriptInterpreterPython::Locker::AcquireLock | (options.GetSetLLDBGlobals() ? ScriptInterpreterPython::Locker::InitSession : 0),
+                  ScriptInterpreterPython::Locker::FreeAcquiredLock | (options.GetSetLLDBGlobals() ? ScriptInterpreterPython::Locker::TearDownSession : 0));
 
     bool success = false;
 
@@ -776,7 +764,7 @@
                         {
                             PyObject *pvalue = NULL;
                             { // scope for PythonInputReaderManager
-                                PythonInputReaderManager py_input(enable_io ? this : NULL);
+                                PythonInputReaderManager py_input(options.GetEnableIO() ? this : NULL);
                                 pvalue = PyObject_CallObject (pfunc, pargs);
                             }
                             Py_DECREF (pargs);
@@ -785,7 +773,7 @@
                                 Py_DECREF (pvalue);
                                 success = true;
                             }
-                            else if (PyErr_Occurred ())
+                            else if (options.GetMaskoutErrors() && PyErr_Occurred ())
                             {
                                 PyErr_Print();
                                 PyErr_Clear();
@@ -1000,13 +988,12 @@
 ScriptInterpreterPython::ExecuteOneLineWithReturn (const char *in_string,
                                                    ScriptInterpreter::ScriptReturnType return_type,
                                                    void *ret_value,
-                                                   bool enable_io,
-                                                   bool set_lldb_globals)
+                                                   const ExecuteScriptOptions &options)
 {
 
     Locker locker(this,
-                  ScriptInterpreterPython::Locker::AcquireLock | (set_lldb_globals ? ScriptInterpreterPython::Locker::InitSession : 0),
-                  ScriptInterpreterPython::Locker::FreeAcquiredLock | (set_lldb_globals ? ScriptInterpreterPython::Locker::TearDownSession : 0));
+                  ScriptInterpreterPython::Locker::AcquireLock | (options.GetSetLLDBGlobals() ? ScriptInterpreterPython::Locker::InitSession : 0),
+                  ScriptInterpreterPython::Locker::FreeAcquiredLock | (options.GetSetLLDBGlobals() ? ScriptInterpreterPython::Locker::TearDownSession : 0));
 
     PyObject *py_return = NULL;
     PyObject *mainmod = PyImport_AddModule ("__main__");
@@ -1038,7 +1025,7 @@
     if (in_string != NULL)
     {
         { // scope for PythonInputReaderManager
-            PythonInputReaderManager py_input(enable_io ? this : NULL);
+            PythonInputReaderManager py_input(options.GetEnableIO() ? this : NULL);
             py_return = PyRun_String (in_string, Py_eval_input, globals, locals);
             if (py_return == NULL)
             { 
@@ -1156,23 +1143,26 @@
     py_error = PyErr_Occurred();
     if (py_error != NULL)
     {
-        if (PyErr_GivenExceptionMatches (py_error, PyExc_SyntaxError))
-            PyErr_Print ();
-        PyErr_Clear();
         ret_success = false;
+        if (options.GetMaskoutErrors())
+        {
+            if (PyErr_GivenExceptionMatches (py_error, PyExc_SyntaxError))
+                PyErr_Print ();
+            PyErr_Clear();
+        }
     }
 
     return ret_success;
 }
 
 bool
-ScriptInterpreterPython::ExecuteMultipleLines (const char *in_string, bool enable_io, bool set_lldb_globals)
+ScriptInterpreterPython::ExecuteMultipleLines (const char *in_string, const ExecuteScriptOptions &options)
 {
     
     
     Locker locker(this,
-                  ScriptInterpreterPython::Locker::AcquireLock | (set_lldb_globals ? ScriptInterpreterPython::Locker::InitSession : 0),
-                  ScriptInterpreterPython::Locker::FreeAcquiredLock | (set_lldb_globals ? ScriptInterpreterPython::Locker::TearDownSession : 0));
+                  ScriptInterpreterPython::Locker::AcquireLock | (options.GetSetLLDBGlobals() ? ScriptInterpreterPython::Locker::InitSession : 0),
+                  ScriptInterpreterPython::Locker::FreeAcquiredLock | (options.GetSetLLDBGlobals() ? ScriptInterpreterPython::Locker::TearDownSession : 0));
 
     bool success = false;
     PyObject *py_return = NULL;
@@ -1209,7 +1199,7 @@
             if (compiled_code)
             {
                 { // scope for PythonInputReaderManager
-                    PythonInputReaderManager py_input(enable_io ? this : NULL);
+                    PythonInputReaderManager py_input(options.GetEnableIO() ? this : NULL);
                     py_return = PyEval_EvalCode (compiled_code, globals, locals);
                 }
                 if (py_return != NULL)
@@ -1226,10 +1216,13 @@
     py_error = PyErr_Occurred ();
     if (py_error != NULL)
     {
-        if (PyErr_GivenExceptionMatches (py_error, PyExc_SyntaxError))
-            PyErr_Print ();
-        PyErr_Clear();
         success = false;
+        if (options.GetMaskoutErrors())
+        {
+            if (PyErr_GivenExceptionMatches (py_error, PyExc_SyntaxError))
+                PyErr_Print ();
+            PyErr_Clear();
+        }
     }
 
     return success;
@@ -1567,7 +1560,7 @@
     // Convert StringList to one long, newline delimited, const char *.
     std::string function_def_string(function_def.CopyList());
 
-    return ExecuteMultipleLines (function_def_string.c_str(), false);
+    return ExecuteMultipleLines (function_def_string.c_str(), ScriptInterpreter::ExecuteScriptOptions().SetEnableIO(false));
 }
 
 bool
@@ -1933,10 +1926,9 @@
 
     {
         Locker py_lock(this);
-        ForceDisableSyntheticChildren no_synthetics(target);
-        ret_val = g_swig_synthetic_script    (class_name, 
-                                              python_interpreter->m_dictionary_name.c_str(),
-                                              valobj);
+        ret_val = g_swig_synthetic_script (class_name,
+                                           python_interpreter->m_dictionary_name.c_str(),
+                                           valobj);
     }
     
     return MakeScriptObject(ret_val);
@@ -2275,8 +2267,7 @@
     
     {
         Locker py_lock(this);
-        ForceDisableSyntheticChildren no_synthetics(GetCommandInterpreter().GetDebugger().GetSelectedTarget().get());
-        ret_val = g_swig_calc_children       (implementor);
+        ret_val = g_swig_calc_children (implementor);
     }
     
     return ret_val;
@@ -2302,8 +2293,7 @@
     
     {
         Locker py_lock(this);
-        ForceDisableSyntheticChildren no_synthetics(GetCommandInterpreter().GetDebugger().GetSelectedTarget().get());
-        child_ptr = g_swig_get_child_index       (implementor,idx);
+        child_ptr = g_swig_get_child_index (implementor,idx);
         if (child_ptr != NULL && child_ptr != Py_None)
         {
             value_sb = (lldb::SBValue*)g_swig_cast_to_sbvalue(child_ptr);
@@ -2339,8 +2329,7 @@
     
     {
         Locker py_lock(this);
-        ForceDisableSyntheticChildren no_synthetics(GetCommandInterpreter().GetDebugger().GetSelectedTarget().get());
-        ret_val = g_swig_get_index_child       (implementor, child_name);
+        ret_val = g_swig_get_index_child (implementor, child_name);
     }
     
     return ret_val;
@@ -2364,8 +2353,31 @@
     
     {
         Locker py_lock(this);
-        ForceDisableSyntheticChildren no_synthetics(GetCommandInterpreter().GetDebugger().GetSelectedTarget().get());
-        ret_val = g_swig_update_provider       (implementor);
+        ret_val = g_swig_update_provider (implementor);
+    }
+    
+    return ret_val;
+}
+
+bool
+ScriptInterpreterPython::MightHaveChildrenSynthProviderInstance (const lldb::ScriptInterpreterObjectSP& implementor_sp)
+{
+    bool ret_val = false;
+    
+    if (!implementor_sp)
+        return ret_val;
+    
+    void* implementor = implementor_sp->GetObject();
+    
+    if (!implementor)
+        return ret_val;
+    
+    if (!g_swig_mighthavechildren_provider)
+        return ret_val;
+    
+    {
+        Locker py_lock(this);
+        ret_val = g_swig_mighthavechildren_provider (implementor);
     }
     
     return ret_val;
@@ -2415,7 +2427,7 @@
         command_stream.Printf("if not (sys.path.__contains__('%s')):\n    sys.path.append('%s');\n\n",
                               directory,
                               directory);
-        bool syspath_retval = ExecuteMultipleLines(command_stream.GetData(), false, false);
+        bool syspath_retval = ExecuteMultipleLines(command_stream.GetData(), ScriptInterpreter::ExecuteScriptOptions().SetEnableIO(false).SetSetLLDBGlobals(false));
         if (!syspath_retval)
         {
             error.SetErrorString("Python sys.path handling failed");
@@ -2438,8 +2450,7 @@
         bool was_imported = (ExecuteOneLineWithReturn(command_stream.GetData(),
                                                       ScriptInterpreterPython::eScriptReturnTypeInt,
                                                       &refcount,
-                                                      false,
-                                                      false) && refcount > 0);
+                                                      ScriptInterpreter::ExecuteScriptOptions().SetEnableIO(false).SetSetLLDBGlobals(false)) && refcount > 0);
         if (was_imported == true && can_reload == false)
         {
             error.SetErrorString("module already imported");
@@ -2449,13 +2460,43 @@
         // now actually do the import
         command_stream.Clear();
         command_stream.Printf("import %s",basename.c_str());
-        bool import_retval = ExecuteOneLine(command_stream.GetData(), NULL, false, false);
-        if (!import_retval)
+        bool import_retval = ExecuteMultipleLines(command_stream.GetData(), ScriptInterpreter::ExecuteScriptOptions().SetEnableIO(false).SetSetLLDBGlobals(false).SetMaskoutErrors(false));
+        PyObject* py_error = PyErr_Occurred(); // per Python docs: "you do not need to Py_DECREF()" the return of this function
+        
+        if (py_error || !import_retval) // check for failure of the import
         {
-            error.SetErrorString("Python import statement failed");
+            if (py_error) // if we have a Python error..
+            {
+                if (PyErr_GivenExceptionMatches (py_error, PyExc_ImportError)) // and it is an ImportError
+                {
+                    PyObject *type,*value,*traceback;
+                    PyErr_Fetch (&type,&value,&traceback);
+                    
+                    if (value && value != Py_None)
+                        error.SetErrorString(PyString_AsString(PyObject_Str(value)));
+                    else
+                        error.SetErrorString("ImportError raised by imported module");
+                    
+                    Py_XDECREF(type);
+                    Py_XDECREF(value);
+                    Py_XDECREF(traceback);
+                }
+                else // any other error
+                {
+                    error.SetErrorString("Python raised an error while importing module");
+                }
+            }
+            else // we failed but have no error to explain why
+            {
+                error.SetErrorString("unknown error while importing module");
+            }
+            
+            // anyway, clear the error indicator and return false
+            PyErr_Clear();
             return false;
         }
         
+        // if we are here, everything worked
         // call __lldb_init_module(debugger,dict)
         if (!g_swig_call_module_init (basename,
                                         m_dictionary_name.c_str(),
@@ -2562,7 +2603,7 @@
     
     if (ExecuteOneLineWithReturn (command.c_str(),
                                  ScriptInterpreter::eScriptReturnTypeCharStrOrNone,
-                                 &result_ptr, false))
+                                  &result_ptr, ScriptInterpreter::ExecuteScriptOptions().SetEnableIO(false) /*.SetSetLLDBGlobals(false)*/))
     {
         if (result_ptr)
             dest.assign(result_ptr);
@@ -2590,6 +2631,7 @@
     g_swig_get_index_child = LLDBSwigPython_GetIndexOfChildWithName;
     g_swig_cast_to_sbvalue = LLDBSWIGPython_CastPyObjectToSBValue;
     g_swig_update_provider = LLDBSwigPython_UpdateSynthProviderInstance;
+    g_swig_mighthavechildren_provider = LLDBSwigPython_MightHaveChildrenSynthProviderInstance;
     g_swig_call_command = LLDBSwigPythonCallCommand;
     g_swig_call_module_init = LLDBSwigPythonCallModuleInit;
     g_swig_create_os_plugin = LLDBSWIGPythonCreateOSPlugin;

Modified: lldb/branches/windows/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp (original)
+++ lldb/branches/windows/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp Thu Nov  1 02:04:04 2012
@@ -628,6 +628,8 @@
     // All other registers are the same.
     
     unwind_plan.SetSourceName ("arm at-func-entry default");
+    unwind_plan.SetSourcedFromCompiler (eLazyBoolNo);
+
     return true;
 }
 
@@ -651,9 +653,30 @@
     
     unwind_plan.AppendRow (row);
     unwind_plan.SetSourceName ("arm-apple-ios default unwind plan");
+    unwind_plan.SetSourcedFromCompiler (eLazyBoolNo);
+    unwind_plan.SetUnwindPlanValidAtAllInstructions (eLazyBoolNo);
+
     return true;
 }
 
+// ARMv7 on iOS general purpose reg rules:
+//    r0-r3 not preserved  (used for argument passing)
+//    r4-r6 preserved
+//    r7    preserved (frame pointer)
+//    r8    preserved
+//    r9    not preserved (usable as volatile scratch register with iOS 3.x and later)
+//    r10-r11 preserved
+//    r12   not presrved
+//    r13   preserved (stack pointer)
+//    r14   not preserved (link register)
+//    r15   preserved (pc)
+//    cpsr  not preserved (different rules for different bits)
+
+// ARMv7 on iOS floating point rules:
+//    d0-d7   not preserved   (aka s0-s15, q0-q3)
+//    d8-d15  preserved       (aka s16-s31, q4-q7)
+//    d16-d31 not preserved   (aka q8-q15)
+
 bool
 ABIMacOSX_arm::RegisterIsVolatile (const RegisterInfo *reg_info)
 {
@@ -691,28 +714,28 @@
             switch (name[1])
             {
                 case '0': 
-                    return name[2] == '\0'; // d0
+                    return name[2] == '\0'; // d0 is volatile
 
                 case '1':
                     switch (name[2])
                     {
                     case '\0':
-                        return true; // d1;
+                        return true; // d1 is volatile
                     case '6':
                     case '7':
                     case '8':
                     case '9':
-                        return name[3] == '\0'; // d16 - d19
+                        return name[3] == '\0'; // d16 - d19 are volatile
                     default:
                         break;
                     }
                     break;
-                    
+
                 case '2':
                     switch (name[2])
                     {
                     case '\0':
-                        return true; // d2;
+                        return true; // d2 is volatile
                     case '0':
                     case '1':
                     case '2':
@@ -723,7 +746,7 @@
                     case '7':
                     case '8':
                     case '9':
-                        return name[3] == '\0'; // d20 - d29
+                        return name[3] == '\0'; // d20 - d29 are volatile
                     default:
                         break;
                     }
@@ -733,10 +756,62 @@
                     switch (name[2])
                     {
                     case '\0':
-                        return true; // d3;
+                        return true; // d3 is volatile
+                    case '0':
+                    case '1':
+                        return name[3] == '\0'; // d30 - d31 are volatile
+                    default:
+                        break;
+                    }
+                case '4':
+                case '5':
+                case '6':
+                case '7':
+                    return name[2] == '\0'; // d4 - d7 are volatile
+
+                default:
+                    break;
+            }
+        }
+        else if (name[0] == 's')
+        {
+            switch (name[1])
+            {
+                case '0': 
+                    return name[2] == '\0'; // s0 is volatile
+
+                case '1':
+                    switch (name[2])
+                    {
+                    case '\0':
+                        return true; // s1 is volatile
                     case '0':
                     case '1':
-                        return name[3] == '\0'; // d30 - d31
+                    case '2':
+                    case '3':
+                    case '4':
+                    case '5':
+                        return name[3] == '\0'; // s10 - s15 are volatile
+                    default:
+                        break;
+                    }
+                    break;
+
+                case '2':
+                    switch (name[2])
+                    {
+                    case '\0':
+                        return true; // s2 is volatile
+                    default:
+                        break;
+                    }
+                    break;
+
+                case '3':
+                    switch (name[2])
+                    {
+                    case '\0':
+                        return true; // s3 is volatile
                     default:
                         break;
                     }
@@ -744,7 +819,9 @@
                 case '5':
                 case '6':
                 case '7':
-                    return name[2] == '\0'; // d4 - d7
+                case '8':
+                case '9':
+                    return name[2] == '\0'; // s4 - s9 are volatile
 
                 default:
                     break;

Modified: lldb/branches/windows/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.cpp (original)
+++ lldb/branches/windows/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.cpp Thu Nov  1 02:04:04 2012
@@ -894,6 +894,7 @@
     row->SetRegisterLocationToAtCFAPlusOffset(pc_reg_num, -4, false);
     unwind_plan.AppendRow (row);
     unwind_plan.SetSourceName ("i386 at-func-entry default");
+    unwind_plan.SetSourcedFromCompiler (eLazyBoolNo);
     return true;
 }
 
@@ -919,6 +920,8 @@
 
     unwind_plan.AppendRow (row);
     unwind_plan.SetSourceName ("i386 default unwind plan");
+    unwind_plan.SetSourcedFromCompiler (eLazyBoolNo);
+    unwind_plan.SetUnwindPlanValidAtAllInstructions (eLazyBoolNo);
     return true;
 }
 

Modified: lldb/branches/windows/source/Plugins/ABI/SysV-x86_64/ABISysV_x86_64.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/ABI/SysV-x86_64/ABISysV_x86_64.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/ABI/SysV-x86_64/ABISysV_x86_64.cpp (original)
+++ lldb/branches/windows/source/Plugins/ABI/SysV-x86_64/ABISysV_x86_64.cpp Thu Nov  1 02:04:04 2012
@@ -1088,6 +1088,7 @@
     row->SetRegisterLocationToAtCFAPlusOffset(pc_reg_num, -8, false);
     unwind_plan.AppendRow (row);
     unwind_plan.SetSourceName ("x86_64 at-func-entry default");
+    unwind_plan.SetSourcedFromCompiler (eLazyBoolNo);
     return true;
 }
 
@@ -1139,6 +1140,8 @@
 
     unwind_plan.AppendRow (row);
     unwind_plan.SetSourceName ("x86_64 default unwind plan");
+    unwind_plan.SetSourcedFromCompiler (eLazyBoolNo);
+    unwind_plan.SetUnwindPlanValidAtAllInstructions (eLazyBoolNo);
     return true;
 }
 

Modified: lldb/branches/windows/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp (original)
+++ lldb/branches/windows/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.cpp Thu Nov  1 02:04:04 2012
@@ -39,6 +39,60 @@
 using namespace lldb;
 using namespace lldb_private;
 
+static PropertyDefinition
+g_properties[] =
+{
+    { "load-kexts" , OptionValue::eTypeBoolean, true, true, NULL, NULL, "Automatically loads kext images when attaching to a kernel." },
+    {  NULL        , OptionValue::eTypeInvalid, false, 0  , NULL, NULL, NULL  }
+};
+
+enum {
+    ePropertyLoadKexts
+};
+
+class DynamicLoaderDarwinKernelProperties : public Properties
+{
+public:
+    
+    static ConstString &
+    GetSettingName ()
+    {
+        static ConstString g_setting_name("darwin-kernel");
+        return g_setting_name;
+    }
+
+    DynamicLoaderDarwinKernelProperties() :
+        Properties ()
+    {
+        m_collection_sp.reset (new OptionValueProperties(GetSettingName()));
+        m_collection_sp->Initialize(g_properties);
+    }
+
+    virtual
+    ~DynamicLoaderDarwinKernelProperties()
+    {
+    }
+    
+    bool
+    GetLoadKexts() const
+    {
+        const uint32_t idx = ePropertyLoadKexts;
+        return m_collection_sp->GetPropertyAtIndexAsBoolean (NULL, idx, g_properties[idx].default_uint_value != 0);
+    }
+    
+};
+
+typedef STD_SHARED_PTR(DynamicLoaderDarwinKernelProperties) DynamicLoaderDarwinKernelPropertiesSP;
+
+static const DynamicLoaderDarwinKernelPropertiesSP &
+GetGlobalProperties()
+{
+    static DynamicLoaderDarwinKernelPropertiesSP g_settings_sp;
+    if (!g_settings_sp)
+        g_settings_sp.reset (new DynamicLoaderDarwinKernelProperties ());
+    return g_settings_sp;
+}
+
 //----------------------------------------------------------------------
 // Create an instance of this class. This function is filled into
 // the plugin info class that gets handed out by the plugin factory and
@@ -190,7 +244,7 @@
     ModuleSP memory_module_sp;
 
     // If this is a kext and the user asked us to ignore kexts, don't try to load it.
-    if (kernel_image == false && target.GetDisableKextLoading() == true)
+    if (kernel_image == false && GetGlobalProperties()->GetLoadKexts() == false)
     {
         return false;
     }
@@ -872,7 +926,8 @@
 {
     PluginManager::RegisterPlugin (GetPluginNameStatic(),
                                    GetPluginDescriptionStatic(),
-                                   CreateInstance);
+                                   CreateInstance,
+                                   DebuggerInitialize);
 }
 
 void
@@ -881,11 +936,23 @@
     PluginManager::UnregisterPlugin (CreateInstance);
 }
 
+void
+DynamicLoaderDarwinKernel::DebuggerInitialize (lldb_private::Debugger &debugger)
+{
+    if (!PluginManager::GetSettingForDynamicLoaderPlugin (debugger, DynamicLoaderDarwinKernelProperties::GetSettingName()))
+    {
+        const bool is_global_setting = true;
+        PluginManager::CreateSettingForDynamicLoaderPlugin (debugger,
+                                                            GetGlobalProperties()->GetValueProperties(),
+                                                            ConstString ("Properties for the DynamicLoaderDarwinKernel plug-in."),
+                                                            is_global_setting);
+    }
+}
 
 const char *
 DynamicLoaderDarwinKernel::GetPluginNameStatic()
 {
-    return "dynamic-loader.macosx-kernel";
+    return "dynamic-loader.darwin-kernel";
 }
 
 const char *

Modified: lldb/branches/windows/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.h?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.h (original)
+++ lldb/branches/windows/source/Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.h Thu Nov  1 02:04:04 2012
@@ -47,6 +47,9 @@
     static lldb_private::DynamicLoader *
     CreateInstance (lldb_private::Process *process, bool force);
 
+    static void
+    DebuggerInitialize (lldb_private::Debugger &debugger);
+
     DynamicLoaderDarwinKernel (lldb_private::Process *process);
 
     virtual

Modified: lldb/branches/windows/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp (original)
+++ lldb/branches/windows/source/Plugins/DynamicLoader/MacOSX-DYLD/DynamicLoaderMacOSXDYLD.cpp Thu Nov  1 02:04:04 2012
@@ -1596,6 +1596,8 @@
                 // For now, just turn this off.
                 
                 // bool orig_is_resolver = (current_symbol->GetFlags() & MACH_O_N_SYMBOL_RESOLVER) == MACH_O_N_SYMBOL_RESOLVER;
+                // FIXME: Actually that isn't true, the N_SYMBOL_RESOLVER bit is only valid in .o files.  You can't use
+                // the symbol flags to tell whether something is a symbol resolver in a linked image.
                 bool orig_is_resolver = false;
                 
                 if (num_original_symbols > 0)

Modified: lldb/branches/windows/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp (original)
+++ lldb/branches/windows/source/Plugins/Instruction/ARM/EmulateInstructionARM.cpp Thu Nov  1 02:04:04 2012
@@ -12781,7 +12781,7 @@
         { 0xfea00f00, 0xec000a00, ARMvAll,       eEncodingT2, VFPv2v3,      eSize32, &EmulateInstructionARM::EmulateVSTM, "vstm{mode}<c> <Rn>{!}, <list>"},
         { 0xff300f00, 0xed000b00, ARMvAll,       eEncodingT1, VFPv2_ABOVE,  eSize32, &EmulateInstructionARM::EmulateVSTR, "vstr<c> <Dd>, [<Rn>{,#+/-<imm>}]"},
         { 0xff300f00, 0xed000a00, ARMvAll,       eEncodingT2, VFPv2v3,      eSize32, &EmulateInstructionARM::EmulateVSTR, "vstr<c> <Sd>, [<Rn>{,#+/-<imm>}]"},
-        { 0xffb00000, 0xfa000000, ARMvAll,       eEncodingT1, AdvancedSIMD, eSize32, &EmulateInstructionARM::EmulateVST1Multiple, "vst1<c>.<size> <list>, [<Rn>{@<align>}], <Rm>"},
+        { 0xffb00000, 0xf9000000, ARMvAll,       eEncodingT1, AdvancedSIMD, eSize32, &EmulateInstructionARM::EmulateVST1Multiple, "vst1<c>.<size> <list>, [<Rn>{@<align>}], <Rm>"},
         { 0xffb00300, 0xf9800000, ARMvAll,       eEncodingT1, AdvancedSIMD, eSize32, &EmulateInstructionARM::EmulateVST1Single, "vst1<c>.<size> <list>, [<Rn>{@<align>}], <Rm>"}, 
                   
         //----------------------------------------------------------------------
@@ -13613,9 +13613,7 @@
     // All other registers are the same.
     
     unwind_plan.SetSourceName ("EmulateInstructionARM");
+    unwind_plan.SetSourcedFromCompiler (eLazyBoolNo);
+    unwind_plan.SetUnwindPlanValidAtAllInstructions (eLazyBoolYes);
     return true;
 }
-
-
-
-                                           

Modified: lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.cpp (original)
+++ lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.cpp Thu Nov  1 02:04:04 2012
@@ -40,8 +40,16 @@
 static const char *pluginDesc = "Apple Objective C Language Runtime - Version 1";
 static const char *pluginShort = "language.apple.objc.v1";
 
+
+AppleObjCRuntimeV1::AppleObjCRuntimeV1(Process *process) :
+    AppleObjCRuntime (process),
+    m_hash_signature (),
+    m_isa_hash_table_ptr (LLDB_INVALID_ADDRESS)
+{
+}
+
 bool
-AppleObjCRuntimeV1::GetDynamicTypeAndAddress (ValueObject &in_value, 
+AppleObjCRuntimeV1::GetDynamicTypeAndAddress (ValueObject &in_value,
                                              lldb::DynamicValueType use_dynamic, 
                                              TypeAndOrName &class_type_or_name, 
                                              Address &address)
@@ -70,6 +78,7 @@
         return NULL;
 }
 
+
 void
 AppleObjCRuntimeV1::Initialize()
 {
@@ -188,11 +197,8 @@
 
 AppleObjCRuntimeV1::ClassDescriptorV1::ClassDescriptorV1 (ValueObject &isa_pointer)
 {
-    ObjCISA ptr_value = isa_pointer.GetValueAsUnsigned(0);
-
-    lldb::ProcessSP process_sp = isa_pointer.GetProcessSP();
-
-    Initialize (ptr_value,process_sp);
+    Initialize (isa_pointer.GetValueAsUnsigned(0),
+                isa_pointer.GetProcessSP());
 }
 
 AppleObjCRuntimeV1::ClassDescriptorV1::ClassDescriptorV1 (ObjCISA isa, lldb::ProcessSP process_sp)
@@ -288,62 +294,99 @@
     return ObjCLanguageRuntime::ClassDescriptorSP(new AppleObjCRuntimeV1::ClassDescriptorV1(m_parent_isa,process_sp));
 }
 
-bool
-AppleObjCRuntimeV1::UpdateISAToDescriptorMap_Impl()
+lldb::addr_t
+AppleObjCRuntimeV1::GetISAHashTablePointer ()
 {
-    lldb::LogSP log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS));
-    
-    Process *process_ptr = GetProcess();
-    
-    if (!process_ptr)
-        return false;
-    
-    ProcessSP process_sp = process_ptr->shared_from_this();
-    
-    ModuleSP objc_module_sp(GetObjCModule());
-    
-    if (!objc_module_sp)
-        return false;
-    
-    uint32_t isa_count = 0;
-    
-    static ConstString g_objc_debug_class_hash("_objc_debug_class_hash");
+    if (m_isa_hash_table_ptr == LLDB_INVALID_ADDRESS)
+    {
+        ModuleSP objc_module_sp(GetObjCModule());
+        
+        if (!objc_module_sp)
+            return LLDB_INVALID_ADDRESS;
+        
+        static ConstString g_objc_debug_class_hash("_objc_debug_class_hash");
+        
+        const Symbol *symbol = objc_module_sp->FindFirstSymbolWithNameAndType(g_objc_debug_class_hash, lldb::eSymbolTypeData);
+        if (symbol)
+        {
+            Process *process = GetProcess();
+            if (process)
+            {
+
+                lldb::addr_t objc_debug_class_hash_addr = symbol->GetAddress().GetLoadAddress(&process->GetTarget());
+            
+                if (objc_debug_class_hash_addr != LLDB_INVALID_ADDRESS)
+                {
+                    Error error;
+                    lldb::addr_t objc_debug_class_hash_ptr = process->ReadPointerFromMemory(objc_debug_class_hash_addr, error);
+                    if (objc_debug_class_hash_ptr != 0 &&
+                        objc_debug_class_hash_ptr != LLDB_INVALID_ADDRESS)
+                    {
+                        m_isa_hash_table_ptr = objc_debug_class_hash_ptr;
+                    }
+                }
+            }
+        }
+    }
+    return m_isa_hash_table_ptr;
+}
+
+void
+AppleObjCRuntimeV1::UpdateISAToDescriptorMapIfNeeded()
+{
+    // TODO: implement HashTableSignature...
+    Process *process = GetProcess();
     
-    const Symbol *symbol = objc_module_sp->FindFirstSymbolWithNameAndType(g_objc_debug_class_hash, lldb::eSymbolTypeData);
-    if (symbol)
+    if (process)
     {
-        lldb::addr_t objc_debug_class_hash_addr = symbol->GetAddress().GetLoadAddress(&process_sp->GetTarget());
+        // Update the process stop ID that indicates the last time we updated the
+        // map, wether it was successful or not.
+        m_isa_to_descriptor_cache_stop_id = process->GetStopID();
+        
+
+        lldb::LogSP log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS));
+        
+        ProcessSP process_sp = process->shared_from_this();
         
-        if (objc_debug_class_hash_addr != LLDB_INVALID_ADDRESS)
+        ModuleSP objc_module_sp(GetObjCModule());
+        
+        if (!objc_module_sp)
+            return;
+        
+        uint32_t isa_count = 0;
+        
+        lldb::addr_t hash_table_ptr = GetISAHashTablePointer ();
+        if (hash_table_ptr != LLDB_INVALID_ADDRESS)
         {
+            // Read the NXHashTable struct:
+            //
+            // typedef struct {
+            //     const NXHashTablePrototype *prototype;
+            //     unsigned   count;
+            //     unsigned   nbBuckets;
+            //     void       *buckets;
+            //     const void *info;
+            // } NXHashTable;
+
             Error error;
-            lldb::addr_t objc_debug_class_hash_ptr = process_sp->ReadPointerFromMemory(objc_debug_class_hash_addr, error);
-            if (error.Success() && objc_debug_class_hash_ptr != 0 && objc_debug_class_hash_ptr != LLDB_INVALID_ADDRESS)
+            DataBufferHeap buffer(1024, 0);
+            if (process->ReadMemory(hash_table_ptr, buffer.GetBytes(), 20, error) == 20)
             {
-                // Read the NXHashTable struct:
-                //
-                // typedef struct {
-                //     const NXHashTablePrototype *prototype;
-                //     unsigned   count;
-                //     unsigned   nbBuckets;
-                //     void       *buckets;
-                //     const void *info;
-                // } NXHashTable;
-
-                DataBufferHeap buffer(1024, 0);
-                if (process_sp->ReadMemory(objc_debug_class_hash_ptr, buffer.GetBytes(), 20, error) == 20)
+                const uint32_t addr_size = m_process->GetAddressByteSize();
+                const ByteOrder byte_order = m_process->GetByteOrder();
+                DataExtractor data (buffer.GetBytes(), buffer.GetByteSize(), byte_order, addr_size);
+                uint32_t offset = addr_size; // Skip prototype
+                const uint32_t count = data.GetU32(&offset);
+                const uint32_t num_buckets = data.GetU32(&offset);
+                const addr_t buckets_ptr = data.GetPointer(&offset);
+                if (m_hash_signature.NeedsUpdate (count, num_buckets, buckets_ptr))
                 {
-                    const uint32_t addr_size = m_process->GetAddressByteSize();
-                    const ByteOrder byte_order = m_process->GetByteOrder();
-                    DataExtractor data (buffer.GetBytes(), buffer.GetByteSize(), byte_order, addr_size);
-                    uint32_t offset = addr_size + 4; // Skip prototype
-                    const uint32_t num_buckets = data.GetU32(&offset);
-                    const addr_t buckets_ptr = data.GetPointer(&offset);
-                
+                    m_hash_signature.UpdateSignature (count, num_buckets, buckets_ptr);
+
                     const uint32_t data_size = num_buckets * 2 * sizeof(uint32_t);
                     buffer.SetByteSize(data_size);
                     
-                    if (process_sp->ReadMemory(buckets_ptr, buffer.GetBytes(), data_size, error) == data_size)
+                    if (process->ReadMemory(buckets_ptr, buffer.GetBytes(), data_size, error) == data_size)
                     {
                         data.SetData(buffer.GetBytes(), buffer.GetByteSize(), byte_order);
                         offset = 0;
@@ -403,9 +446,11 @@
                     }
                 }
             }
-        }
+        }        
+    }
+    else
+    {
+        m_isa_to_descriptor_cache_stop_id = UINT32_MAX;
     }
-
-    return isa_count > 0;
 }
 

Modified: lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h (original)
+++ lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h Thu Nov  1 02:04:04 2012
@@ -123,17 +123,58 @@
         return eAppleObjC_V1;
     }
     
-    virtual bool
-    UpdateISAToDescriptorMap_Impl();
+    virtual void
+    UpdateISAToDescriptorMapIfNeeded();
 
 protected:
     virtual lldb::BreakpointResolverSP
     CreateExceptionResolver (Breakpoint *bkpt, bool catch_bp, bool throw_bp);
-            
+    
+    
+    class HashTableSignature
+    {
+    public:
+        HashTableSignature () :
+            m_count (0),
+            m_num_buckets (0),
+            m_buckets_ptr (LLDB_INVALID_ADDRESS)
+        {
+        }
+        
+        bool
+        NeedsUpdate (uint32_t count,
+                     uint32_t num_buckets,
+                     lldb::addr_t buckets_ptr)
+        {
+            return m_count       != count       ||
+                   m_num_buckets != num_buckets ||
+                   m_buckets_ptr != buckets_ptr ;
+        }
+        
+        void
+        UpdateSignature (uint32_t count,
+                         uint32_t num_buckets,
+                         lldb::addr_t buckets_ptr)
+        {
+            m_count = count;
+            m_num_buckets = num_buckets;
+            m_buckets_ptr = buckets_ptr;
+        }
+
+    protected:
+        uint32_t m_count;
+        uint32_t m_num_buckets;
+        lldb::addr_t m_buckets_ptr;
+    };
+    
+
+    lldb::addr_t
+    GetISAHashTablePointer ();
+    
+    HashTableSignature m_hash_signature;
+    lldb::addr_t m_isa_hash_table_ptr;
 private:
-    AppleObjCRuntimeV1(Process *process) : 
-        lldb_private::AppleObjCRuntime (process)
-     { } // Call CreateInstance instead.
+    AppleObjCRuntimeV1(Process *process);
 };
     
 } // namespace lldb_private

Modified: lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp (original)
+++ lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp Thu Nov  1 02:04:04 2012
@@ -106,9 +106,15 @@
 AppleObjCRuntimeV2::AppleObjCRuntimeV2 (Process *process, 
                                         const ModuleSP &objc_module_sp) : 
     AppleObjCRuntime (process),
-    m_get_class_name_args(LLDB_INVALID_ADDRESS),
-    m_get_class_name_args_mutex(Mutex::eMutexTypeNormal),
-    m_process_wp (process->shared_from_this())
+    m_get_class_name_function (),
+    m_get_class_name_code (),
+    m_get_class_name_args (LLDB_INVALID_ADDRESS),
+    m_get_class_name_args_mutex (Mutex::eMutexTypeNormal),
+    m_type_vendor_ap (),
+    m_isa_hash_table_ptr (LLDB_INVALID_ADDRESS),
+    m_hash_signature (),
+    m_has_object_getClass (false),
+    m_loaded_objc_opt (false)
 {
     static const ConstString g_gdb_object_getClass("gdb_object_getClass");
     m_has_object_getClass = (objc_module_sp->FindFirstSymbolWithNameAndType(g_gdb_object_getClass, eSymbolTypeCode) != NULL);
@@ -259,152 +265,31 @@
     if (CouldHaveDynamicValue (in_value))
     {
         // First job, pull out the address at 0 offset from the object  That will be the ISA pointer.
-        Error error;
-        const addr_t object_ptr = in_value.GetPointerValue();
-        const addr_t isa_addr = m_process->ReadPointerFromMemory (object_ptr, error);
-
-        if (error.Fail())
-            return false;
-
-        address.SetRawAddress(object_ptr);
-
-        // First check the cache...
-        SymbolContext sc;
-        class_type_or_name = LookupInClassNameCache (isa_addr);
-        
-        if (!class_type_or_name.IsEmpty())
+        ClassDescriptorSP objc_class_sp (GetNonKVOClassDescriptor (in_value));
+        if (objc_class_sp)
         {
-            if (class_type_or_name.GetTypeSP())
-                return true;
-            else
-                return false;
-        }
+            const addr_t object_ptr = in_value.GetPointerValue();
+            address.SetRawAddress(object_ptr);
 
-        // We don't have the object cached, so make sure the class
-        // address is readable, otherwise this is not a good object:
-        m_process->ReadPointerFromMemory (isa_addr, error);
-        
-        if (error.Fail())
-            return false;
-
-        const char *class_name = NULL;
-        Address isa_address;
-        Target &target = m_process->GetTarget();
-        target.GetSectionLoadList().ResolveLoadAddress (isa_addr, isa_address);
-        
-        if (isa_address.IsValid())
-        {
-            // If the ISA pointer points to one of the sections in the binary, then see if we can
-            // get the class name from the symbols.
-        
-            SectionSP section_sp (isa_address.GetSection());
-
-            if (section_sp)
-            {
-                // If this points to a section that we know about, then this is
-                // some static class or nothing.  See if it is in the right section 
-                // and if its name is the right form.
-                ConstString section_name = section_sp->GetName();
-                static ConstString g_objc_class_section_name ("__objc_data");
-                if (section_name == g_objc_class_section_name)
-                {
-                    isa_address.CalculateSymbolContext(&sc, eSymbolContextModule | eSymbolContextSymbol);
-                    if (sc.symbol)
-                    {
-                        if (sc.symbol->GetType() == eSymbolTypeObjCClass)
-                            class_name = sc.symbol->GetName().GetCString();
-                        else if (sc.symbol->GetType() == eSymbolTypeObjCMetaClass)
-                        {
-                            // FIXME: Meta-classes can't have dynamic types...
-                            return false;
-                        }
-                    }
-                }
-            }
-        }
-        
-        char class_buffer[1024];
-        if (class_name == NULL && use_dynamic == eDynamicCanRunTarget)
-        {
-            // If the class address didn't point into the binary, or
-            // it points into the right section but there wasn't a symbol
-            // there, try to look it up by calling the class method in the target.
-            
-            ExecutionContext exe_ctx (in_value.GetExecutionContextRef());
-            
-            Thread *thread_to_use = exe_ctx.GetThreadPtr();
-            
-            if (thread_to_use == NULL)
-                thread_to_use = m_process->GetThreadList().GetSelectedThread().get();
-                
-            if (thread_to_use == NULL)
-                return false;
-                
-            if (!RunFunctionToFindClassName (object_ptr, thread_to_use, class_buffer, 1024))
-                return false;
-                
-             class_name = class_buffer;   
-            
-        }
-        
-        if (class_name && class_name[0])
-        {
-            class_type_or_name.SetName (class_name);
-            
-            TypeList class_types;
-            const bool exact_match = true;
-            uint32_t num_matches = target.GetImages().FindTypes (sc,
-                                                                 class_type_or_name.GetName(),
-                                                                 exact_match,
-                                                                 UINT32_MAX,
-                                                                 class_types);
-            if (num_matches == 1)
-            {
-                class_type_or_name.SetTypeSP (class_types.GetTypeAtIndex(0));
-                return true;
-            }
+            ConstString class_name (objc_class_sp->GetClassName());
+            class_type_or_name.SetName(class_name);
+            TypeSP type_sp (objc_class_sp->GetType());
+            if (type_sp)
+                class_type_or_name.SetTypeSP (type_sp);
             else
             {
-                for (size_t i  = 0; i < num_matches; i++)
+                type_sp = LookupInCompleteClassCache (class_name);
+                if (type_sp)
                 {
-                    TypeSP this_type(class_types.GetTypeAtIndex(i));
-                    if (this_type)
-                    {
-                        // Only consider "real" ObjC classes.  For now this means avoiding
-                        // the Type objects that are made up from the OBJC_CLASS_$_<NAME> symbols.
-                        // we don't want to use them since they are empty and useless.
-                        if (this_type->IsRealObjCClass())
-                        {
-                            // There can only be one type with a given name,
-                            // so we've just found duplicate definitions, and this
-                            // one will do as well as any other.
-                            // We don't consider something to have a dynamic type if
-                            // it is the same as the static type.  So compare against
-                            // the value we were handed:
-                            
-                            clang::ASTContext *in_ast_ctx = in_value.GetClangAST ();
-                            clang::ASTContext *this_ast_ctx = this_type->GetClangAST ();
-                            if (in_ast_ctx != this_ast_ctx
-                                || !ClangASTContext::AreTypesSame (in_ast_ctx, 
-                                                                   in_value.GetClangType(),
-                                                                   this_type->GetClangFullType()))
-                            {
-                                class_type_or_name.SetTypeSP (this_type);
-                            }
-                            break;
-                        }
-                    }
+                    objc_class_sp->SetType (type_sp);
+                    class_type_or_name.SetTypeSP (type_sp);
                 }
             }
             
-            AddToClassNameCache (isa_addr, class_type_or_name);
-            if (class_type_or_name.GetTypeSP())
+            if (type_sp)
                 return true;
-            else
-                return false;
         }
-    }
-    
+    }    
     return false;
 }
 
@@ -591,32 +476,65 @@
 class RemoteNXMapTable
 {
 public:
-    RemoteNXMapTable (lldb::ProcessSP process_sp,
-                      lldb::addr_t load_addr) :
-        m_process_sp(process_sp),
-        m_end_iterator(*this, -1),
-        m_load_addr(load_addr),
-        m_map_pair_size(m_process_sp->GetAddressByteSize() * 2),
-        m_NXMAPNOTAKEY(m_process_sp->GetAddressByteSize() == 8 ? UINT64_MAX : UINT32_MAX)
+    
+    RemoteNXMapTable () :
+        m_count (0),
+        m_num_buckets_minus_one (0),
+        m_buckets_ptr (LLDB_INVALID_ADDRESS),
+        m_process (NULL),
+        m_end_iterator (*this, -1),
+        m_load_addr (LLDB_INVALID_ADDRESS),
+        m_map_pair_size (0),
+        m_invalid_key (0)
     {
-        lldb::addr_t cursor = load_addr;
-     
+    }
+    
+    bool
+    ParseHeader (Process* process, lldb::addr_t load_addr)
+    {
+        m_process = process;
+        m_load_addr = load_addr;
+        m_map_pair_size = m_process->GetAddressByteSize() * 2;
+        m_invalid_key = m_process->GetAddressByteSize() == 8 ? UINT64_MAX : UINT32_MAX;
         Error err;
         
-        // const struct +NXMapTablePrototype *prototype;
-        m_prototype_ptr = m_process_sp->ReadPointerFromMemory(cursor, err);
-        cursor += m_process_sp->GetAddressByteSize();
+        // This currently holds true for all platforms we support, but we might
+        // need to change this to use get the actualy byte size of "unsigned"
+        // from the target AST...
+        const uint32_t unsigned_byte_size = sizeof(uint32_t);
+        // Skip the prototype as we don't need it (const struct +NXMapTablePrototype *prototype)
+        
+        bool success = true;
+        if (load_addr == LLDB_INVALID_ADDRESS)
+            success = false;
+        else
+        {
+            lldb::addr_t cursor = load_addr + m_process->GetAddressByteSize();
+                    
+            // unsigned count;
+            m_count = m_process->ReadUnsignedIntegerFromMemory(cursor, unsigned_byte_size, 0, err);
+            if (m_count)
+            {
+                cursor += unsigned_byte_size;
+            
+                // unsigned nbBucketsMinusOne;
+                m_num_buckets_minus_one = m_process->ReadUnsignedIntegerFromMemory(cursor, unsigned_byte_size, 0, err);
+                cursor += unsigned_byte_size;
+            
+                // void *buckets;
+                m_buckets_ptr = m_process->ReadPointerFromMemory(cursor, err);
                 
-        // unsigned count;
-        m_count = m_process_sp->ReadUnsignedIntegerFromMemory(cursor, sizeof(unsigned), 0, err);
-        cursor += sizeof(unsigned);
-        
-        // unsigned nbBucketsMinusOne;
-        m_nbBucketsMinusOne = m_process_sp->ReadUnsignedIntegerFromMemory(cursor, sizeof(unsigned), 0, err);
-        cursor += sizeof(unsigned);
+                success = m_count > 0 && m_buckets_ptr != LLDB_INVALID_ADDRESS;
+            }
+        }
         
-        // void *buckets;
-        m_buckets_ptr = m_process_sp->ReadPointerFromMemory(cursor, err);
+        if (!success)
+        {
+            m_count = 0;
+            m_num_buckets_minus_one = 0;
+            m_buckets_ptr = LLDB_INVALID_ADDRESS;
+        }
+        return success;
     }
     
     // const_iterator mimics NXMapState and its code comes from NXInitMapState and NXNextMapState.
@@ -673,22 +591,22 @@
                 return element();
             }
          
-            lldb::addr_t    pairs_ptr        = m_parent.m_buckets_ptr;
-            size_t          map_pair_size   = m_parent.m_map_pair_size;
-            lldb::addr_t    pair_ptr         = pairs_ptr + (m_index * map_pair_size);
+            lldb::addr_t pairs_ptr = m_parent.m_buckets_ptr;
+            size_t map_pair_size = m_parent.m_map_pair_size;
+            lldb::addr_t pair_ptr = pairs_ptr + (m_index * map_pair_size);
             
-            Error           err;
+            Error err;
             
-            lldb::addr_t    key     = m_parent.m_process_sp->ReadPointerFromMemory(pair_ptr, err);
+            lldb::addr_t key = m_parent.m_process->ReadPointerFromMemory(pair_ptr, err);
             if (!err.Success())
                 return element();
-            lldb::addr_t    value   = m_parent.m_process_sp->ReadPointerFromMemory(pair_ptr + m_parent.m_process_sp->GetAddressByteSize(), err);
+            lldb::addr_t value = m_parent.m_process->ReadPointerFromMemory(pair_ptr + m_parent.m_process->GetAddressByteSize(), err);
             if (!err.Success())
                 return element();
             
             std::string key_string;
             
-            m_parent.m_process_sp->ReadCStringFromMemory(key, key_string, err);
+            m_parent.m_process->ReadCStringFromMemory(key, key_string, err);
             if (!err.Success())
                 return element();
             
@@ -700,15 +618,15 @@
             if (m_index == -1)
                 return;
             
-            lldb::addr_t    pairs_ptr        = m_parent.m_buckets_ptr;
-            size_t          map_pair_size   = m_parent.m_map_pair_size;
-            lldb::addr_t    NXMAPNOTAKEY    = m_parent.m_NXMAPNOTAKEY;
-            Error           err;
+            const lldb::addr_t pairs_ptr = m_parent.m_buckets_ptr;
+            const size_t map_pair_size = m_parent.m_map_pair_size;
+            const lldb::addr_t invalid_key = m_parent.m_invalid_key;
+            Error err;
 
             while (m_index--)
             {
                 lldb::addr_t pair_ptr = pairs_ptr + (m_index * map_pair_size);
-                lldb::addr_t key = m_parent.m_process_sp->ReadPointerFromMemory(pair_ptr, err);
+                lldb::addr_t key = m_parent.m_process->ReadPointerFromMemory(pair_ptr, err);
                 
                 if (!err.Success())
                 {
@@ -716,7 +634,7 @@
                     return;
                 }
                 
-                if (key != NXMAPNOTAKEY)
+                if (key != invalid_key)
                     return;
             }
         }
@@ -726,7 +644,7 @@
     
     const_iterator begin ()
     {
-        return const_iterator(*this, m_nbBucketsMinusOne + 1);
+        return const_iterator(*this, m_num_buckets_minus_one + 1);
     }
     
     const_iterator end ()
@@ -734,26 +652,80 @@
         return m_end_iterator;
     }
     
+    uint32_t
+    GetCount () const
+    {
+        return m_count;
+    }
+    
+    uint32_t
+    GetBucketCount () const
+    {
+        return m_num_buckets_minus_one;
+    }
+    
+    lldb::addr_t
+    GetBucketDataPointer () const
+    {
+        return m_buckets_ptr;
+    }
+
 private:
     // contents of _NXMapTable struct
-    lldb::addr_t                        m_prototype_ptr;
-    uint32_t                            m_count;
-    uint32_t                            m_nbBucketsMinusOne;
-    lldb::addr_t                        m_buckets_ptr;
-    
-    lldb::ProcessSP                     m_process_sp;
-    const_iterator                      m_end_iterator;
-    lldb::addr_t                        m_load_addr;
-    size_t                              m_map_pair_size;
-    lldb::addr_t                        m_NXMAPNOTAKEY;
+    uint32_t m_count;
+    uint32_t m_num_buckets_minus_one;
+    lldb::addr_t m_buckets_ptr;
+    lldb_private::Process *m_process;
+    const_iterator m_end_iterator;
+    lldb::addr_t m_load_addr;
+    size_t m_map_pair_size;
+    lldb::addr_t m_invalid_key;
 };
 
+
+
+AppleObjCRuntimeV2::HashTableSignature::HashTableSignature() :
+    m_count (0),
+    m_num_buckets (0),
+    m_buckets_ptr (0)
+{
+}
+
+void
+AppleObjCRuntimeV2::HashTableSignature::UpdateSignature (const RemoteNXMapTable &hash_table)
+{
+    m_count = hash_table.GetCount();
+    m_num_buckets = hash_table.GetBucketCount();
+    m_buckets_ptr = hash_table.GetBucketDataPointer();
+}
+
+bool
+AppleObjCRuntimeV2::HashTableSignature::NeedsUpdate (Process *process, AppleObjCRuntimeV2 *runtime, RemoteNXMapTable &hash_table)
+{
+    if (!hash_table.ParseHeader(process, runtime->GetISAHashTablePointer ()))
+    {
+        return false; // Failed to parse the header, no need to update anything
+    }
+
+    // Check with out current signature and return true if the count,
+    // number of buckets or the hash table address changes.
+    if (m_count == hash_table.GetCount() &&
+        m_num_buckets == hash_table.GetBucketCount() &&
+        m_buckets_ptr == hash_table.GetBucketDataPointer())
+    {
+        // Hash table hasn't changed
+        return false;
+    }
+    // Hash table data has changed, we need to update
+    return true;
+}
+
 class RemoteObjCOpt
 {
 public:
-    RemoteObjCOpt (lldb::ProcessSP process_sp,
+    RemoteObjCOpt (Process* process,
                    lldb::addr_t load_addr) :
-        m_process_sp(process_sp),
+        m_process(process),
         m_end_iterator(*this, -1ll),
         m_load_addr(load_addr),
         m_classheader_size((sizeof(int32_t) * 2))
@@ -763,9 +735,12 @@
         Error err;
         
         // uint32_t version;
-        m_version = m_process_sp->ReadUnsignedIntegerFromMemory(cursor, sizeof(uint32_t), 0, err);
+        m_version = m_process->ReadUnsignedIntegerFromMemory(cursor, sizeof(uint32_t), 0, err);
         cursor += sizeof(uint32_t);
         
+        if (!IsValid())
+            return;
+        
         // int32_t selopt_offset;
         cursor += sizeof(int32_t);
         
@@ -775,20 +750,17 @@
         // int32_t clsopt_offset;
         {
             Scalar clsopt_offset;
-            m_process_sp->ReadScalarIntegerFromMemory(cursor, sizeof(int32_t), /*is_signed*/ true, clsopt_offset, err);
+            m_process->ReadScalarIntegerFromMemory(cursor, sizeof(int32_t), /*is_signed*/ true, clsopt_offset, err);
             m_clsopt_offset = clsopt_offset.SInt();
             cursor += sizeof(int32_t);
         }
         
-        if (m_version != 12)
-            return;
-        
         m_clsopt_ptr = load_addr + m_clsopt_offset;
         
         cursor = m_clsopt_ptr;
         
         // uint32_t capacity;
-        m_capacity = m_process_sp->ReadUnsignedIntegerFromMemory(cursor, sizeof(uint32_t), 0, err);
+        m_capacity = m_process->ReadUnsignedIntegerFromMemory(cursor, sizeof(uint32_t), 0, err);
         cursor += sizeof(uint32_t);
         
         // uint32_t occupied;
@@ -798,7 +770,7 @@
         cursor += sizeof(uint32_t);
         
         // uint32_t mask;
-        m_mask = m_process_sp->ReadUnsignedIntegerFromMemory(cursor, sizeof(uint32_t), 0, err);
+        m_mask = m_process->ReadUnsignedIntegerFromMemory(cursor, sizeof(uint32_t), 0, err);
         cursor += sizeof(uint32_t);
 
         // uint32_t zero;
@@ -828,7 +800,7 @@
         cursor += (m_classheader_size * m_capacity);
         
         // uint32_t duplicateCount;
-        m_duplicateCount = m_process_sp->ReadUnsignedIntegerFromMemory(cursor, sizeof(uint32_t), 0, err);
+        m_duplicateCount = m_process->ReadUnsignedIntegerFromMemory(cursor, sizeof(uint32_t), 0, err);
         cursor += sizeof(uint32_t);
         
         // objc_classheader_t duplicateOffsets[duplicateCount];
@@ -906,7 +878,7 @@
             }
             
             Scalar clsOffset;
-            m_parent.m_process_sp->ReadScalarIntegerFromMemory(classheader_ptr, sizeof(int32_t), /*is_signed*/ true, clsOffset, err);
+            m_parent.m_process->ReadScalarIntegerFromMemory(classheader_ptr, sizeof(int32_t), /*is_signed*/ true, clsOffset, err);
             if (!err.Success())
                 return 0;
             
@@ -943,7 +915,10 @@
     
     const_iterator begin ()
     {
-        return const_iterator(*this, (int64_t)m_capacity + (int64_t)m_duplicateCount);
+        if (!IsValid())
+            return m_end_iterator;
+        else
+            return const_iterator(*this, (int64_t)m_capacity + (int64_t)m_duplicateCount);
     }
     
     const_iterator end ()
@@ -952,24 +927,27 @@
     }
     
 private:
-    // contents of objc_opt struct
-    uint32_t                            m_version;
-    int32_t                             m_clsopt_offset;
+    bool IsValid()
+    {
+        return (m_version == 12);
+    }
     
-    lldb::addr_t                        m_clsopt_ptr;
+    // contents of objc_opt struct
+    uint32_t m_version;
+    int32_t m_clsopt_offset;
+    lldb::addr_t m_clsopt_ptr;
     
     // contents of objc_clsopt struct
-    uint32_t                            m_capacity;
-    uint32_t                            m_mask;
-    uint32_t                            m_duplicateCount;
-    lldb::addr_t                        m_clsOffsets_ptr;
-    lldb::addr_t                        m_duplicateOffsets_ptr;
-    int32_t                             m_zero_offset;
-    
-    lldb::ProcessSP                     m_process_sp;
-    const_iterator                      m_end_iterator;
-    lldb::addr_t                        m_load_addr;
-    const size_t                        m_classheader_size;
+    uint32_t m_capacity;
+    uint32_t m_mask;
+    uint32_t m_duplicateCount;
+    lldb::addr_t m_clsOffsets_ptr;
+    lldb::addr_t m_duplicateOffsets_ptr;
+    int32_t m_zero_offset;    
+    lldb_private::Process *m_process;
+    const_iterator m_end_iterator;
+    lldb::addr_t m_load_addr;
+    const size_t m_classheader_size;
 };
 
 class ClassDescriptorV2 : public ObjCLanguageRuntime::ClassDescriptor
@@ -993,17 +971,17 @@
     {
         if (!m_name)
         {
-            lldb::ProcessSP process_sp = m_runtime.GetProcessSP();
+            lldb_private::Process *process = m_runtime.GetProcess();
 
-            if (process_sp)
+            if (process)
             {
                 std::auto_ptr<objc_class_t> objc_class;
                 std::auto_ptr<class_ro_t> class_ro;
                 std::auto_ptr<class_rw_t> class_rw;
                 
-                if (!Read_objc_class(process_sp, objc_class))
+                if (!Read_objc_class(process, objc_class))
                     return m_name;
-                if (!Read_class_row(process_sp, *objc_class, class_ro, class_rw))
+                if (!Read_class_row(process, *objc_class, class_ro, class_rw))
                     return m_name;
                 
                 m_name = ConstString(class_ro->m_name.c_str());
@@ -1015,14 +993,14 @@
     virtual ObjCLanguageRuntime::ClassDescriptorSP
     GetSuperclass ()
     {
-        lldb::ProcessSP process_sp = m_runtime.GetProcessSP();
+        lldb_private::Process *process = m_runtime.GetProcess();
 
-        if (!process_sp)
+        if (!process)
             return ObjCLanguageRuntime::ClassDescriptorSP();
         
         std::auto_ptr<objc_class_t> objc_class;
 
-        if (!Read_objc_class(process_sp, objc_class))
+        if (!Read_objc_class(process, objc_class))
             return ObjCLanguageRuntime::ClassDescriptorSP();
 
         return m_runtime.ObjCLanguageRuntime::GetClassDescriptor(objc_class->m_superclass);
@@ -1043,17 +1021,17 @@
     virtual uint64_t
     GetInstanceSize ()
     {
-        lldb::ProcessSP process_sp = m_runtime.GetProcessSP();
+        lldb_private::Process *process = m_runtime.GetProcess();
         
-        if (process_sp)
+        if (process)
         {
             std::auto_ptr<objc_class_t> objc_class;
             std::auto_ptr<class_ro_t> class_ro;
             std::auto_ptr<class_rw_t> class_rw;
             
-            if (!Read_objc_class(process_sp, objc_class))
+            if (!Read_objc_class(process, objc_class))
                 return 0;
-            if (!Read_class_row(process_sp, *objc_class, class_ro, class_rw))
+            if (!Read_class_row(process, *objc_class, class_ro, class_rw))
                 return 0;
             
             return class_ro->m_instanceSize;
@@ -1073,15 +1051,15 @@
               std::function <void (const char *, const char *)> const &instance_method_func,
               std::function <void (const char *, const char *)> const &class_method_func)
     {
-        lldb::ProcessSP process_sp = m_runtime.GetProcessSP();
+        lldb_private::Process *process = m_runtime.GetProcess();
 
         std::auto_ptr<objc_class_t> objc_class;
         std::auto_ptr<class_ro_t> class_ro;
         std::auto_ptr<class_rw_t> class_rw;
         
-        if (!Read_objc_class(process_sp, objc_class))
+        if (!Read_objc_class(process, objc_class))
             return 0;
-        if (!Read_class_row(process_sp, *objc_class, class_ro, class_rw))
+        if (!Read_class_row(process, *objc_class, class_ro, class_rw))
             return 0;
     
         static ConstString NSObject_name("NSObject");
@@ -1094,10 +1072,10 @@
             std::auto_ptr <method_list_t> base_method_list;
             
             base_method_list.reset(new method_list_t);
-            if (!base_method_list->Read(process_sp, class_ro->m_baseMethods_ptr))
+            if (!base_method_list->Read(process, class_ro->m_baseMethods_ptr))
                 return false;
             
-            if (base_method_list->m_entsize != method_t::GetSize(process_sp))
+            if (base_method_list->m_entsize != method_t::GetSize(process))
                 return false;
             
             std::auto_ptr <method_t> method;
@@ -1105,7 +1083,7 @@
             
             for (uint32_t i = 0, e = base_method_list->m_count; i < e; ++i)
             {
-                method->Read(process_sp, base_method_list->m_first_ptr + (i * base_method_list->m_entsize));
+                method->Read(process, base_method_list->m_first_ptr + (i * base_method_list->m_entsize));
                 
                 instance_method_func(method->m_name.c_str(), method->m_types.c_str());
             }
@@ -1164,9 +1142,9 @@
             m_flags = 0;
         }
 
-        bool Read(ProcessSP &process_sp, lldb::addr_t addr)
+        bool Read(Process *process, lldb::addr_t addr)
         {
-            size_t ptr_size = process_sp->GetAddressByteSize();
+            size_t ptr_size = process->GetAddressByteSize();
             
             size_t objc_class_size = ptr_size   // uintptr_t isa;
             + ptr_size   // Class superclass;
@@ -1177,13 +1155,13 @@
             DataBufferHeap objc_class_buf (objc_class_size, '\0');
             Error error;
             
-            process_sp->ReadMemory(addr, objc_class_buf.GetBytes(), objc_class_size, error);
+            process->ReadMemory(addr, objc_class_buf.GetBytes(), objc_class_size, error);
             if (error.Fail())
             {
                 return false;
             }
             
-            DataExtractor extractor(objc_class_buf.GetBytes(), objc_class_size, process_sp->GetByteOrder(), process_sp->GetAddressByteSize());
+            DataExtractor extractor(objc_class_buf.GetBytes(), objc_class_size, process->GetByteOrder(), process->GetAddressByteSize());
             
             uint32_t cursor = 0;
             
@@ -1217,9 +1195,9 @@
         
         std::string                     m_name;
         
-        bool Read(ProcessSP &process_sp, lldb::addr_t addr)
+        bool Read(Process *process, lldb::addr_t addr)
         {
-            size_t ptr_size = process_sp->GetAddressByteSize();
+            size_t ptr_size = process->GetAddressByteSize();
             
             size_t size = sizeof(uint32_t)             // uint32_t flags;
             + sizeof(uint32_t)                         // uint32_t instanceStart;
@@ -1236,13 +1214,13 @@
             DataBufferHeap buffer (size, '\0');
             Error error;
             
-            process_sp->ReadMemory(addr, buffer.GetBytes(), size, error);
+            process->ReadMemory(addr, buffer.GetBytes(), size, error);
             if (error.Fail())
             {
                 return false;
             }
             
-            DataExtractor extractor(buffer.GetBytes(), size, process_sp->GetByteOrder(), process_sp->GetAddressByteSize());
+            DataExtractor extractor(buffer.GetBytes(), size, process->GetByteOrder(), process->GetAddressByteSize());
             
             uint32_t cursor = 0;
             
@@ -1263,7 +1241,7 @@
             
             DataBufferHeap name_buf(1024, '\0');
             
-            process_sp->ReadCStringFromMemory(m_name_ptr, (char*)name_buf.GetBytes(), name_buf.GetByteSize(), error);
+            process->ReadCStringFromMemory(m_name_ptr, (char*)name_buf.GetBytes(), name_buf.GetByteSize(), error);
             
             if (error.Fail())
             {
@@ -1291,9 +1269,9 @@
         ObjCLanguageRuntime::ObjCISA    m_firstSubclass;
         ObjCLanguageRuntime::ObjCISA    m_nextSiblingClass;
         
-        bool Read(ProcessSP &process_sp, lldb::addr_t addr)
+        bool Read(Process *process, lldb::addr_t addr)
         {
-            size_t ptr_size = process_sp->GetAddressByteSize();
+            size_t ptr_size = process->GetAddressByteSize();
             
             size_t size = sizeof(uint32_t)  // uint32_t flags;
             + sizeof(uint32_t)  // uint32_t version;
@@ -1307,13 +1285,13 @@
             DataBufferHeap buffer (size, '\0');
             Error error;
             
-            process_sp->ReadMemory(addr, buffer.GetBytes(), size, error);
+            process->ReadMemory(addr, buffer.GetBytes(), size, error);
             if (error.Fail())
             {
                 return false;
             }
             
-            DataExtractor extractor(buffer.GetBytes(), size, process_sp->GetByteOrder(), process_sp->GetAddressByteSize());
+            DataExtractor extractor(buffer.GetBytes(), size, process->GetByteOrder(), process->GetAddressByteSize());
             
             uint32_t cursor = 0;
             
@@ -1335,7 +1313,7 @@
         uint32_t        m_count;
         lldb::addr_t    m_first_ptr;
         
-        bool Read(ProcessSP &process_sp, lldb::addr_t addr)
+        bool Read(Process *process, lldb::addr_t addr)
         {
             size_t size = sizeof(uint32_t)  // uint32_t entsize_NEVER_USE;
             + sizeof(uint32_t); // uint32_t count;
@@ -1343,13 +1321,13 @@
             DataBufferHeap buffer (size, '\0');
             Error error;
             
-            process_sp->ReadMemory(addr, buffer.GetBytes(), size, error);
+            process->ReadMemory(addr, buffer.GetBytes(), size, error);
             if (error.Fail())
             {
                 return false;
             }
             
-            DataExtractor extractor(buffer.GetBytes(), size, process_sp->GetByteOrder(), process_sp->GetAddressByteSize());
+            DataExtractor extractor(buffer.GetBytes(), size, process->GetByteOrder(), process->GetAddressByteSize());
             
             uint32_t cursor = 0;
             
@@ -1370,29 +1348,29 @@
         std::string     m_name;
         std::string     m_types;
         
-        static size_t GetSize(ProcessSP &process_sp)
+        static size_t GetSize(Process *process)
         {
-            size_t ptr_size = process_sp->GetAddressByteSize();
+            size_t ptr_size = process->GetAddressByteSize();
             
             return ptr_size     // SEL name;
             + ptr_size   // const char *types;
             + ptr_size;  // IMP imp;
         }
         
-        bool Read(ProcessSP &process_sp, lldb::addr_t addr)
+        bool Read(Process *process, lldb::addr_t addr)
         {
-            size_t size = GetSize(process_sp);
+            size_t size = GetSize(process);
             
             DataBufferHeap buffer (size, '\0');
             Error error;
             
-            process_sp->ReadMemory(addr, buffer.GetBytes(), size, error);
+            process->ReadMemory(addr, buffer.GetBytes(), size, error);
             if (error.Fail())
             {
                 return false;
             }
             
-            DataExtractor extractor(buffer.GetBytes(), size, process_sp->GetByteOrder(), process_sp->GetAddressByteSize());
+            DataExtractor extractor(buffer.GetBytes(), size, process->GetByteOrder(), process->GetAddressByteSize());
             
             uint32_t cursor = 0;
             
@@ -1405,21 +1383,21 @@
             
             DataBufferHeap string_buf(buffer_size, 0);
             
-            count = process_sp->ReadCStringFromMemory(m_name_ptr, (char*)string_buf.GetBytes(), buffer_size, error);
+            count = process->ReadCStringFromMemory(m_name_ptr, (char*)string_buf.GetBytes(), buffer_size, error);
             m_name.assign((char*)string_buf.GetBytes(), count);
             
-            count = process_sp->ReadCStringFromMemory(m_types_ptr, (char*)string_buf.GetBytes(), buffer_size, error);
+            count = process->ReadCStringFromMemory(m_types_ptr, (char*)string_buf.GetBytes(), buffer_size, error);
             m_types.assign((char*)string_buf.GetBytes(), count);
             
             return true;
         }
     };
     
-    bool Read_objc_class (lldb::ProcessSP process_sp, std::auto_ptr<objc_class_t> &objc_class)
+    bool Read_objc_class (Process* process, std::auto_ptr<objc_class_t> &objc_class)
     {
         objc_class.reset(new objc_class_t);
         
-        bool ret = objc_class->Read (process_sp, m_objc_class_ptr);
+        bool ret = objc_class->Read (process, m_objc_class_ptr);
         
         if (!ret)
             objc_class.reset();
@@ -1427,13 +1405,13 @@
         return ret;
     }
     
-    bool Read_class_row (lldb::ProcessSP process_sp, const objc_class_t &objc_class, std::auto_ptr<class_ro_t> &class_ro, std::auto_ptr<class_rw_t> &class_rw)
+    bool Read_class_row (Process* process, const objc_class_t &objc_class, std::auto_ptr<class_ro_t> &class_ro, std::auto_ptr<class_rw_t> &class_rw)
     {
         class_ro.reset();
         class_rw.reset();
         
         Error error;
-        uint32_t class_row_t_flags = process_sp->ReadUnsignedIntegerFromMemory(objc_class.m_data_ptr, sizeof(uint32_t), 0, error);
+        uint32_t class_row_t_flags = process->ReadUnsignedIntegerFromMemory(objc_class.m_data_ptr, sizeof(uint32_t), 0, error);
         if (!error.Success())
             return false;
 
@@ -1441,7 +1419,7 @@
         {
             class_rw.reset(new class_rw_t);
             
-            if (!class_rw->Read(process_sp, objc_class.m_data_ptr))
+            if (!class_rw->Read(process, objc_class.m_data_ptr))
             {
                 class_rw.reset();
                 return false;
@@ -1449,7 +1427,7 @@
             
             class_ro.reset(new class_ro_t);
             
-            if (!class_ro->Read(process_sp, class_rw->m_ro_ptr))
+            if (!class_ro->Read(process, class_rw->m_ro_ptr))
             {
                 class_rw.reset();
                 class_ro.reset();
@@ -1460,7 +1438,7 @@
         {
             class_ro.reset(new class_ro_t);
             
-            if (!class_ro->Read(process_sp, objc_class.m_data_ptr))
+            if (!class_ro->Read(process, objc_class.m_data_ptr))
             {
                 class_ro.reset();
                 return false;
@@ -1482,7 +1460,7 @@
     {
         m_valid = false;
         uint64_t value = isa_pointer.GetValueAsUnsigned(0);
-        lldb::ProcessSP process_sp = isa_pointer.GetProcessSP();
+        ProcessSP process_sp = isa_pointer.GetProcessSP();
         if (process_sp)
             m_pointer_size = process_sp->GetAddressByteSize();
         else
@@ -1700,54 +1678,78 @@
                 Error error;
                 ObjCISA isa = process->ReadPointerFromMemory(isa_pointer, error);
                 if (isa != LLDB_INVALID_ADDRESS)
+                {
                     objc_class_sp = ObjCLanguageRuntime::GetClassDescriptor (isa);
+                    if (isa && !objc_class_sp)
+                    {
+                        lldb::LogSP log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS));
+                        if (log)
+                            log->Printf("0x%llx: AppleObjCRuntimeV2::GetClassDescriptor() ISA was not in class descriptor cache 0x%llx",
+                                        isa_pointer,
+                                        isa);
+                    }
+                }
             }
         }
     }
     return objc_class_sp;
 }
 
-bool
-AppleObjCRuntimeV2::UpdateISAToDescriptorMap_Impl()
+lldb::addr_t
+AppleObjCRuntimeV2::GetISAHashTablePointer ()
 {
-    lldb::LogSP log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS));
+    if (m_isa_hash_table_ptr == LLDB_INVALID_ADDRESS)
+    {
+        Process *process = GetProcess();
 
-    Process *process_ptr = GetProcess();
-    
-    if (!process_ptr)
-        return false;
-    
-    ProcessSP process_sp (process_ptr->shared_from_this());
-    
-    ModuleSP objc_module_sp(GetObjCModule());
-    
-    if (!objc_module_sp)
-        return false;
+        ModuleSP objc_module_sp(GetObjCModule());
 
-    uint32_t num_map_table_isas = 0;
-    uint32_t num_objc_opt_ro_isas = 0;
+        static ConstString g_gdb_objc_realized_classes("gdb_objc_realized_classes");
+        
+        const Symbol *symbol = objc_module_sp->FindFirstSymbolWithNameAndType(g_gdb_objc_realized_classes, lldb::eSymbolTypeData);
+        if (symbol)
+        {
+            lldb::addr_t gdb_objc_realized_classes_ptr = symbol->GetAddress().GetLoadAddress(&process->GetTarget());
+            
+            if (gdb_objc_realized_classes_ptr != LLDB_INVALID_ADDRESS)
+            {
+                Error error;
+                m_isa_hash_table_ptr = process->ReadPointerFromMemory(gdb_objc_realized_classes_ptr, error);
+            }
+        }
+    }
+    return m_isa_hash_table_ptr;
+}
 
-    static ConstString g_gdb_objc_realized_classes("gdb_objc_realized_classes");
+void
+AppleObjCRuntimeV2::UpdateISAToDescriptorMapIfNeeded()
+{
+    // Else we need to check with our process to see when the map was updated.
+    Process *process = GetProcess();
 
-    const Symbol *symbol = objc_module_sp->FindFirstSymbolWithNameAndType(g_gdb_objc_realized_classes, lldb::eSymbolTypeData);
-    if (symbol)
+    if (process)
     {
-        lldb::addr_t gdb_objc_realized_classes_ptr = symbol->GetAddress().GetLoadAddress(&process_sp->GetTarget());
+        // Update the process stop ID that indicates the last time we updated the
+        // map, wether it was successful or not.
+        m_isa_to_descriptor_cache_stop_id = process->GetStopID();
         
-        if (gdb_objc_realized_classes_ptr != LLDB_INVALID_ADDRESS)
+        RemoteNXMapTable hash_table;
+        
+        if (m_hash_signature.NeedsUpdate(process, this, hash_table))
         {
-            // <rdar://problem/10763513>
+            // Update the hash table signature
+            m_hash_signature.UpdateSignature (hash_table);
+
+            lldb::LogSP log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_PROCESS));
 
-            lldb::addr_t gdb_objc_realized_classes_nxmaptable_ptr;
+            uint32_t num_map_table_isas = 0;
+            uint32_t num_objc_opt_ro_isas = 0;
+
+            ModuleSP objc_module_sp(GetObjCModule());
             
-            Error err;
-            gdb_objc_realized_classes_nxmaptable_ptr = process_sp->ReadPointerFromMemory(gdb_objc_realized_classes_ptr, err);
-            if (err.Success())
+            if (objc_module_sp)
             {
-                RemoteNXMapTable gdb_objc_realized_classes(process_sp, gdb_objc_realized_classes_nxmaptable_ptr);
-            
-                //for (RemoteNXMapTable::element elt : gdb_objc_realized_classes)
-                for (RemoteNXMapTable::const_iterator it = gdb_objc_realized_classes.begin(); it != gdb_objc_realized_classes.end(); ++it)
+                for (RemoteNXMapTable::const_iterator it = hash_table.begin(); it != hash_table.end(); ++it)
                 {
                     RemoteNXMapTable::element elt = *it;
                     ++num_map_table_isas;
@@ -1762,53 +1764,60 @@
                     
                     m_isa_to_descriptor_cache[elt.second] = descriptor_sp;
                 }
-            }
-        }
-    }
-    
-    ObjectFile *objc_object = objc_module_sp->GetObjectFile();
-    
-    if (objc_object)
-    {
-        SectionList *section_list = objc_object->GetSectionList();
-    
-        if (section_list)
-        {
-            SectionSP text_segment_sp (section_list->FindSectionByName(ConstString("__TEXT")));
-            
-            if (text_segment_sp)
-            {
-                SectionSP objc_opt_section_sp (text_segment_sp->GetChildren().FindSectionByName(ConstString("__objc_opt_ro")));
                 
-                if (objc_opt_section_sp)
+                if (!m_loaded_objc_opt)
                 {
-                    lldb::addr_t objc_opt_ptr = objc_opt_section_sp->GetLoadBaseAddress(&process_sp->GetTarget());
+                    m_loaded_objc_opt = true;
                     
-                    if (objc_opt_ptr != LLDB_INVALID_ADDRESS)
+                    ObjectFile *objc_object = objc_module_sp->GetObjectFile();
+                    
+                    if (objc_object)
                     {
-                        RemoteObjCOpt objc_opt(process_sp, objc_opt_ptr);
-                                                
-                        for (RemoteObjCOpt::const_iterator it = objc_opt.begin(); it != objc_opt.end(); ++it)
+                        SectionList *section_list = objc_object->GetSectionList();
+                        
+                        if (section_list)
                         {
-                            ObjCLanguageRuntime::ObjCISA objc_isa = *it;
-                            ++num_objc_opt_ro_isas;
-                            if (m_isa_to_descriptor_cache.count(objc_isa))
-                                continue;
-                            
-                            ClassDescriptorSP descriptor_sp = ClassDescriptorSP(new ClassDescriptorV2(*this, objc_isa));
-                            
-                            if (log && log->GetVerbose())
-                                log->Printf("AppleObjCRuntimeV2 added (ObjCISA)0x%llx (%s) from static table to isa->descriptor cache", objc_isa, descriptor_sp->GetClassName().AsCString());
+                            SectionSP text_segment_sp (section_list->FindSectionByName(ConstString("__TEXT")));
                             
-                            m_isa_to_descriptor_cache[objc_isa] = descriptor_sp;
+                            if (text_segment_sp)
+                            {
+                                SectionSP objc_opt_section_sp (text_segment_sp->GetChildren().FindSectionByName(ConstString("__objc_opt_ro")));
+                                
+                                if (objc_opt_section_sp)
+                                {
+                                    lldb::addr_t objc_opt_ptr = objc_opt_section_sp->GetLoadBaseAddress(&process->GetTarget());
+                                    
+                                    if (objc_opt_ptr != LLDB_INVALID_ADDRESS)
+                                    {
+                                        RemoteObjCOpt objc_opt(process, objc_opt_ptr);
+                                        
+                                        for (RemoteObjCOpt::const_iterator it = objc_opt.begin(); it != objc_opt.end(); ++it)
+                                        {
+                                            ObjCLanguageRuntime::ObjCISA objc_isa = *it;
+                                            ++num_objc_opt_ro_isas;
+                                            if (m_isa_to_descriptor_cache.count(objc_isa))
+                                                continue;
+                                            
+                                            ClassDescriptorSP descriptor_sp = ClassDescriptorSP(new ClassDescriptorV2(*this, objc_isa));
+                                            
+                                            if (log && log->GetVerbose())
+                                                log->Printf("AppleObjCRuntimeV2 added (ObjCISA)0x%llx (%s) from static table to isa->descriptor cache", objc_isa, descriptor_sp->GetClassName().AsCString());
+                                            
+                                            m_isa_to_descriptor_cache[objc_isa] = descriptor_sp;
+                                        }
+                                    }
+                                }
+                            }
                         }
                     }
                 }
             }
         }
     }
-    
-    return num_objc_opt_ro_isas > 0 && num_map_table_isas > 0;
+    else
+    {
+        m_isa_to_descriptor_cache_stop_id = UINT32_MAX;
+    }
 }
 
 

Modified: lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h (original)
+++ lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h Thu Nov  1 02:04:04 2012
@@ -21,6 +21,8 @@
 #include "lldb/Target/ObjCLanguageRuntime.h"
 #include "AppleObjCRuntime.h"
 
+class RemoteNXMapTable;
+
 namespace lldb_private {
 
 class AppleObjCRuntimeV2 :
@@ -72,9 +74,9 @@
 
     virtual size_t
     GetByteOffsetForIvar (ClangASTType &parent_qual_type, const char *ivar_name);
-    
-    virtual bool
-    UpdateISAToDescriptorMap_Impl();
+
+    virtual void
+    UpdateISAToDescriptorMapIfNeeded();
     
     // none of these are valid ISAs - we use them to infer the type
     // of tagged pointers - if we have something meaningful to say
@@ -97,34 +99,50 @@
     virtual TypeVendor *
     GetTypeVendor();
     
-    lldb::ProcessSP
-    GetProcessSP ()
-    {
-        return m_process_wp.lock();
-    }
-    
 protected:
     virtual lldb::BreakpointResolverSP
     CreateExceptionResolver (Breakpoint *bkpt, bool catch_bp, bool throw_bp);
 
 private:
     
+    class HashTableSignature
+    {
+    public:
+        HashTableSignature ();
+
+        bool
+        NeedsUpdate (Process *process,
+                     AppleObjCRuntimeV2 *runtime,
+                     RemoteNXMapTable &hash_table);
+        
+        void
+        UpdateSignature (const RemoteNXMapTable &hash_table);
+    protected:
+        uint32_t m_count;
+        uint32_t m_num_buckets;
+        lldb::addr_t m_buckets_ptr;
+    };
+
     AppleObjCRuntimeV2 (Process *process,
                         const lldb::ModuleSP &objc_module_sp);
     
     bool
     IsTaggedPointer(lldb::addr_t ptr);
     
+    lldb::addr_t
+    GetISAHashTablePointer ();
+
     bool RunFunctionToFindClassName (lldb::addr_t class_addr, Thread *thread, char *name_dst, size_t max_name_len);
     
-    bool                                m_has_object_getClass;
     std::auto_ptr<ClangFunction>        m_get_class_name_function;
     std::auto_ptr<ClangUtilityFunction> m_get_class_name_code;
     lldb::addr_t                        m_get_class_name_args;
     Mutex                               m_get_class_name_args_mutex;
-    
     std::auto_ptr<TypeVendor>           m_type_vendor_ap;
-    lldb::ProcessWP                     m_process_wp; // used by class descriptors to lazily fill their own data
+    lldb::addr_t                        m_isa_hash_table_ptr;
+    HashTableSignature                  m_hash_signature;
+    bool                                m_has_object_getClass;
+    bool                                m_loaded_objc_opt;
     
     static const char *g_find_class_name_function_name;
     static const char *g_find_class_name_function_body;

Modified: lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeVendor.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeVendor.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeVendor.cpp (original)
+++ lldb/branches/windows/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCTypeVendor.cpp Thu Nov  1 02:04:04 2012
@@ -192,7 +192,9 @@
                                                                                 &identifier_info,
                                                                                 NULL);
     
-    m_external_source->SetMetadata((uintptr_t)new_iface_decl, (uint64_t)isa);
+    ClangASTMetadata meta_data;
+    meta_data.SetISAPtr((uint64_t) isa);
+    m_external_source->SetMetadata((uintptr_t)new_iface_decl, meta_data);
     
     new_iface_decl->setHasExternalVisibleStorage();
     
@@ -488,7 +490,10 @@
 {
     lldb::LogSP log(GetLogIfAllCategoriesSet(LIBLLDB_LOG_EXPRESSIONS));  // FIXME - a more appropriate log channel?
     
-    ObjCLanguageRuntime::ObjCISA objc_isa = (ObjCLanguageRuntime::ObjCISA)m_external_source->GetMetadata((uintptr_t)interface_decl);
+    ClangASTMetadata *metadata = m_external_source->GetMetadata((uintptr_t)interface_decl);
+    ObjCLanguageRuntime::ObjCISA objc_isa = 0;
+    if (metadata)
+     objc_isa = metadata->GetISAPtr();
     
     if (!objc_isa)
         return false;
@@ -591,10 +596,16 @@
                 if (log)
                 {
                     ASTDumper dumper(result_iface_type);
+                    
+                    uint64_t isa_value = LLDB_INVALID_ADDRESS;
+                    ClangASTMetadata *metadata = m_external_source->GetMetadata((uintptr_t)result_iface_decl);
+                    if (metadata)
+                        isa_value = metadata->GetISAPtr();
+                    
                     log->Printf("AOCTV::FT [%u] Found %s (isa 0x%llx) in the ASTContext",
                                 current_id,
                                 dumper.GetCString(),
-                                m_external_source->GetMetadata((uintptr_t)result_iface_decl));
+                                isa_value);
                 }
                     
                 types.push_back(ClangASTType(ast_ctx, result_iface_type.getAsOpaquePtr()));

Modified: lldb/branches/windows/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.h?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.h (original)
+++ lldb/branches/windows/source/Plugins/ObjectContainer/BSD-Archive/ObjectContainerBSDArchive.h Thu Nov  1 02:04:04 2012
@@ -108,7 +108,6 @@
         uint32_t        ar_size;        // size in bytes
         uint32_t        ar_file_offset; // file offset in bytes from the beginning of the file of the object data
         uint32_t        ar_file_size;   // length of the object data
-        lldb::ObjectFileSP object_file_sp;
 
         typedef std::vector<Object>         collection;
         typedef collection::iterator        iterator;
@@ -177,7 +176,7 @@
         //----------------------------------------------------------------------
         lldb_private::ArchSpec m_arch;
         lldb_private::TimeValue m_time;
-        Object::collection  m_objects;
+        Object::collection m_objects;
         lldb_private::UniqueCStringMap<uint32_t> m_object_name_to_index_map;
     };
 

Modified: lldb/branches/windows/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp (original)
+++ lldb/branches/windows/source/Plugins/ObjectFile/Mach-O/ObjectFileMachO.cpp Thu Nov  1 02:04:04 2012
@@ -260,7 +260,7 @@
 {
 public:
     RegisterContextDarwin_arm_Mach (lldb_private::Thread &thread, const DataExtractor &data) :
-    RegisterContextDarwin_arm (thread, 0)
+        RegisterContextDarwin_arm (thread, 0)
     {
         SetRegisterDataFrom_LC_THREAD (data);
     }
@@ -317,6 +317,12 @@
     {
         return 0;
     }
+
+    virtual int
+    DoReadDBG (lldb::tid_t tid, int flavor, DBG &dbg)
+    {
+        return -1;
+    }
     
     virtual int
     DoWriteGPR (lldb::tid_t tid, int flavor, const GPR &gpr)
@@ -335,6 +341,12 @@
     {
         return 0;
     }
+    
+    virtual int
+    DoWriteDBG (lldb::tid_t tid, int flavor, const DBG &dbg)
+    {
+        return -1;
+    }
 };
 
 #define MACHO_NLIST_ARM_SYMBOL_IS_THUMB 0x0008

Modified: lldb/branches/windows/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp (original)
+++ lldb/branches/windows/source/Plugins/ObjectFile/PECOFF/ObjectFilePECOFF.cpp Thu Nov  1 02:04:04 2012
@@ -223,8 +223,6 @@
                     ParseCOFFOptionalHeader(&offset);
                 ParseSectionHeaders (offset);
             }
-            StreamFile s(stdout, false);// REMOVE THIS LINE!!!
-            Dump(&s);// REMOVE THIS LINE!!!
             return true;
         }
     }

Modified: lldb/branches/windows/source/Plugins/OperatingSystem/Darwin-Kernel/OperatingSystemDarwinKernel.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/OperatingSystem/Darwin-Kernel/OperatingSystemDarwinKernel.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/OperatingSystem/Darwin-Kernel/OperatingSystemDarwinKernel.cpp (original)
+++ lldb/branches/windows/source/Plugins/OperatingSystem/Darwin-Kernel/OperatingSystemDarwinKernel.cpp Thu Nov  1 02:04:04 2012
@@ -189,10 +189,6 @@
                     reg_info.kinds[eRegisterKindLLDB] = reg_num++;
                     m_register_info_ap->AddRegister (reg_info, reg_name, empty_name, gpr_name);
                 }
-                else
-                {
-                    printf ("not able to find register info for %s\n", reg_name.GetCString()); // REMOVE THIS printf before checkin!!!
-                }
             }
             
             m_register_info_ap->Finalize();
@@ -272,7 +268,7 @@
 }
 
 RegisterContextSP
-OperatingSystemDarwinKernel::CreateRegisterContextForThread (Thread *thread)
+OperatingSystemDarwinKernel::CreateRegisterContextForThread (Thread *thread, lldb::addr_t reg_data_addr)
 {
     ThreadMemory *generic_thread = (ThreadMemory *)thread;
     RegisterContextSP reg_ctx_sp;

Modified: lldb/branches/windows/source/Plugins/OperatingSystem/Darwin-Kernel/OperatingSystemDarwinKernel.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/OperatingSystem/Darwin-Kernel/OperatingSystemDarwinKernel.h?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/OperatingSystem/Darwin-Kernel/OperatingSystemDarwinKernel.h (original)
+++ lldb/branches/windows/source/Plugins/OperatingSystem/Darwin-Kernel/OperatingSystemDarwinKernel.h Thu Nov  1 02:04:04 2012
@@ -69,7 +69,8 @@
     ThreadWasSelected (lldb_private::Thread *thread);
 
     virtual lldb::RegisterContextSP
-    CreateRegisterContextForThread (lldb_private::Thread *thread);
+    CreateRegisterContextForThread (lldb_private::Thread *thread,
+                                    lldb::addr_t reg_data_addr);
 
     virtual lldb::StopInfoSP
     CreateThreadStopReason (lldb_private::Thread *thread);

Modified: lldb/branches/windows/source/Plugins/OperatingSystem/Python/OperatingSystemPython.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/OperatingSystem/Python/OperatingSystemPython.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/OperatingSystem/Python/OperatingSystemPython.cpp (original)
+++ lldb/branches/windows/source/Plugins/OperatingSystem/Python/OperatingSystemPython.cpp Thu Nov  1 02:04:04 2012
@@ -130,6 +130,11 @@
     {
         if (!m_interpreter || !m_python_object)
             return NULL;
+        LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_PROCESS));
+        
+        if (log)
+            log->Printf ("OperatingSystemPython::GetDynamicRegisterInfo() fetching thread register definitions from python for pid %llu", m_process->GetID());
+        
         auto object_sp = m_interpreter->OSPlugin_QueryForRegisterInfo(m_interpreter->MakeScriptObject(m_python_object));
         if (!object_sp)
             return NULL;
@@ -169,9 +174,14 @@
 bool
 OperatingSystemPython::UpdateThreadList (ThreadList &old_thread_list, ThreadList &new_thread_list)
 {
-    
     if (!m_interpreter || !m_python_object)
         return NULL;
+    
+    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_PROCESS));
+    
+    if (log)
+        log->Printf ("OperatingSystemPython::UpdateThreadList() fetching thread data from python for pid %llu", m_process->GetID());
+
     auto object_sp = m_interpreter->OSPlugin_QueryForThreadsInfo(m_interpreter->MakeScriptObject(m_python_object));
     if (!object_sp)
         return NULL;
@@ -192,6 +202,7 @@
         PythonDataString queue_pystr("queue");
         PythonDataString state_pystr("state");
         PythonDataString stop_reason_pystr("stop_reason");
+        PythonDataString reg_data_addr_pystr ("register_data_addr");
         
         const uint32_t num_threads = threads_array.GetSize();
         for (uint32_t i=0; i<num_threads; ++i)
@@ -199,7 +210,8 @@
             PythonDataDictionary thread_dict(threads_array.GetItemAtIndex(i).GetDictionaryObject());
             if (thread_dict)
             {
-                const tid_t tid = thread_dict.GetItemForKeyAsInteger(tid_pystr, LLDB_INVALID_THREAD_ID);
+                const tid_t tid = thread_dict.GetItemForKeyAsInteger (tid_pystr, LLDB_INVALID_THREAD_ID);
+                const addr_t reg_data_addr = thread_dict.GetItemForKeyAsInteger (reg_data_addr_pystr, LLDB_INVALID_ADDRESS);
                 const char *name = thread_dict.GetItemForKeyAsString (name_pystr);
                 const char *queue = thread_dict.GetItemForKeyAsString (queue_pystr);
                 //const char *state = thread_dict.GetItemForKeyAsString (state_pystr);
@@ -210,7 +222,8 @@
                     thread_sp.reset (new ThreadMemory (*m_process,
                                                        tid,
                                                        name,
-                                                       queue));
+                                                       queue,
+                                                       reg_data_addr));
                 new_thread_list.AddThread(thread_sp);
 
             }
@@ -229,29 +242,48 @@
 }
 
 RegisterContextSP
-OperatingSystemPython::CreateRegisterContextForThread (Thread *thread)
+OperatingSystemPython::CreateRegisterContextForThread (Thread *thread, lldb::addr_t reg_data_addr)
 {
     RegisterContextSP reg_ctx_sp;
     if (!m_interpreter || !m_python_object || !thread)
         return RegisterContextSP();
-    auto object_sp = m_interpreter->OSPlugin_QueryForRegisterContextData (m_interpreter->MakeScriptObject(m_python_object),
-                                                                          thread->GetID());
-    
-    if (!object_sp)
-        return RegisterContextSP();
     
-    PythonDataString reg_context_data((PyObject*)object_sp->GetObject());
-    if (reg_context_data)
+    LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_THREAD));
+
+    if (reg_data_addr != LLDB_INVALID_ADDRESS)
+    {
+        // The registers data is in contiguous memory, just create the register
+        // context using the address provided
+        if (log)
+            log->Printf ("OperatingSystemPython::CreateRegisterContextForThread (tid = 0x%llx, reg_data_addr = 0x%llx) creating memory register context", thread->GetID(), reg_data_addr);
+        reg_ctx_sp.reset (new RegisterContextMemory (*thread, 0, *GetDynamicRegisterInfo (), reg_data_addr));
+    }
+    else
     {
-        DataBufferSP data_sp (new DataBufferHeap (reg_context_data.GetString(),
-                                                  reg_context_data.GetSize()));
-        if (data_sp->GetByteSize())
+        // No register data address is provided, query the python plug-in to let
+        // it make up the data as it sees fit
+        if (log)
+            log->Printf ("OperatingSystemPython::CreateRegisterContextForThread (tid = 0x%llx) fetching register data from python", thread->GetID());
+
+        auto object_sp = m_interpreter->OSPlugin_QueryForRegisterContextData (m_interpreter->MakeScriptObject(m_python_object),
+                                                                              thread->GetID());
+        
+        if (!object_sp)
+            return RegisterContextSP();
+        
+        PythonDataString reg_context_data((PyObject*)object_sp->GetObject());
+        if (reg_context_data)
         {
-            RegisterContextMemory *reg_ctx_memory = new RegisterContextMemory (*thread, 0, *GetDynamicRegisterInfo (), LLDB_INVALID_ADDRESS);
-            if (reg_ctx_memory)
+            DataBufferSP data_sp (new DataBufferHeap (reg_context_data.GetString(),
+                                                      reg_context_data.GetSize()));
+            if (data_sp->GetByteSize())
             {
-                reg_ctx_sp.reset(reg_ctx_memory);
-                reg_ctx_memory->SetAllRegisterData (data_sp);
+                RegisterContextMemory *reg_ctx_memory = new RegisterContextMemory (*thread, 0, *GetDynamicRegisterInfo (), LLDB_INVALID_ADDRESS);
+                if (reg_ctx_memory)
+                {
+                    reg_ctx_sp.reset(reg_ctx_memory);
+                    reg_ctx_memory->SetAllRegisterData (data_sp);
+                }
             }
         }
     }

Modified: lldb/branches/windows/source/Plugins/OperatingSystem/Python/OperatingSystemPython.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/OperatingSystem/Python/OperatingSystemPython.h?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/OperatingSystem/Python/OperatingSystemPython.h (original)
+++ lldb/branches/windows/source/Plugins/OperatingSystem/Python/OperatingSystemPython.h Thu Nov  1 02:04:04 2012
@@ -72,7 +72,8 @@
     ThreadWasSelected (lldb_private::Thread *thread);
 
     virtual lldb::RegisterContextSP
-    CreateRegisterContextForThread (lldb_private::Thread *thread);
+    CreateRegisterContextForThread (lldb_private::Thread *thread,
+                                    lldb::addr_t reg_data_addr);
 
     virtual lldb::StopInfoSP
     CreateThreadStopReason (lldb_private::Thread *thread);

Modified: lldb/branches/windows/source/Plugins/Platform/MacOSX/PlatformiOSSimulator.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/Platform/MacOSX/PlatformiOSSimulator.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/Platform/MacOSX/PlatformiOSSimulator.cpp (original)
+++ lldb/branches/windows/source/Plugins/Platform/MacOSX/PlatformiOSSimulator.cpp Thu Nov  1 02:04:04 2012
@@ -207,7 +207,7 @@
                                                  NULL, 
                                                  NULL);
         
-            if (exe_module_sp->GetObjectFile())
+            if (exe_module_sp && exe_module_sp->GetObjectFile())
                 return error;
             exe_module_sp.reset();
         }
@@ -412,14 +412,6 @@
 }
 
 bool
-PlatformiOSSimulator::GetProcessInfo (lldb::pid_t pid, ProcessInstanceInfo &process_info)
-{
-    // TODO: if connected, send a packet to get the remote process info
-    process_info.Clear();
-    return false;
-}
-
-bool
 PlatformiOSSimulator::GetSupportedArchitectureAtIndex (uint32_t idx, ArchSpec &arch)
 {
     if (idx == 0)

Modified: lldb/branches/windows/source/Plugins/Platform/MacOSX/PlatformiOSSimulator.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/Platform/MacOSX/PlatformiOSSimulator.h?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/Platform/MacOSX/PlatformiOSSimulator.h (original)
+++ lldb/branches/windows/source/Plugins/Platform/MacOSX/PlatformiOSSimulator.h Thu Nov  1 02:04:04 2012
@@ -105,10 +105,6 @@
                    lldb_private::ProcessInstanceInfoList &process_infos);
 
     virtual bool
-    GetProcessInfo (lldb::pid_t pid, 
-                    lldb_private::ProcessInstanceInfo &proc_info);
-
-    virtual bool
     GetSupportedArchitectureAtIndex (uint32_t idx, 
                                      lldb_private::ArchSpec &arch);
 

Modified: lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp (original)
+++ lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.cpp Thu Nov  1 02:04:04 2012
@@ -84,7 +84,7 @@
 #endif
 
 void
-CommunicationKDP::MakeRequestPacketHeader (CommandType request_type, 
+CommunicationKDP::MakeRequestPacketHeader (CommandType request_type,
                                            PacketStreamType &request_packet,
                                            uint16_t request_length)
 {
@@ -525,6 +525,17 @@
     return uuid;
 }
 
+bool
+CommunicationKDP::RemoteIsEFI ()
+{
+    if (GetKernelVersion() == NULL)
+        return false;
+    if (strncmp (m_kernel_version.c_str(), "EFI", 3) == 0)
+        return true;
+    else
+        return false;
+}
+
 lldb::addr_t
 CommunicationKDP::GetLoadAddress ()
 {
@@ -656,6 +667,10 @@
         else
             error.SetErrorString ("kdp read memory failed");
     }
+    else
+    {
+        error.SetErrorString ("failed to send packet");
+    }
     return 0;
 }
 
@@ -691,9 +706,48 @@
             return src_len;
         }
     }
+    else
+    {
+        error.SetErrorString ("failed to send packet");
+    }
     return 0;
 }
 
+bool
+CommunicationKDP::SendRawRequest (uint8_t command_byte,
+                                  const void *src,  // Raw packet payload bytes
+                                  uint32_t src_len, // Raw packet payload length
+                                  DataExtractor &reply_packet,
+                                  Error &error)
+{
+    PacketStreamType request_packet (Stream::eBinary, m_addr_byte_size, m_byte_order);
+    // Size is header + address size + uint32_t length
+    const uint32_t command_length = 8 + src_len;
+    const CommandType command = (CommandType)command_byte;
+    const uint32_t request_sequence_id = m_request_sequence_id;
+    MakeRequestPacketHeader (command, request_packet, command_length);
+    request_packet.PutRawBytes(src, src_len);
+    
+    if (SendRequestAndGetReply (command, request_sequence_id, request_packet, reply_packet))
+    {
+        uint32_t offset = 8;
+        uint32_t kdp_error = reply_packet.GetU32 (&offset);
+        if (kdp_error)
+            error.SetErrorStringWithFormat ("request packet 0x%8.8x failed (error %u)", command_byte, kdp_error);
+        else
+        {
+            error.Clear();
+            return true;
+        }
+    }
+    else
+    {
+        error.SetErrorString ("failed to send packet");
+    }
+    return false;
+}
+
+
 const char *
 CommunicationKDP::GetCommandAsCString (uint8_t command)
 {
@@ -1120,6 +1174,10 @@
         else
             error.SetErrorStringWithFormat("failed to read kdp registers for cpu %u flavor %u", cpu, flavor);
     }
+    else
+    {
+        error.SetErrorString ("failed to send packet");
+    }
     return 0;
 }
 
@@ -1148,6 +1206,10 @@
             return src_len;
         error.SetErrorStringWithFormat("failed to read kdp registers for cpu %u flavor %u (error %u)", cpu, flavor, kdp_error);
     }
+    else
+    {
+        error.SetErrorString ("failed to send packet");
+    }
     return 0;
 }
 

Modified: lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h (original)
+++ lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/CommunicationKDP.h Thu Nov  1 02:04:04 2012
@@ -171,6 +171,13 @@
                             uint32_t src_len,
                             lldb_private::Error &error);
 
+    bool
+    SendRawRequest (uint8_t command_byte,
+                    const void *src,
+                    uint32_t src_len,
+                    lldb_private::DataExtractor &reply,
+                    lldb_private::Error &error);
+
     uint32_t
     SendRequestReadRegisters (uint32_t cpu,
                               uint32_t flavor,
@@ -216,6 +223,9 @@
     lldb_private::UUID 
     GetUUID ();
 
+    bool
+    RemoteIsEFI ();
+
     lldb::addr_t
     GetLoadAddress ();
 

Modified: lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp (original)
+++ lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp Thu Nov  1 02:04:04 2012
@@ -22,6 +22,12 @@
 #include "lldb/Core/UUID.h"
 #include "lldb/Host/Host.h"
 #include "lldb/Host/Symbols.h"
+#include "lldb/Interpreter/CommandInterpreter.h"
+#include "lldb/Interpreter/CommandObject.h"
+#include "lldb/Interpreter/CommandObjectMultiword.h"
+#include "lldb/Interpreter/CommandReturnObject.h"
+#include "lldb/Interpreter/OptionGroupString.h"
+#include "lldb/Interpreter/OptionGroupUInt64.h"
 #include "lldb/Symbol/ObjectFile.h"
 #include "lldb/Target/RegisterContext.h"
 #include "lldb/Target/Target.h"
@@ -32,6 +38,8 @@
 #include "ProcessKDPLog.h"
 #include "ThreadKDP.h"
 #include "Plugins/DynamicLoader/Darwin-Kernel/DynamicLoaderDarwinKernel.h"
+#include "Plugins/DynamicLoader/Static/DynamicLoaderStatic.h"
+#include "Utility/StringExtractor.h"
 
 using namespace lldb;
 using namespace lldb_private;
@@ -108,7 +116,8 @@
     m_async_thread (LLDB_INVALID_HOST_THREAD),
     m_destroy_in_process (false),
     m_dyld_plugin_name (),
-    m_kernel_load_addr (LLDB_INVALID_ADDRESS)
+    m_kernel_load_addr (LLDB_INVALID_ADDRESS),
+    m_command_sp()
 {
     m_async_broadcaster.SetEventName (eBroadcastBitAsyncThreadShouldExit,   "async thread should exit");
     m_async_broadcaster.SetEventName (eBroadcastBitAsyncContinue,           "async thread continue");
@@ -221,12 +230,17 @@
                     kernel_arch.SetArchitecture(eArchTypeMachO, cpu, sub);
                     m_target.SetArchitecture(kernel_arch);
 
-                    /* Get the kernel's UUID and load address via kdp-kernelversion packet.  */
-                        
+                    /* Get the kernel's UUID and load address via KDP_KERNELVERSION packet.  */
+                    /* An EFI kdp session has neither UUID nor load address. */
+
                     UUID kernel_uuid = m_comm.GetUUID ();
                     addr_t kernel_load_addr = m_comm.GetLoadAddress ();
 
-                    if (kernel_load_addr != LLDB_INVALID_ADDRESS)
+                    if (m_comm.RemoteIsEFI ())
+                    {
+                        m_dyld_plugin_name = DynamicLoaderStatic::GetPluginNameStatic();
+                    }
+                    else if (kernel_load_addr != LLDB_INVALID_ADDRESS)
                     {
                         m_kernel_load_addr = kernel_load_addr;
                         m_dyld_plugin_name = DynamicLoaderDarwinKernel::GetPluginNameStatic();
@@ -829,3 +843,183 @@
 }
 
 
+class CommandObjectProcessKDPPacketSend : public CommandObjectParsed
+{
+private:
+    
+    OptionGroupOptions m_option_group;
+    OptionGroupUInt64 m_command_byte;
+    OptionGroupString m_packet_data;
+    
+    virtual Options *
+    GetOptions ()
+    {
+        return &m_option_group;
+    }
+    
+
+public:
+    CommandObjectProcessKDPPacketSend(CommandInterpreter &interpreter) :
+        CommandObjectParsed (interpreter,
+                             "process plugin packet send",
+                             "Send a custom packet through the KDP protocol by specifying the command byte and the packet payload data. A packet will be sent with a correct header and payload, and the raw result bytes will be displayed as a string value. ",
+                             NULL),
+        m_option_group (interpreter),
+        m_command_byte(LLDB_OPT_SET_1, true , "command", 'c', 0, eArgTypeNone, "Specify the command byte to use when sending the KDP request packet.", 0),
+        m_packet_data (LLDB_OPT_SET_1, false, "payload", 'p', 0, eArgTypeNone, "Specify packet payload bytes as a hex ASCII string with no spaces or hex prefixes.", NULL)
+    {
+        m_option_group.Append (&m_command_byte, LLDB_OPT_SET_ALL, LLDB_OPT_SET_1);
+        m_option_group.Append (&m_packet_data , LLDB_OPT_SET_ALL, LLDB_OPT_SET_1);
+        m_option_group.Finalize();
+    }
+    
+    ~CommandObjectProcessKDPPacketSend ()
+    {
+    }
+    
+    bool
+    DoExecute (Args& command, CommandReturnObject &result)
+    {
+        const size_t argc = command.GetArgumentCount();
+        if (argc == 0)
+        {
+            if (!m_command_byte.GetOptionValue().OptionWasSet())
+            {
+                result.AppendError ("the --command option must be set to a valid command byte");
+                result.SetStatus (eReturnStatusFailed);
+            }
+            else
+            {
+                const uint64_t command_byte = m_command_byte.GetOptionValue().GetUInt64Value(0);
+                if (command_byte > 0 && command_byte <= UINT8_MAX)
+                {
+                    ProcessKDP *process = (ProcessKDP *)m_interpreter.GetExecutionContext().GetProcessPtr();
+                    if (process)
+                    {
+                        const StateType state = process->GetState();
+                        
+                        if (StateIsStoppedState (state, true))
+                        {
+                            std::vector<uint8_t> payload_bytes;
+                            const char *ascii_hex_bytes_cstr = m_packet_data.GetOptionValue().GetCurrentValue();
+                            if (ascii_hex_bytes_cstr && ascii_hex_bytes_cstr[0])
+                            {
+                                StringExtractor extractor(ascii_hex_bytes_cstr);
+                                const size_t ascii_hex_bytes_cstr_len = extractor.GetStringRef().size();
+                                if (ascii_hex_bytes_cstr_len & 1)
+                                {
+                                    result.AppendErrorWithFormat ("payload data must contain an even number of ASCII hex characters: '%s'", ascii_hex_bytes_cstr);
+                                    result.SetStatus (eReturnStatusFailed);
+                                    return false;
+                                }
+                                payload_bytes.resize(ascii_hex_bytes_cstr_len/2);
+                                if (extractor.GetHexBytes(&payload_bytes[0], payload_bytes.size(), '\xdd') != payload_bytes.size())
+                                {
+                                    result.AppendErrorWithFormat ("payload data must only contain ASCII hex characters (no spaces or hex prefixes): '%s'", ascii_hex_bytes_cstr);
+                                    result.SetStatus (eReturnStatusFailed);
+                                    return false;
+                                }
+                            }
+                            Error error;
+                            DataExtractor reply;
+                            process->GetCommunication().SendRawRequest (command_byte,
+                                                                        payload_bytes.empty() ? NULL : payload_bytes.data(),
+                                                                        payload_bytes.size(),
+                                                                        reply,
+                                                                        error);
+                            
+                            if (error.Success())
+                            {
+                                // Copy the binary bytes into a hex ASCII string for the result
+                                StreamString packet;
+                                packet.PutBytesAsRawHex8(reply.GetDataStart(),
+                                                         reply.GetByteSize(),
+                                                         lldb::endian::InlHostByteOrder(),
+                                                         lldb::endian::InlHostByteOrder());
+                                result.AppendMessage(packet.GetString().c_str());
+                                result.SetStatus (eReturnStatusSuccessFinishResult);
+                                return true;
+                            }
+                            else
+                            {
+                                const char *error_cstr = error.AsCString();
+                                if (error_cstr && error_cstr[0])
+                                    result.AppendError (error_cstr);
+                                else
+                                    result.AppendErrorWithFormat ("unknown error 0x%8.8x", error.GetError());
+                                result.SetStatus (eReturnStatusFailed);
+                                return false;
+                            }
+                        }
+                        else
+                        {
+                            result.AppendErrorWithFormat ("process must be stopped in order to send KDP packets, state is %s", StateAsCString (state));
+                            result.SetStatus (eReturnStatusFailed);
+                        }
+                    }
+                    else
+                    {
+                        result.AppendError ("invalid process");
+                        result.SetStatus (eReturnStatusFailed);
+                    }
+                }
+                else
+                {
+                    result.AppendErrorWithFormat ("invalid command byte 0x%llx, valid values are 1 - 255", command_byte);
+                    result.SetStatus (eReturnStatusFailed);
+                }
+            }
+        }
+        else
+        {
+            result.AppendErrorWithFormat ("'%s' takes no arguments, only options.", m_cmd_name.c_str());
+            result.SetStatus (eReturnStatusFailed);
+        }
+        return false;
+    }
+};
+
+class CommandObjectProcessKDPPacket : public CommandObjectMultiword
+{
+private:
+
+public:
+    CommandObjectProcessKDPPacket(CommandInterpreter &interpreter) :
+    CommandObjectMultiword (interpreter,
+                            "process plugin packet",
+                            "Commands that deal with KDP remote packets.",
+                            NULL)
+    {
+        LoadSubCommand ("send", CommandObjectSP (new CommandObjectProcessKDPPacketSend (interpreter)));
+    }
+    
+    ~CommandObjectProcessKDPPacket ()
+    {
+    }
+};
+
+class CommandObjectMultiwordProcessKDP : public CommandObjectMultiword
+{
+public:
+    CommandObjectMultiwordProcessKDP (CommandInterpreter &interpreter) :
+    CommandObjectMultiword (interpreter,
+                            "process plugin",
+                            "A set of commands for operating on a ProcessKDP process.",
+                            "process plugin <subcommand> [<subcommand-options>]")
+    {
+        LoadSubCommand ("packet", CommandObjectSP (new CommandObjectProcessKDPPacket    (interpreter)));
+    }
+    
+    ~CommandObjectMultiwordProcessKDP ()
+    {
+    }
+};
+
+CommandObject *
+ProcessKDP::GetPluginCommandObject()
+{
+    if (!m_command_sp)
+        m_command_sp.reset (new CommandObjectMultiwordProcessKDP (GetTarget().GetDebugger().GetCommandInterpreter()));
+    return m_command_sp.get();
+}
+

Modified: lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h (original)
+++ lldb/branches/windows/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h Thu Nov  1 02:04:04 2012
@@ -70,8 +70,8 @@
     CanDebug (lldb_private::Target &target,
               bool plugin_specified_by_name);
     
-    //    virtual uint32_t
-    //    ListProcessesMatchingName (const char *name, lldb_private::StringList &matches, std::vector<lldb::pid_t> &pids);
+    virtual lldb_private::CommandObject *
+    GetPluginCommandObject();
     
     //------------------------------------------------------------------
     // Creating a new process, or attaching to an existing one
@@ -260,6 +260,8 @@
     bool m_destroy_in_process;
     std::string m_dyld_plugin_name;
     lldb::addr_t m_kernel_load_addr;
+    lldb::CommandObjectSP m_command_sp;
+
 
     bool
     StartAsyncThread ();

Modified: lldb/branches/windows/source/Plugins/Process/POSIX/POSIXThread.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/Process/POSIX/POSIXThread.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/Process/POSIX/POSIXThread.cpp (original)
+++ lldb/branches/windows/source/Plugins/Process/POSIX/POSIXThread.cpp Thu Nov  1 02:04:04 2012
@@ -146,11 +146,14 @@
 {
     SetResumeState(resume_state);
 
-    ClearStackFrames();
+    if (!Thread::WillResume(resume_state))
+        return false;
+
     if (m_unwinder_ap.get())
         m_unwinder_ap->Clear();
+    Thread::ClearStackFrames();
 
-    return Thread::WillResume(resume_state);
+    return true;
 }
 
 bool

Modified: lldb/branches/windows/source/Plugins/Process/POSIX/RegisterContext_x86_64.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/Process/POSIX/RegisterContext_x86_64.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/Process/POSIX/RegisterContext_x86_64.cpp (original)
+++ lldb/branches/windows/source/Plugins/Process/POSIX/RegisterContext_x86_64.cpp Thu Nov  1 02:04:04 2012
@@ -13,6 +13,7 @@
 
 #include "lldb/Core/DataBufferHeap.h"
 #include "lldb/Core/DataExtractor.h"
+#include "lldb/Core/RegisterValue.h"
 #include "lldb/Core/Scalar.h"
 #include "lldb/Target/Thread.h"
 #include "lldb/Host/Endian.h"
@@ -500,12 +501,66 @@
 }
 
 bool
-RegisterContext_x86_64::ReadRegister(const RegisterInfo *reg_info,
-                                          RegisterValue &value)
+RegisterContext_x86_64::ReadRegister(const RegisterInfo *reg_info, RegisterValue &value)
 {
     const uint32_t reg = reg_info->kinds[eRegisterKindLLDB];
-    ProcessMonitor &monitor = GetMonitor();
-    return monitor.ReadRegisterValue(GetRegOffset(reg), GetRegSize(reg), value);
+
+    if (reg >= k_first_fpr && reg <= k_last_fpr) {
+        if (!ReadFPR())
+            return false;
+    }
+    else {
+        ProcessMonitor &monitor = GetMonitor();
+        return monitor.ReadRegisterValue(GetRegOffset(reg),GetRegSize(reg), value);
+    }
+
+    if (reg_info->encoding == eEncodingVector) {
+        // Get the target process whose privileged thread was used for the register read.
+        Process *process = CalculateProcess().get();
+        if (process) {
+            if (reg >= fpu_stmm0 && reg <= fpu_stmm7) {
+               value.SetBytes(user.i387.stmm[reg - fpu_stmm0].bytes, reg_info->byte_size, process->GetByteOrder());
+               return value.GetType() == RegisterValue::eTypeBytes;
+            }
+            if (reg >= fpu_xmm0 && reg <= fpu_xmm15) {
+                value.SetBytes(user.i387.xmm[reg - fpu_xmm0].bytes, reg_info->byte_size, process->GetByteOrder());
+                return value.GetType() == RegisterValue::eTypeBytes;
+            }
+        }
+        return false;
+    }
+
+    // Note that lldb uses slightly different naming conventions from sys/user.h
+    switch (reg)
+    {
+    default:
+        return false;
+    case fpu_dp:
+        value = user.i387.dp;
+        break;
+    case fpu_fcw:
+        value = user.i387.fcw;
+        break;
+    case fpu_fsw:
+        value = user.i387.fsw;
+        break;
+    case fpu_ip:
+        value = user.i387.ip;
+        break;
+    case fpu_fop:
+        value = user.i387.fop;
+        break;
+    case fpu_ftw:
+        value = user.i387.ftw;
+        break;
+    case fpu_mxcsr:
+        value = user.i387.mxcsr;
+        break;
+    case fpu_mxcsrmask:
+        value = user.i387.mxcsrmask;
+        break;
+    }
+    return true;
 }
 
 bool

Modified: lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextDarwin_arm.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextDarwin_arm.h?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextDarwin_arm.h (original)
+++ lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextDarwin_arm.h Thu Nov  1 02:04:04 2012
@@ -288,47 +288,26 @@
         return -1;
     }
     
-    int
-    DoReadFPU (lldb::tid_t tid, int flavor, FPU &fpu)
-    {
-        return -1;
-    }
+    virtual int
+    DoReadFPU (lldb::tid_t tid, int flavor, FPU &fpu) = 0;
     
-    int
-    DoReadEXC (lldb::tid_t tid, int flavor, EXC &exc)
-    {
-        return -1;
-    }
+    virtual int
+    DoReadEXC (lldb::tid_t tid, int flavor, EXC &exc) = 0;
 
-    int
-    DoReadDBG (lldb::tid_t tid, int flavor, DBG &dbg)
-    {
-        return -1;
-    }
+    virtual int
+    DoReadDBG (lldb::tid_t tid, int flavor, DBG &dbg) = 0;
 
-    int
-    DoWriteGPR (lldb::tid_t tid, int flavor, const GPR &gpr)
-    {
-        return -1;
-    }
+    virtual int
+    DoWriteGPR (lldb::tid_t tid, int flavor, const GPR &gpr) = 0;
     
-    int
-    DoWriteFPU (lldb::tid_t tid, int flavor, const FPU &fpu)
-    {
-        return -1;
-    }
+    virtual int
+    DoWriteFPU (lldb::tid_t tid, int flavor, const FPU &fpu) = 0;
     
-    int
-    DoWriteEXC (lldb::tid_t tid, int flavor, const EXC &exc)
-    {
-        return -1;
-    }
+    virtual int
+    DoWriteEXC (lldb::tid_t tid, int flavor, const EXC &exc) = 0;
 
-    int
-    DoWriteDBG (lldb::tid_t tid, int flavor, const DBG &dbg)
-    {
-        return -1;
-    }
+    virtual int
+    DoWriteDBG (lldb::tid_t tid, int flavor, const DBG &dbg) = 0;
 
     int
     ReadRegisterSet (uint32_t set, bool force);

Modified: lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextDarwin_i386.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextDarwin_i386.h?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextDarwin_i386.h (original)
+++ lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextDarwin_i386.h Thu Nov  1 02:04:04 2012
@@ -230,40 +230,22 @@
 
     // Subclasses override these to do the actual reading.
     virtual int
-    DoReadGPR (lldb::tid_t tid, int flavor, GPR &gpr)
-    {
-        return -1;
-    }
+    DoReadGPR (lldb::tid_t tid, int flavor, GPR &gpr) = 0;
     
-    int
-    DoReadFPU (lldb::tid_t tid, int flavor, FPU &fpu)
-    {
-        return -1;
-    }
+    virtual int
+    DoReadFPU (lldb::tid_t tid, int flavor, FPU &fpu) = 0;
 
-    int
-    DoReadEXC (lldb::tid_t tid, int flavor, EXC &exc)
-    {
-        return -1;
-    }
+    virtual int
+    DoReadEXC (lldb::tid_t tid, int flavor, EXC &exc) = 0;
 
-    int
-    DoWriteGPR (lldb::tid_t tid, int flavor, const GPR &gpr)
-    {
-        return -1;
-    }
+    virtual int
+    DoWriteGPR (lldb::tid_t tid, int flavor, const GPR &gpr) = 0;
     
-    int
-    DoWriteFPU (lldb::tid_t tid, int flavor, const FPU &fpu)
-    {
-        return -1;
-    }
+    virtual int
+    DoWriteFPU (lldb::tid_t tid, int flavor, const FPU &fpu) = 0;
     
-    int
-    DoWriteEXC (lldb::tid_t tid, int flavor, const EXC &exc)
-    {
-        return -1;
-    }
+    virtual int
+    DoWriteEXC (lldb::tid_t tid, int flavor, const EXC &exc) = 0;
 
     int
     ReadRegisterSet (uint32_t set, bool force);

Modified: lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextDarwin_x86_64.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextDarwin_x86_64.h?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextDarwin_x86_64.h (original)
+++ lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextDarwin_x86_64.h Thu Nov  1 02:04:04 2012
@@ -234,40 +234,22 @@
 
     // Subclasses override these to do the actual reading.
     virtual int
-    DoReadGPR (lldb::tid_t tid, int flavor, GPR &gpr)
-    {
-        return -1;
-    }
+    DoReadGPR (lldb::tid_t tid, int flavor, GPR &gpr) = 0;
     
     virtual int
-    DoReadFPU (lldb::tid_t tid, int flavor, FPU &fpu)
-    {
-        return -1;
-    }
+    DoReadFPU (lldb::tid_t tid, int flavor, FPU &fpu) = 0;
     
     virtual int
-    DoReadEXC (lldb::tid_t tid, int flavor, EXC &exc)
-    {
-        return -1;
-    }
+    DoReadEXC (lldb::tid_t tid, int flavor, EXC &exc) = 0;
     
     virtual int
-    DoWriteGPR (lldb::tid_t tid, int flavor, const GPR &gpr)
-    {
-        return -1;
-    }
+    DoWriteGPR (lldb::tid_t tid, int flavor, const GPR &gpr) = 0;
     
     virtual int
-    DoWriteFPU (lldb::tid_t tid, int flavor, const FPU &fpu)
-    {
-        return -1;
-    }
+    DoWriteFPU (lldb::tid_t tid, int flavor, const FPU &fpu) = 0;
     
     virtual int
-    DoWriteEXC (lldb::tid_t tid, int flavor, const EXC &exc)
-    {
-        return -1;
-    }
+    DoWriteEXC (lldb::tid_t tid, int flavor, const EXC &exc) = 0;
     
     int
     ReadRegisterSet (uint32_t set, bool force);

Modified: lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextLLDB.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextLLDB.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextLLDB.cpp (original)
+++ lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextLLDB.cpp Thu Nov  1 02:04:04 2012
@@ -35,24 +35,24 @@
 using namespace lldb;
 using namespace lldb_private;
 
-RegisterContextLLDB::RegisterContextLLDB 
+RegisterContextLLDB::RegisterContextLLDB
 (
-    Thread& thread, 
+    Thread& thread,
     const SharedPtr &next_frame,
     SymbolContext& sym_ctx,
     uint32_t frame_number,
     UnwindLLDB& unwind_lldb
 ) :
-    RegisterContext (thread, frame_number), 
-    m_thread(thread), 
+    RegisterContext (thread, frame_number),
+    m_thread(thread),
     m_fast_unwind_plan_sp (),
     m_full_unwind_plan_sp (),
     m_all_registers_available(false),
     m_frame_type (-1),
     m_cfa (LLDB_INVALID_ADDRESS),
-    m_start_pc (), 
-    m_current_pc (), 
-    m_current_offset (0), 
+    m_start_pc (),
+    m_current_pc (),
+    m_current_offset (0),
     m_current_offset_backed_up_one (0),
     m_sym_ctx(sym_ctx),
     m_sym_ctx_valid (false),
@@ -73,8 +73,8 @@
     }
 
     // This same code exists over in the GetFullUnwindPlanForFrame() but it may not have been executed yet
-    if (IsFrameZero() 
-        || next_frame->m_frame_type == eSigtrampFrame 
+    if (IsFrameZero()
+        || next_frame->m_frame_type == eSigtrampFrame
         || next_frame->m_frame_type == eDebuggerFrame)
     {
         m_all_registers_available = true;
@@ -90,8 +90,6 @@
     ExecutionContext exe_ctx(m_thread.shared_from_this());
     RegisterContextSP reg_ctx_sp = m_thread.GetRegisterContext();
 
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_UNWIND));
-
     if (reg_ctx_sp.get() == NULL)
     {
         m_frame_type = eNotAValidFrame;
@@ -124,11 +122,7 @@
     ModuleSP pc_module_sp (m_current_pc.GetModule());
     if (!m_current_pc.IsValid() || !pc_module_sp)
     {
-        if (log)
-        {
-            log->Printf("%*sFrame %u using architectural default unwind method",
-                        m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number);
-        }
+        UnwindLogMsg ("using architectural default unwind method");
     }
 
     // We require that eSymbolContextSymbol be successfully filled in or this context is of no use to us.
@@ -140,7 +134,7 @@
 
     AddressRange addr_range;
     m_sym_ctx.GetAddressRange (eSymbolContextFunction | eSymbolContextSymbol, 0, false, addr_range);
-    
+
     static ConstString g_sigtramp_name ("_sigtramp");
     if ((m_sym_ctx.function && m_sym_ctx.function->GetName() == g_sigtramp_name) ||
         (m_sym_ctx.symbol   && m_sym_ctx.symbol->GetName()   == g_sigtramp_name))
@@ -182,8 +176,8 @@
     // We've set m_frame_type and m_sym_ctx before these calls.
 
     m_fast_unwind_plan_sp = GetFastUnwindPlanForFrame ();
-    m_full_unwind_plan_sp = GetFullUnwindPlanForFrame (); 
-    
+    m_full_unwind_plan_sp = GetFullUnwindPlanForFrame ();
+
     UnwindPlan::RowSP active_row;
     int cfa_offset = 0;
     int row_register_kind = -1;
@@ -191,12 +185,12 @@
     {
         active_row = m_full_unwind_plan_sp->GetRowForFunctionOffset (m_current_offset);
         row_register_kind = m_full_unwind_plan_sp->GetRegisterKind ();
+        LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_UNWIND));
         if (active_row.get() && log)
         {
             StreamString active_row_strm;
             active_row->Dump(active_row_strm, m_full_unwind_plan_sp.get(), &m_thread, m_start_pc.GetLoadAddress(exe_ctx.GetTargetPtr()));
-            log->Printf("%*sFrame %u active row: %s",
-                        m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number, active_row_strm.GetString().c_str());
+            UnwindLogMsg ("%s", active_row_strm.GetString().c_str());
         }
     }
 
@@ -206,7 +200,7 @@
         return;
     }
 
-    
+
     addr_t cfa_regval;
     if (!ReadGPRValue (row_register_kind, active_row->GetCFARegister(), cfa_regval))
     {
@@ -220,23 +214,11 @@
 
     m_cfa = cfa_regval + cfa_offset;
 
-    if (log)
-    {
-        log->Printf("%*sFrame %u cfa_regval = 0x%16.16llx (cfa_regval = 0x%16.16llx, cfa_offset = %i)",
-                    m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                    m_cfa, cfa_regval, cfa_offset);
-    }
-    
-    if (log)
-    {
-        log->Printf("%*sThread %d Frame %u initialized frame current pc is 0x%llx cfa is 0x%llx using %s UnwindPlan", 
-                    m_frame_number < 100 ? m_frame_number : 100, "", 
-                    m_thread.GetIndexID(), 
-                    m_frame_number,
-                    (uint64_t) m_current_pc.GetLoadAddress (exe_ctx.GetTargetPtr()), 
-                    (uint64_t) m_cfa,
-                    m_full_unwind_plan_sp->GetSourceName().GetCString());
-    }
+    UnwindLogMsg ("cfa_regval = 0x%16.16llx (cfa_regval = 0x%16.16llx, cfa_offset = %i)", m_cfa, cfa_regval, cfa_offset);
+    UnwindLogMsg ("initialized frame current pc is 0x%llx cfa is 0x%llx using %s UnwindPlan",
+            (uint64_t) m_current_pc.GetLoadAddress (exe_ctx.GetTargetPtr()),
+            (uint64_t) m_cfa,
+            m_full_unwind_plan_sp->GetSourceName().GetCString());
 }
 
 // Initialize a RegisterContextLLDB for the non-zeroth frame -- rely on the RegisterContextLLDB "below" it
@@ -246,13 +228,12 @@
 RegisterContextLLDB::InitializeNonZerothFrame()
 {
     LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_UNWIND));
-
     if (IsFrameZero ())
     {
         m_frame_type = eNotAValidFrame;
         return;
     }
-    
+
     if (!GetNextFrame().get() || !GetNextFrame()->IsValid())
     {
         m_frame_type = eNotAValidFrame;
@@ -267,27 +248,19 @@
     addr_t pc;
     if (!ReadGPRValue (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC, pc))
     {
-        if (log)
-        {
-            log->Printf("%*sFrame %u could not get pc value",
-                        m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number);
-        }
+        UnwindLogMsg ("could not get pc value");
         m_frame_type = eNotAValidFrame;
         return;
     }
-    
+
     if (log)
     {
-        log->Printf("%*sFrame %u pc = 0x%16.16llx",
-                    m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number, pc);
+        UnwindLogMsg ("pc = 0x%16.16llx", pc);
         addr_t reg_val;
         if (ReadGPRValue (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_FP, reg_val))
-            log->Printf("%*sFrame %u fp = 0x%16.16llx",
-                        m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number, reg_val);
-
+            UnwindLogMsg ("fp = 0x%16.16llx", reg_val);
         if (ReadGPRValue (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_SP, reg_val))
-            log->Printf("%*sFrame %u sp = 0x%16.16llx",
-                        m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number, reg_val);
+            UnwindLogMsg ("sp = 0x%16.16llx", reg_val);
     }
 
     // A pc of 0x0 means it's the end of the stack crawl
@@ -296,11 +269,11 @@
         m_frame_type = eNotAValidFrame;
         return;
     }
-    
+
     ExecutionContext exe_ctx(m_thread.shared_from_this());
     Process *process = exe_ctx.GetProcessPtr();
     // Let ABIs fixup code addresses to make sure they are valid. In ARM ABIs
-    // this will strip bit zero in case we read a PC from memory or from the LR.   
+    // this will strip bit zero in case we read a PC from memory or from the LR.
     ABI *abi = process->GetABI().get();
     if (abi)
         pc = abi->FixCodeAddress(pc);
@@ -312,12 +285,8 @@
     ModuleSP pc_module_sp (m_current_pc.GetModule());
     if (!m_current_pc.IsValid() || !pc_module_sp)
     {
-        if (log)
-        {
-            log->Printf("%*sFrame %u using architectural default unwind method",
-                        m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number);
-        }
-        
+        UnwindLogMsg ("using architectural default unwind method");
+
         // Test the pc value to see if we know it's in an unmapped/non-executable region of memory.
         uint32_t permissions;
         if (process->GetLoadAddressPermissions(pc, permissions)
@@ -329,11 +298,8 @@
             // pc and see if we can get any further.
             if (GetNextFrame().get() && GetNextFrame()->IsValid() && GetNextFrame()->IsFrameZero())
             {
-                if (log)
-                {
-                    log->Printf("%*sFrame %u had a pc of 0x%llx which is not in executable memory but on frame 1 -- allowing it once.",
-                                m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number, (uint64_t) pc);
-                }
+                UnwindLogMsg ("had a pc of 0x%llx which is not in executable memory but on frame 1 -- allowing it once.",
+                         (uint64_t) pc);
                 m_frame_type = eSkipFrame;
             }
             else
@@ -365,11 +331,7 @@
                 int cfa_offset = row->GetCFAOffset();
                 if (!ReadGPRValue (row_register_kind, cfa_regnum, cfa_regval))
                 {
-                    if (log)
-                    {
-                        log->Printf("%*sFrame %u failed to get cfa value",
-                                    m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number);
-                    }
+                    UnwindLogMsg ("failed to get cfa value");
                     if (m_frame_type != eSkipFrame)   // don't override eSkipFrame
                     {
                         m_frame_type = eNormalFrame;
@@ -381,11 +343,7 @@
                 // A couple of sanity checks..
                 if (cfa_regval == LLDB_INVALID_ADDRESS || cfa_regval == 0 || cfa_regval == 1)
                 {
-                    if (log)
-                    {
-                        log->Printf("%*sFrame %u could not find a valid cfa address",
-                                    m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number);
-                    }
+                    UnwindLogMsg ("could not find a valid cfa address");
                     m_frame_type = eNotAValidFrame;
                     return;
                 }
@@ -401,21 +359,12 @@
             }
             else
             {
-                if (log)
-                {
-                    log->Printf("%*sFrame %u could not find a row for function offset zero",
-                                m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number);
-                }
+                UnwindLogMsg ("could not find a row for function offset zero");
                 m_frame_type = eNotAValidFrame;
                 return;
             }
 
-            if (log)
-            {
-                log->Printf("%*sFrame %u initialized frame cfa is 0x%llx",
-                            m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                            (uint64_t) m_cfa);
-            }
+            UnwindLogMsg ("initialized frame cfa is 0x%llx", (uint64_t) m_cfa);
             return;
         }
         m_frame_type = eNotAValidFrame;
@@ -456,7 +405,7 @@
     // value is pointing to the next function, e.g. if a function ends with a CALL instruction.
     // FIXME this may need to be an architectural-dependent behavior; if so we'll need to add a member function
     // to the ABI plugin and consult that.
-    if (decr_pc_and_recompute_addr_range) 
+    if (decr_pc_and_recompute_addr_range)
     {
         Address temporary_pc(m_current_pc);
         temporary_pc.SetOffset(m_current_pc.GetOffset() - 1);
@@ -522,11 +471,10 @@
         {
             StreamString active_row_strm;
             active_row->Dump(active_row_strm, m_fast_unwind_plan_sp.get(), &m_thread, m_start_pc.GetLoadAddress(exe_ctx.GetTargetPtr()));
-            log->Printf("%*sFrame %u active row: %s",
-                        m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number, active_row_strm.GetString().c_str());
+            UnwindLogMsg ("active row: %s", active_row_strm.GetString().c_str());
         }
     }
-    else 
+    else
     {
         m_full_unwind_plan_sp = GetFullUnwindPlanForFrame ();
         if (m_full_unwind_plan_sp && m_full_unwind_plan_sp->PlanValidAtAddress (m_current_pc))
@@ -537,8 +485,7 @@
             {
                 StreamString active_row_strm;
                 active_row->Dump(active_row_strm, m_full_unwind_plan_sp.get(), &m_thread, m_start_pc.GetLoadAddress(exe_ctx.GetTargetPtr()));
-                log->Printf("%*sFrame %u active row: %s",
-                            m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number, active_row_strm.GetString().c_str());
+                UnwindLogMsg ("active row: %s", active_row_strm.GetString().c_str());
             }
         }
     }
@@ -552,12 +499,7 @@
     addr_t cfa_regval;
     if (!ReadGPRValue (row_register_kind, active_row->GetCFARegister(), cfa_regval))
     {
-        if (log)
-        {
-            log->Printf("%*sFrame %u failed to get cfa reg %d/%d",
-                        m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                        row_register_kind, active_row->GetCFARegister());
-        }
+        UnwindLogMsg ("failed to get cfa reg %d/%d", row_register_kind, active_row->GetCFARegister());
         m_frame_type = eNotAValidFrame;
         return;
     }
@@ -565,21 +507,12 @@
 
     m_cfa = cfa_regval + cfa_offset;
 
-    if (log)
-    {
-        log->Printf("%*sFrame %u cfa_regval = 0x%16.16llx (cfa_regval = 0x%16.16llx, cfa_offset = %i)",
-                    m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                    m_cfa, cfa_regval, cfa_offset);
-    }
+    UnwindLogMsg ("cfa_regval = 0x%16.16llx (cfa_regval = 0x%16.16llx, cfa_offset = %i)", m_cfa, cfa_regval, cfa_offset);
 
     // A couple of sanity checks..
     if (cfa_regval == LLDB_INVALID_ADDRESS || cfa_regval == 0 || cfa_regval == 1)
-    { 
-        if (log)
-        {
-            log->Printf("%*sFrame %u could not find a valid cfa address",
-                        m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number);
-        }
+    {
+        UnwindLogMsg ("could not find a valid cfa address");
         m_frame_type = eNotAValidFrame;
         return;
     }
@@ -606,22 +539,14 @@
         }
         if (repeating_frames && abi->FunctionCallsChangeCFA())
         {
-            if (log)
-            {
-                log->Printf("%*sFrame %u same CFA address as next frame, assuming the unwind is looping - stopping",
-                            m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number);
-            }
+            UnwindLogMsg ("same CFA address as next frame, assuming the unwind is looping - stopping");
             m_frame_type = eNotAValidFrame;
             return;
         }
     }
 
-    if (log)
-    {
-        log->Printf("%*sFrame %u initialized frame current pc is 0x%llx cfa is 0x%llx", 
-                    m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                    (uint64_t) m_current_pc.GetLoadAddress (exe_ctx.GetTargetPtr()), (uint64_t) m_cfa);
-    }
+    UnwindLogMsg ("initialized frame current pc is 0x%llx cfa is 0x%llx",
+            (uint64_t) m_current_pc.GetLoadAddress (exe_ctx.GetTargetPtr()), (uint64_t) m_cfa);
 }
 
 
@@ -634,9 +559,9 @@
 
 // Find a fast unwind plan for this frame, if possible.
 //
-// On entry to this method, 
+// On entry to this method,
 //
-//   1. m_frame_type should already be set to eSigtrampFrame/eDebuggerFrame if either of those are correct, 
+//   1. m_frame_type should already be set to eSigtrampFrame/eDebuggerFrame if either of those are correct,
 //   2. m_sym_ctx should already be filled in, and
 //   3. m_current_pc should have the current pc value for this frame
 //   4. m_current_offset_backed_up_one should have the current byte offset into the function, maybe backed up by 1, -1 if unknown
@@ -657,7 +582,7 @@
     if (!func_unwinders_sp)
         return unwind_plan_sp;
 
-    // If we're in _sigtramp(), unwinding past this frame requires special knowledge.  
+    // If we're in _sigtramp(), unwinding past this frame requires special knowledge.
     if (m_frame_type == eSigtrampFrame || m_frame_type == eDebuggerFrame)
         return unwind_plan_sp;
 
@@ -669,16 +594,15 @@
             LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_UNWIND));
             if (log && log->GetVerbose())
             {
-                const char *has_fast = "";
                 if (m_fast_unwind_plan_sp)
-                    has_fast = ", and has a fast UnwindPlan";
-                log->Printf("%*sFrame %u frame%s",
-                            m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number, has_fast);
+                    UnwindLogMsgVerbose ("frame, and has a fast UnwindPlan");
+                else
+                    UnwindLogMsgVerbose ("frame");
             }
             m_frame_type = eNormalFrame;
             return unwind_plan_sp;
         }
-        else 
+        else
         {
             unwind_plan_sp.reset();
         }
@@ -686,9 +610,9 @@
     return unwind_plan_sp;
 }
 
-// On entry to this method, 
+// On entry to this method,
 //
-//   1. m_frame_type should already be set to eSigtrampFrame/eDebuggerFrame if either of those are correct, 
+//   1. m_frame_type should already be set to eSigtrampFrame/eDebuggerFrame if either of those are correct,
 //   2. m_sym_ctx should already be filled in, and
 //   3. m_current_pc should have the current pc value for this frame
 //   4. m_current_offset_backed_up_one should have the current byte offset into the function, maybe backed up by 1, -1 if unknown
@@ -697,7 +621,6 @@
 RegisterContextLLDB::GetFullUnwindPlanForFrame ()
 {
     UnwindPlanSP unwind_plan_sp;
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_UNWIND));
     UnwindPlanSP arch_default_unwind_plan_sp;
     ExecutionContext exe_ctx(m_thread.shared_from_this());
     Process *process = exe_ctx.GetProcessPtr();
@@ -709,12 +632,12 @@
     }
 
     bool behaves_like_zeroth_frame = false;
-    if (IsFrameZero () 
+    if (IsFrameZero ()
         || GetNextFrame()->m_frame_type == eSigtrampFrame
         || GetNextFrame()->m_frame_type == eDebuggerFrame)
     {
         behaves_like_zeroth_frame = true;
-        // If this frame behaves like a 0th frame (currently executing or 
+        // If this frame behaves like a 0th frame (currently executing or
         // interrupted asynchronously), all registers can be retrieved.
         m_all_registers_available = true;
     }
@@ -723,7 +646,7 @@
     // in the zeroth frame, we need to use the "unwind at first instruction" arch default UnwindPlan
     // Also, if this Process can report on memory region attributes, any non-executable region means
     // we jumped through a bad function pointer - handle the same way as 0x0.
-    // Note, if the symbol context has a function for the symbol, then we don't need to do this check. 
+    // Note, if the symbol context has a function for the symbol, then we don't need to do this check.
 
     if ((!m_sym_ctx_valid  || m_sym_ctx.function == NULL) && behaves_like_zeroth_frame && m_current_pc.IsValid())
     {
@@ -784,12 +707,8 @@
         unwind_plan_sp = func_unwinders_sp->GetUnwindPlanAtCallSite (m_current_offset_backed_up_one);
         if (unwind_plan_sp && unwind_plan_sp->PlanValidAtAddress (m_current_pc))
         {
-            if (log && log->GetVerbose())
-            {
-                log->Printf("%*sFrame %u frame uses %s for full UnwindPlan because the DynamicLoader suggested we prefer it",
-                            m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                            unwind_plan_sp->GetSourceName().GetCString());
-            }
+            UnwindLogMsgVerbose ("frame uses %s for full UnwindPlan because the DynamicLoader suggested we prefer it",
+                           unwind_plan_sp->GetSourceName().GetCString());
             return unwind_plan_sp;
         }
     }
@@ -800,12 +719,7 @@
         unwind_plan_sp = func_unwinders_sp->GetUnwindPlanAtNonCallSite (m_thread);
         if (unwind_plan_sp && unwind_plan_sp->PlanValidAtAddress (m_current_pc))
         {
-            if (log && log->GetVerbose())
-            {
-                log->Printf("%*sFrame %u frame uses %s for full UnwindPlan",
-                            m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                            unwind_plan_sp->GetSourceName().GetCString());
-            }
+            UnwindLogMsgVerbose ("frame uses %s for full UnwindPlan", unwind_plan_sp->GetSourceName().GetCString());
             return unwind_plan_sp;
         }
     }
@@ -814,36 +728,21 @@
     unwind_plan_sp = func_unwinders_sp->GetUnwindPlanAtCallSite (m_current_offset_backed_up_one);
     if (unwind_plan_sp && unwind_plan_sp->PlanValidAtAddress (m_current_pc))
     {
-        if (log && log->GetVerbose())
-        {
-            log->Printf("%*sFrame %u frame uses %s for full UnwindPlan",
-                        m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                        unwind_plan_sp->GetSourceName().GetCString());
-        }
+        UnwindLogMsgVerbose ("frame uses %s for full UnwindPlan", unwind_plan_sp->GetSourceName().GetCString());
         return unwind_plan_sp;
     }
-    
+
     // We'd prefer to use an UnwindPlan intended for call sites when we're at a call site but if we've
     // struck out on that, fall back to using the non-call-site assembly inspection UnwindPlan if possible.
     unwind_plan_sp = func_unwinders_sp->GetUnwindPlanAtNonCallSite (m_thread);
     if (unwind_plan_sp && unwind_plan_sp->PlanValidAtAddress (m_current_pc))
     {
-        if (log && log->GetVerbose())
-        {
-            log->Printf("%*sFrame %u frame uses %s for full UnwindPlan",
-                        m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                        unwind_plan_sp->GetSourceName().GetCString());
-        }
+        UnwindLogMsgVerbose ("frame uses %s for full UnwindPlan", unwind_plan_sp->GetSourceName().GetCString());
         return unwind_plan_sp;
     }
 
     // If nothing else, use the architectural default UnwindPlan and hope that does the job.
-    if (log && log->GetVerbose())
-    {
-        log->Printf("%*sFrame %u frame uses %s for full UnwindPlan",
-                    m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                    arch_default_unwind_plan_sp->GetSourceName().GetCString());
-    }
+    UnwindLogMsgVerbose ("frame uses %s for full UnwindPlan", arch_default_unwind_plan_sp->GetSourceName().GetCString());
     return arch_default_unwind_plan_sp;
 }
 
@@ -885,7 +784,7 @@
 }
 
 bool
-RegisterContextLLDB::ReadRegisterValueFromRegisterLocation (lldb_private::UnwindLLDB::RegisterLocation regloc, 
+RegisterContextLLDB::ReadRegisterValueFromRegisterLocation (lldb_private::UnwindLLDB::RegisterLocation regloc,
                                                             const RegisterInfo *reg_info,
                                                             RegisterValue &value)
 {
@@ -898,11 +797,11 @@
     case UnwindLLDB::RegisterLocation::eRegisterInRegister:
         {
             const RegisterInfo *other_reg_info = GetRegisterInfoAtIndex(regloc.location.register_number);
-            
+
             if (!other_reg_info)
                 return false;
-            
-            if (IsFrameZero ()) 
+
+            if (IsFrameZero ())
             {
                 success = m_thread.GetRegisterContext()->ReadRegister (other_reg_info, value);
             }
@@ -915,7 +814,7 @@
     case UnwindLLDB::RegisterLocation::eRegisterValueInferred:
         success = value.SetUInt (regloc.location.inferred_value, reg_info->byte_size);
         break;
-            
+
     case UnwindLLDB::RegisterLocation::eRegisterNotSaved:
         break;
     case UnwindLLDB::RegisterLocation::eRegisterSavedAtHostMemoryLocation:
@@ -923,9 +822,9 @@
         break;
     case UnwindLLDB::RegisterLocation::eRegisterSavedAtMemoryLocation:
         {
-            Error error (ReadRegisterValueFromMemory(reg_info, 
-                                                     regloc.location.target_memory_location, 
-                                                     reg_info->byte_size, 
+            Error error (ReadRegisterValueFromMemory(reg_info,
+                                                     regloc.location.target_memory_location,
+                                                     reg_info->byte_size,
                                                      value));
             success = error.Success();
         }
@@ -938,7 +837,7 @@
 }
 
 bool
-RegisterContextLLDB::WriteRegisterValueToRegisterLocation (lldb_private::UnwindLLDB::RegisterLocation regloc, 
+RegisterContextLLDB::WriteRegisterValueToRegisterLocation (lldb_private::UnwindLLDB::RegisterLocation regloc,
                                                            const RegisterInfo *reg_info,
                                                            const RegisterValue &value)
 {
@@ -946,13 +845,13 @@
         return false;
 
     bool success = false;
-    
+
     switch (regloc.type)
     {
         case UnwindLLDB::RegisterLocation::eRegisterInRegister:
             {
                 const RegisterInfo *other_reg_info = GetRegisterInfoAtIndex(regloc.location.register_number);
-                if (IsFrameZero ()) 
+                if (IsFrameZero ())
                 {
                     success = m_thread.GetRegisterContext()->WriteRegister (other_reg_info, value);
                 }
@@ -970,9 +869,9 @@
             break;
         case UnwindLLDB::RegisterLocation::eRegisterSavedAtMemoryLocation:
             {
-                Error error (WriteRegisterValueToMemory (reg_info, 
-                                                         regloc.location.target_memory_location, 
-                                                         reg_info->byte_size, 
+                Error error (WriteRegisterValueToMemory (reg_info,
+                                                         regloc.location.target_memory_location,
+                                                         reg_info->byte_size,
                                                          value));
                 success = error.Success();
             }
@@ -994,7 +893,7 @@
 // A skip frame is a bogus frame on the stack -- but one where we're likely to find a real frame farther
 // up the stack if we keep looking.  It's always the second frame in an unwind (i.e. the first frame after
 // frame zero) where unwinding can be the trickiest.  Ideally we'll mark up this frame in some way so the
-// user knows we're displaying bad data and we may have skipped one frame of their real program in the 
+// user knows we're displaying bad data and we may have skipped one frame of their real program in the
 // process of getting back on track.
 
 bool
@@ -1006,10 +905,8 @@
 // Answer the question: Where did THIS frame save the CALLER frame ("previous" frame)'s register value?
 
 bool
-RegisterContextLLDB::SavedLocationForRegister (uint32_t lldb_regnum, lldb_private::UnwindLLDB::RegisterLocation &regloc, bool check_next_frame)
+RegisterContextLLDB::SavedLocationForRegister (uint32_t lldb_regnum, lldb_private::UnwindLLDB::RegisterLocation &regloc)
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_UNWIND));
-
     // Have we already found this register location?
     if (!m_registers.empty())
     {
@@ -1022,11 +919,19 @@
         }
     }
 
+    static uint32_t sp_regnum = LLDB_INVALID_REGNUM;
+    static uint32_t pc_regnum = LLDB_INVALID_REGNUM;
+    static bool generic_registers_initialized = false;
+    if (!generic_registers_initialized)
+    {
+        m_thread.GetRegisterContext()->ConvertBetweenRegisterKinds (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_SP, eRegisterKindLLDB, sp_regnum);
+        m_thread.GetRegisterContext()->ConvertBetweenRegisterKinds (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC, eRegisterKindLLDB, pc_regnum);
+        generic_registers_initialized = true;
+    }
+
     // Are we looking for the CALLER's stack pointer?  The stack pointer is defined to be the same as THIS frame's
     // CFA so just return the CFA value.  This is true on x86-32/x86-64 at least.
-    uint32_t sp_regnum;
-    if (m_thread.GetRegisterContext()->ConvertBetweenRegisterKinds (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_SP, eRegisterKindLLDB, sp_regnum)
-        && sp_regnum == lldb_regnum)
+    if (sp_regnum != LLDB_INVALID_REGNUM && sp_regnum == lldb_regnum)
     {
         // make sure we won't lose precision copying an addr_t (m_cfa) into a uint64_t (.inferred_value)
         assert (sizeof (addr_t) <= sizeof (uint64_t));
@@ -1036,12 +941,6 @@
         return true;
     }
 
-    uint32_t pc_regnum;
-    if (!m_thread.GetRegisterContext()->ConvertBetweenRegisterKinds (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC, eRegisterKindLLDB, pc_regnum))
-    {
-        pc_regnum = LLDB_INVALID_REGNUM;
-    }
-
     // Look through the available UnwindPlans for the register location.
 
     UnwindPlan::Row::RegisterLocation unwindplan_regloc;
@@ -1055,22 +954,13 @@
         uint32_t row_regnum;
         if (!m_thread.GetRegisterContext()->ConvertBetweenRegisterKinds (eRegisterKindLLDB, lldb_regnum, unwindplan_registerkind, row_regnum))
         {
-            if (log)
-            {
-                log->Printf("%*sFrame %u could not convert lldb regnum %d into %d RegisterKind reg numbering scheme",
-                            m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                            lldb_regnum, (int) unwindplan_registerkind);
-            }
+            UnwindLogMsg ("could not convert lldb regnum %d into %d RegisterKind reg numbering scheme",
+                    lldb_regnum, (int) unwindplan_registerkind);
             return false;
         }
         if (active_row->GetRegisterInfo (row_regnum, unwindplan_regloc))
         {
-            if (log)
-            {
-                log->Printf("%*sFrame %u supplying caller's saved reg %d's location using FastUnwindPlan",
-                            m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                            lldb_regnum);
-            }
+            UnwindLogMsg ("supplying caller's saved reg %d's location using FastUnwindPlan", lldb_regnum);
             have_unwindplan_regloc = true;
         }
     }
@@ -1092,27 +982,18 @@
             if (lldb_regnum == pc_regnum && m_full_unwind_plan_sp->GetReturnAddressRegister() != LLDB_INVALID_REGNUM)
             {
                row_regnum = m_full_unwind_plan_sp->GetReturnAddressRegister();
-               if (log)
-               {
-                   log->Printf("%*sFrame %u requested caller's saved PC but this UnwindPlan uses a RA reg; getting reg %d instead",
-                               m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number, row_regnum);
-               }
+               UnwindLogMsg ("requested caller's saved PC but this UnwindPlan uses a RA reg; getting reg %d instead",
+                       row_regnum);
             }
             else
             {
                 if (!m_thread.GetRegisterContext()->ConvertBetweenRegisterKinds (eRegisterKindLLDB, lldb_regnum, unwindplan_registerkind, row_regnum))
                 {
-                    if (log)
-                    {
-                        if (unwindplan_registerkind == eRegisterKindGeneric)
-                            log->Printf("%*sFrame %u could not convert lldb regnum %d into eRegisterKindGeneric reg numbering scheme",
-                                        m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                                        lldb_regnum);
-                        else
-                            log->Printf("%*sFrame %u could not convert lldb regnum %d into %d RegisterKind reg numbering scheme",
-                                        m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                                        lldb_regnum, (int) unwindplan_registerkind);
-                    }
+                    if (unwindplan_registerkind == eRegisterKindGeneric)
+                        UnwindLogMsg ("could not convert lldb regnum %d into eRegisterKindGeneric reg numbering scheme", lldb_regnum);
+                    else
+                        UnwindLogMsg ("could not convert lldb regnum %d into %d RegisterKind reg numbering scheme",
+                                lldb_regnum, (int) unwindplan_registerkind);
                     return false;
                 }
             }
@@ -1120,22 +1001,62 @@
             if (active_row->GetRegisterInfo (row_regnum, unwindplan_regloc))
             {
                 have_unwindplan_regloc = true;
-                if (log)
-                {                
-                    log->Printf("%*sFrame %u supplying caller's saved reg %d's location using %s UnwindPlan",
-                                m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                                lldb_regnum, m_full_unwind_plan_sp->GetSourceName().GetCString());
+                UnwindLogMsg ("supplying caller's saved reg %d's location using %s UnwindPlan", lldb_regnum,
+                              m_full_unwind_plan_sp->GetSourceName().GetCString());
+            }
+
+            // If this architecture stores the return address in a register (it defines a Return Address register)
+            // and we're on a non-zero stack frame and the Full UnwindPlan says that the pc is stored in the
+            // RA registers (e.g. lr on arm), then we know that the full unwindplan is not trustworthy -- this
+            // is an impossible situation and the instruction emulation code has likely been misled.  
+            // If this stack frame meets those criteria, we need to throw away the Full UnwindPlan that the 
+            // instruction emulation came up with and fall back to the architecture's Default UnwindPlan so
+            // the stack walk can get past this point.
+
+            // Special note:  If the Full UnwindPlan was generated from the compiler, don't second-guess it 
+            // when we're at a call site location.
+
+            // arch_default_ra_regnum is the return address register # in the Full UnwindPlan register numbering
+            uint32_t arch_default_ra_regnum = LLDB_INVALID_REGNUM; 
+            if (m_thread.GetRegisterContext()->ConvertBetweenRegisterKinds (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_RA, unwindplan_registerkind, arch_default_ra_regnum)
+                && arch_default_ra_regnum != LLDB_INVALID_REGNUM
+                && pc_regnum != LLDB_INVALID_REGNUM
+                && pc_regnum == lldb_regnum
+                && unwindplan_regloc.IsInOtherRegister()
+                && unwindplan_regloc.GetRegisterNumber() == arch_default_ra_regnum
+                && m_full_unwind_plan_sp->GetSourcedFromCompiler() != eLazyBoolYes
+                && !m_all_registers_available)
+            {
+                UnwindLogMsg ("%s UnwindPlan tried to restore the pc from the link register but this is a non-zero frame",
+                              m_full_unwind_plan_sp->GetSourceName().GetCString());
+
+                // Throw away the full unwindplan; install the arch default unwindplan
+                InvalidateFullUnwindPlan();
+
+                // Now re-fetch the pc value we're searching for
+                uint32_t arch_default_pc_reg = LLDB_INVALID_REGNUM;
+                UnwindPlan::RowSP active_row = m_full_unwind_plan_sp->GetRowForFunctionOffset (m_current_offset);
+                if (m_thread.GetRegisterContext()->ConvertBetweenRegisterKinds (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC, m_full_unwind_plan_sp->GetRegisterKind(), arch_default_pc_reg)
+                    && arch_default_pc_reg != LLDB_INVALID_REGNUM
+                    && active_row
+                    && active_row->GetRegisterInfo (arch_default_pc_reg, unwindplan_regloc))
+                {
+                    have_unwindplan_regloc = true;
+                }
+                else
+                {
+                    have_unwindplan_regloc = false;
                 }
             }
         }
     }
-    
-    
+
+
     ExecutionContext exe_ctx(m_thread.shared_from_this());
     Process *process = exe_ctx.GetProcessPtr();
     if (have_unwindplan_regloc == false)
     {
-        // If a volatile register is being requested, we don't want to forward the next frame's register contents 
+        // If a volatile register is being requested, we don't want to forward the next frame's register contents
         // up the stack -- the register is not retrievable at this frame.
         ABI *abi = process ? process->GetABI().get() : NULL;
         if (abi)
@@ -1143,14 +1064,9 @@
             const RegisterInfo *reg_info = GetRegisterInfoAtIndex(lldb_regnum);
             if (reg_info && abi->RegisterIsVolatile (reg_info))
             {
-                if (log && log->GetVerbose ())
-                {
-                    log->Printf("%*sFrame %u did not supply reg location for %d because it is volatile",
-                                m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                                lldb_regnum);
-                }
+                UnwindLogMsg ("did not supply reg location for %d because it is volatile", lldb_regnum);
                 return false;
-            }  
+            }
         }
 
         if (IsFrameZero ())
@@ -1164,16 +1080,7 @@
             return true;
         }
         else
-        {
-            if (check_next_frame)
-                return m_parent_unwind.SearchForSavedLocationForRegister (lldb_regnum, regloc, m_frame_number - 1);
-        }
-        if (log)
-        {
-            log->Printf("%*sFrame %u could not supply caller's reg %d location",
-                        m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                        lldb_regnum);
-        }
+        UnwindLogMsg ("could not supply caller's reg %d location", lldb_regnum);
         return false;
     }
 
@@ -1183,12 +1090,7 @@
         lldb_private::UnwindLLDB::RegisterLocation new_regloc;
         new_regloc.type = UnwindLLDB::RegisterLocation::eRegisterNotSaved;
         m_registers[lldb_regnum] = new_regloc;
-        if (log)
-        {
-            log->Printf("%*sFrame %u could not supply caller's reg %d location",
-                        m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                        lldb_regnum);
-        }
+        UnwindLogMsg ("could not supply caller's reg %d location", lldb_regnum);
         return false;
     }
 
@@ -1196,20 +1098,12 @@
     {
         if (IsFrameZero ())
         {
-            if (log)
-            {
-                log->Printf("%*sFrame %u could not supply caller's reg %d location",
-                            m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                            lldb_regnum);
-            }
+            UnwindLogMsg ("could not supply caller's reg %d location", lldb_regnum);
             return false;
         }
         else
         {
-            if (check_next_frame)
-                return m_parent_unwind.SearchForSavedLocationForRegister (lldb_regnum, regloc, m_frame_number - 1);
-            else
-                return false;
+            return false;
         }
     }
 
@@ -1237,12 +1131,7 @@
         uint32_t row_regnum_in_lldb;
         if (!m_thread.GetRegisterContext()->ConvertBetweenRegisterKinds (unwindplan_registerkind, unwindplan_regnum, eRegisterKindLLDB, row_regnum_in_lldb))
         {
-            if (log)
-            {
-                log->Printf("%*sFrame %u could not supply caller's reg %d location",
-                            m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                            lldb_regnum);
-            }
+            UnwindLogMsg ("could not supply caller's reg %d location", lldb_regnum);
             return false;
         }
         regloc.type = UnwindLLDB::RegisterLocation::eRegisterInRegister;
@@ -1253,8 +1142,8 @@
 
     if (unwindplan_regloc.IsDWARFExpression() || unwindplan_regloc.IsAtDWARFExpression())
     {
-        DataExtractor dwarfdata (unwindplan_regloc.GetDWARFExpressionBytes(), 
-                                 unwindplan_regloc.GetDWARFExpressionLength(), 
+        DataExtractor dwarfdata (unwindplan_regloc.GetDWARFExpressionBytes(),
+                                 unwindplan_regloc.GetDWARFExpressionLength(),
                                  process->GetByteOrder(), process->GetAddressByteSize());
         DWARFExpression dwarfexpr (dwarfdata, 0, unwindplan_regloc.GetDWARFExpressionLength());
         dwarfexpr.SetRegisterKind (unwindplan_registerkind);
@@ -1279,28 +1168,69 @@
                return true;
             }
         }
-        if (log)
-        {
-            log->Printf("%*sFrame %u tried to use IsDWARFExpression or IsAtDWARFExpression for reg %d but failed",
-                        m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                        lldb_regnum);
-        }
+        UnwindLogMsg ("tried to use IsDWARFExpression or IsAtDWARFExpression for reg %d but failed", lldb_regnum);
         return false;
     }
 
-    if (log)
-    {
-        log->Printf("%*sFrame %u could not supply caller's reg %d location",
-                    m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                    lldb_regnum);
-    }
+    UnwindLogMsg ("could not supply caller's reg %d location", lldb_regnum);
+
+    // FIXME UnwindPlan::Row types atDWARFExpression and isDWARFExpression are unsupported.
 
-    
-    // assert ("UnwindPlan::Row types atDWARFExpression and isDWARFExpression are unsupported.");
     return false;
 }
 
-// Retrieve a general purpose register value for THIS from, as saved by the NEXT frame, i.e. the frame that
+// If the Full unwindplan has been determined to be incorrect, this method will
+// replace it with the architecture's default unwindplna, if one is defined.
+// It will also find the FuncUnwinders object for this function and replace the
+// Full unwind method for the function there so we don't use the errant Full unwindplan
+// again in the future of this debug session.
+// We're most likely doing this because the Full unwindplan was generated by assembly
+// instruction profiling and the profiler got something wrong.
+
+void
+RegisterContextLLDB::InvalidateFullUnwindPlan ()
+{
+    UnwindPlan::Row::RegisterLocation unwindplan_regloc;
+    ExecutionContext exe_ctx (m_thread.shared_from_this());
+    Process *process = exe_ctx.GetProcessPtr();
+    ABI *abi = process ? process->GetABI().get() : NULL;
+    if (abi)
+    {
+        UnwindPlanSP original_full_unwind_plan_sp = m_full_unwind_plan_sp;
+        UnwindPlanSP arch_default_unwind_plan_sp;
+        arch_default_unwind_plan_sp.reset (new UnwindPlan (lldb::eRegisterKindGeneric));
+        abi->CreateDefaultUnwindPlan(*arch_default_unwind_plan_sp);
+        if (arch_default_unwind_plan_sp)
+        {
+            UnwindPlan::RowSP active_row = arch_default_unwind_plan_sp->GetRowForFunctionOffset (m_current_offset);
+        
+            if (active_row && active_row->GetCFARegister() != LLDB_INVALID_REGNUM)
+            {
+                FuncUnwindersSP func_unwinders_sp;
+                if (m_sym_ctx_valid && m_current_pc.IsValid() && m_current_pc.GetModule())
+                {
+                    func_unwinders_sp = m_current_pc.GetModule()->GetObjectFile()->GetUnwindTable().GetFuncUnwindersContainingAddress (m_current_pc, m_sym_ctx);
+                    if (func_unwinders_sp)
+                    {
+                        func_unwinders_sp->InvalidateNonCallSiteUnwindPlan (m_thread);
+                    }
+                }
+                m_registers.clear();
+                m_full_unwind_plan_sp = arch_default_unwind_plan_sp;
+                addr_t cfa_regval;
+                if (ReadGPRValue (arch_default_unwind_plan_sp->GetRegisterKind(), active_row->GetCFARegister(), cfa_regval))
+                {
+                    m_cfa = cfa_regval + active_row->GetCFAOffset ();
+                }
+
+                UnwindLogMsg ("full unwind plan '%s' has been replaced by architecture default unwind plan '%s' for this function from now on.",
+                              original_full_unwind_plan_sp->GetSourceName().GetCString(), arch_default_unwind_plan_sp->GetSourceName().GetCString());
+            }
+        }
+    }
+}
+
+// Retrieve a general purpose register value for THIS frame, as saved by the NEXT frame, i.e. the frame that
 // this frame called.  e.g.
 //
 //  foo () { }
@@ -1343,8 +1273,21 @@
         return false;
     }
 
+    bool pc_or_return_address = false;
+    uint32_t generic_regnum;
+    if (register_kind == eRegisterKindGeneric
+        && (regnum == LLDB_REGNUM_GENERIC_PC || regnum == LLDB_REGNUM_GENERIC_RA))
+    {
+        pc_or_return_address = true;
+    }
+    else if (m_thread.GetRegisterContext()->ConvertBetweenRegisterKinds (register_kind, regnum, eRegisterKindGeneric, generic_regnum)
+             && (generic_regnum == LLDB_REGNUM_GENERIC_PC || generic_regnum == LLDB_REGNUM_GENERIC_RA))
+    {
+        pc_or_return_address = true;
+    }
+
     lldb_private::UnwindLLDB::RegisterLocation regloc;
-    if (!m_parent_unwind.SearchForSavedLocationForRegister (lldb_regnum, regloc, m_frame_number - 1))
+    if (!m_parent_unwind.SearchForSavedLocationForRegister (lldb_regnum, regloc, m_frame_number - 1, pc_or_return_address))
     {
         return false;
     }
@@ -1361,33 +1304,22 @@
 bool
 RegisterContextLLDB::ReadRegister (const RegisterInfo *reg_info, RegisterValue &value)
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_UNWIND));
     if (!IsValid())
         return false;
 
     const uint32_t lldb_regnum = reg_info->kinds[eRegisterKindLLDB];
-    if (log && log->GetVerbose ())
-    {
-        log->Printf("%*sFrame %u looking for register saved location for reg %d",
-                    m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                    lldb_regnum);
-    }
+    UnwindLogMsgVerbose ("looking for register saved location for reg %d", lldb_regnum);
 
     // If this is the 0th frame, hand this over to the live register context
     if (IsFrameZero ())
     {
-        if (log && log->GetVerbose ())
-        {
-            log->Printf("%*sFrame %u passing along to the live register context for reg %d",
-                        m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                        lldb_regnum);
-        }
+        UnwindLogMsgVerbose ("passing along to the live register context for reg %d", lldb_regnum);
         return m_thread.GetRegisterContext()->ReadRegister (reg_info, value);
     }
 
     lldb_private::UnwindLLDB::RegisterLocation regloc;
     // Find out where the NEXT frame saved THIS frame's register contents
-    if (!m_parent_unwind.SearchForSavedLocationForRegister (lldb_regnum, regloc, m_frame_number - 1))
+    if (!m_parent_unwind.SearchForSavedLocationForRegister (lldb_regnum, regloc, m_frame_number - 1, false))
         return false;
 
     return ReadRegisterValueFromRegisterLocation (regloc, reg_info, value);
@@ -1396,33 +1328,22 @@
 bool
 RegisterContextLLDB::WriteRegister (const RegisterInfo *reg_info, const RegisterValue &value)
 {
-    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_UNWIND));
     if (!IsValid())
         return false;
 
     const uint32_t lldb_regnum = reg_info->kinds[eRegisterKindLLDB];
-    if (log && log->GetVerbose ())
-    {
-        log->Printf("%*sFrame %u looking for register saved location for reg %d",
-                    m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                    lldb_regnum);
-    }
+    UnwindLogMsgVerbose ("looking for register saved location for reg %d", lldb_regnum);
 
     // If this is the 0th frame, hand this over to the live register context
     if (IsFrameZero ())
     {
-        if (log && log->GetVerbose ())
-        {
-            log->Printf("%*sFrame %u passing along to the live register context for reg %d",
-                        m_frame_number < 100 ? m_frame_number : 100, "", m_frame_number,
-                        lldb_regnum);
-        }
+        UnwindLogMsgVerbose ("passing along to the live register context for reg %d", lldb_regnum);
         return m_thread.GetRegisterContext()->WriteRegister (reg_info, value);
     }
 
     lldb_private::UnwindLLDB::RegisterLocation regloc;
     // Find out where the NEXT frame saved THIS frame's register contents
-    if (!m_parent_unwind.SearchForSavedLocationForRegister (lldb_regnum, regloc, m_frame_number - 1))
+    if (!m_parent_unwind.SearchForSavedLocationForRegister (lldb_regnum, regloc, m_frame_number - 1, false))
         return false;
 
     return WriteRegisterValueToRegisterLocation (regloc, reg_info, value);
@@ -1486,7 +1407,7 @@
 
     if (!m_start_pc.IsValid())
     {
-        return ReadPC (start_pc); 
+        return ReadPC (start_pc);
     }
     start_pc = m_start_pc.GetLoadAddress (CalculateTarget().get());
     return true;
@@ -1507,12 +1428,12 @@
         // occur if code has jumped through a NULL pointer -- we want to be able to unwind past that frame to help
         // find the bug.
 
-        if (m_all_registers_available == false 
+        if (m_all_registers_available == false
             && (pc == 0 || pc == 1))
         {
             return false;
         }
-        else 
+        else
         {
             return true;
         }
@@ -1522,3 +1443,57 @@
         return false;
     }
 }
+
+
+void
+RegisterContextLLDB::UnwindLogMsg (const char *fmt, ...)
+{
+    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_UNWIND));
+    if (log)
+    {
+        va_list args;
+        va_start (args, fmt);
+
+        char *logmsg;
+        if (vasprintf (&logmsg, fmt, args) == -1 || logmsg == NULL)
+        {
+            if (logmsg)
+                free (logmsg);
+            va_end (args);
+            return;
+        }
+        va_end (args);
+
+        log->Printf ("%*sth%d/fr%u %s",
+                      m_frame_number < 100 ? m_frame_number : 100, "", m_thread.GetIndexID(), m_frame_number,
+                      logmsg);
+        free (logmsg);
+    }
+}
+
+void
+RegisterContextLLDB::UnwindLogMsgVerbose (const char *fmt, ...)
+{
+    LogSP log(GetLogIfAllCategoriesSet (LIBLLDB_LOG_UNWIND));
+    if (log && log->GetVerbose())
+    {
+        va_list args;
+        va_start (args, fmt);
+
+        char *logmsg;
+        if (vasprintf (&logmsg, fmt, args) == -1 || logmsg == NULL)
+        {
+            if (logmsg)
+                free (logmsg);
+            va_end (args);
+            return;
+        }
+        va_end (args);
+
+        log->Printf ("%*sth%d/fr%u %s",
+                      m_frame_number < 100 ? m_frame_number : 100, "", m_thread.GetIndexID(), m_frame_number,
+                      logmsg);
+        free (logmsg);
+    }
+}
+

Modified: lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextLLDB.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextLLDB.h?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextLLDB.h (original)
+++ lldb/branches/windows/source/Plugins/Process/Utility/RegisterContextLLDB.h Thu Nov  1 02:04:04 2012
@@ -59,7 +59,7 @@
 
     virtual bool
     WriteRegister (const lldb_private::RegisterInfo *reg_info, const lldb_private::RegisterValue &value);
-    
+
     virtual bool
     ReadAllRegisterValues (lldb::DataBufferSP &data_sp);
 
@@ -96,14 +96,14 @@
     friend class UnwindLLDB;
 
     // Indicates whether this frame is frame zero -- the currently
-    // executing frame -- or not.  
+    // executing frame -- or not.
     bool
     IsFrameZero () const;
 
-    void 
+    void
     InitializeZerothFrame ();
 
-    void 
+    void
     InitializeNonZerothFrame();
 
     SharedPtr
@@ -112,7 +112,7 @@
     SharedPtr
     GetPrevFrame () const;
 
-    // A SkipFrame occurs when the unwind out of frame 0 didn't go right -- we've got one bogus frame at frame #1.  
+    // A SkipFrame occurs when the unwind out of frame 0 didn't go right -- we've got one bogus frame at frame #1.
     // There is a good chance we'll get back on track if we follow the frame pointer chain (or whatever is appropriate
     // on this ABI) so we allow one invalid frame to be in the stack.  Ideally we'll mark this frame specially at some
     // point and indicate to the user that the unwinder had a hiccup.  Often when this happens we will miss a frame of
@@ -124,32 +124,30 @@
     // Or a frame "below" this one saved it, i.e. a function called by this one, preserved a register that this
     // function didn't modify/use.
     //
-    // The RegisterLocation type may be set to eRegisterNotAvailable -- this will happen for a volatile register 
+    // The RegisterLocation type may be set to eRegisterNotAvailable -- this will happen for a volatile register
     // being queried mid-stack.  Instead of floating frame 0's contents of that register up the stack (which may
     // or may not be the value of that reg when the function was executing), we won't return any value.
     //
     // If a non-volatile register (a "preserved" register) is requested mid-stack and no frames "below" the requested
     // stack have saved the register anywhere, it is safe to assume that frame 0's register values are still the same
     // as the requesting frame's.
-    //
-    // NB this function takes a "check_next_frame" boolean which indicates whether it should call back to the
-    // containing UnwindLLDB object to iterate the search down the stack (true) or if this call should look for
-    // a register save for that reg in the current frame only (false).  Allows UnwindLLDB to iterate through the
-    // RegisterContextLLDB's instead of using recursion to find saved register values.
     bool
-    SavedLocationForRegister (uint32_t lldb_regnum, lldb_private::UnwindLLDB::RegisterLocation &regloc, bool check_next_frame);
+    SavedLocationForRegister (uint32_t lldb_regnum, lldb_private::UnwindLLDB::RegisterLocation &regloc);
 
     bool
-    ReadRegisterValueFromRegisterLocation (lldb_private::UnwindLLDB::RegisterLocation regloc, 
+    ReadRegisterValueFromRegisterLocation (lldb_private::UnwindLLDB::RegisterLocation regloc,
                                            const lldb_private::RegisterInfo *reg_info,
                                            lldb_private::RegisterValue &value);
 
     bool
-    WriteRegisterValueToRegisterLocation (lldb_private::UnwindLLDB::RegisterLocation regloc, 
+    WriteRegisterValueToRegisterLocation (lldb_private::UnwindLLDB::RegisterLocation regloc,
                                           const lldb_private::RegisterInfo *reg_info,
                                           const lldb_private::RegisterValue &value);
 
-    // Get the contents of a general purpose (address-size) register for this frame 
+    void
+    InvalidateFullUnwindPlan ();
+
+    // Get the contents of a general purpose (address-size) register for this frame
     // (usually retrieved from the next frame)
     bool
     ReadGPRValue (int register_kind, uint32_t regnum, lldb::addr_t &value);
@@ -160,8 +158,22 @@
     lldb::UnwindPlanSP
     GetFullUnwindPlanForFrame ();
 
+    void
+    UnwindLogMsg (const char *fmt, ...) 
+#ifndef _MSC_VER
+    __attribute__ ((format (printf, 2, 3)))
+#endif
+    ;
+
+    void
+    UnwindLogMsgVerbose (const char *fmt, ...) 
+#ifndef _MSC_VER
+    __attribute__ ((format (printf, 2, 3)))
+#endif
+    ;
+
     lldb_private::Thread& m_thread;
-    
+
     ///
     // The following tell us how to retrieve the CALLER's register values (ie the "previous" frame, aka the frame above)
     // i.e. where THIS frame saved them
@@ -182,7 +194,7 @@
     int m_current_offset_backed_up_one;           // how far into the function we've executed; -1 if unknown
                                                   // 0 if no instructions have been executed yet.
                                                   // On architectures where the return address on the stack points
-                                                  // to the instruction after the CALL, this value will have 1 
+                                                  // to the instruction after the CALL, this value will have 1
                                                   // subtracted from it.  Else a function that ends in a CALL will
                                                   // have an offset pointing into the next function's address range.
                                                   // m_current_pc has the actual address of the "current" pc.

Modified: lldb/branches/windows/source/Plugins/Process/Utility/StopInfoMachException.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/Process/Utility/StopInfoMachException.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/Process/Utility/StopInfoMachException.cpp (original)
+++ lldb/branches/windows/source/Plugins/Process/Utility/StopInfoMachException.cpp Thu Nov  1 02:04:04 2012
@@ -365,7 +365,8 @@
                             return StopInfo::CreateStopReasonWithWatchpointID(thread, wp_sp->GetID());
                         }
                         // EXC_ARM_DA_DEBUG seems to be reused for EXC_BREAKPOINT as well as EXC_BAD_ACCESS
-                        return StopInfo::CreateStopReasonToTrace(thread);
+                        if (thread.GetTemporaryResumeState() == eStateStepping)
+                            return StopInfo::CreateStopReasonToTrace(thread);
                     }
                     else if (exc_code == 1)
                     {
@@ -405,7 +406,8 @@
                             return StopInfoSP();
                     }
                     
-                    if (is_trace_if_software_breakpoint_missing)
+                    // Don't call this a trace if we weren't single stepping this thread.
+                    if (is_trace_if_software_breakpoint_missing && thread.GetTemporaryResumeState() == eStateStepping)
                     {
                         return StopInfo::CreateStopReasonToTrace (thread);
                     }

Modified: lldb/branches/windows/source/Plugins/Process/Utility/ThreadMemory.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/Process/Utility/ThreadMemory.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/Process/Utility/ThreadMemory.cpp (original)
+++ lldb/branches/windows/source/Plugins/Process/Utility/ThreadMemory.cpp Thu Nov  1 02:04:04 2012
@@ -18,8 +18,8 @@
 using namespace lldb_private;
 
 ThreadMemory::ThreadMemory (Process &process,
-                              tid_t tid, 
-                              const ValueObjectSP &thread_info_valobj_sp) :
+                            tid_t tid,
+                            const ValueObjectSP &thread_info_valobj_sp) :
     Thread (process, tid),
     m_thread_info_valobj_sp (thread_info_valobj_sp),
     m_name(),
@@ -31,11 +31,13 @@
 ThreadMemory::ThreadMemory (Process &process,
                             lldb::tid_t tid,
                             const char *name,
-                            const char *queue) :
+                            const char *queue,
+                            lldb::addr_t register_data_addr) :
     Thread (process, tid),
     m_thread_info_valobj_sp (),
     m_name(),
-    m_queue()
+    m_queue(),
+    m_register_data_addr (register_data_addr)
 {
     if (name)
         m_name = name;
@@ -70,7 +72,7 @@
         {
             OperatingSystem *os = process_sp->GetOperatingSystem ();
             if (os)
-                m_reg_context_sp = os->CreateRegisterContextForThread (this);
+                m_reg_context_sp = os->CreateRegisterContextForThread (this, m_register_data_addr);
         }
     }
     return m_reg_context_sp;

Modified: lldb/branches/windows/source/Plugins/Process/Utility/ThreadMemory.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/Process/Utility/ThreadMemory.h?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/Process/Utility/ThreadMemory.h (original)
+++ lldb/branches/windows/source/Plugins/Process/Utility/ThreadMemory.h Thu Nov  1 02:04:04 2012
@@ -24,7 +24,8 @@
     ThreadMemory (lldb_private::Process &process,
                   lldb::tid_t tid,
                   const char *name,
-                  const char *queue);
+                  const char *queue,
+                  lldb::addr_t register_data_addr);
 
     virtual
     ~ThreadMemory();
@@ -72,6 +73,7 @@
     lldb::ValueObjectSP m_thread_info_valobj_sp;
     std::string m_name;
     std::string m_queue;
+    lldb::addr_t m_register_data_addr;
 private:
     //------------------------------------------------------------------
     // For ThreadMemory only

Modified: lldb/branches/windows/source/Plugins/Process/Utility/UnwindLLDB.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/Process/Utility/UnwindLLDB.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/Process/Utility/UnwindLLDB.cpp (original)
+++ lldb/branches/windows/source/Plugins/Process/Utility/UnwindLLDB.cpp Thu Nov  1 02:04:04 2012
@@ -262,14 +262,24 @@
 }
 
 bool
-UnwindLLDB::SearchForSavedLocationForRegister (uint32_t lldb_regnum, lldb_private::UnwindLLDB::RegisterLocation &regloc, uint32_t starting_frame_num)
+UnwindLLDB::SearchForSavedLocationForRegister (uint32_t lldb_regnum, lldb_private::UnwindLLDB::RegisterLocation &regloc, uint32_t starting_frame_num, bool pc_or_return_address_reg)
 {
     int64_t frame_num = starting_frame_num;
     if (frame_num >= m_frames.size())
         return false;
+
+    // Never interrogate more than one level while looking for the saved pc value.  If the value
+    // isn't saved by frame_num, none of the frames lower on the stack will have a useful value.
+    if (pc_or_return_address_reg)
+    {
+        if (m_frames[frame_num]->reg_ctx_lldb_sp->SavedLocationForRegister (lldb_regnum, regloc))
+          return true;
+        else
+          return false;
+    }
     while (frame_num >= 0)
     {
-        if (m_frames[frame_num]->reg_ctx_lldb_sp->SavedLocationForRegister (lldb_regnum, regloc, false))
+        if (m_frames[frame_num]->reg_ctx_lldb_sp->SavedLocationForRegister (lldb_regnum, regloc))
             return true;
         frame_num--;
     }

Modified: lldb/branches/windows/source/Plugins/Process/Utility/UnwindLLDB.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/Process/Utility/UnwindLLDB.h?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/Process/Utility/UnwindLLDB.h (original)
+++ lldb/branches/windows/source/Plugins/Process/Utility/UnwindLLDB.h Thu Nov  1 02:04:04 2012
@@ -80,7 +80,7 @@
     // Iterate over the RegisterContextLLDB's in our m_frames vector, look for the first one that
     // has a saved location for this reg.
     bool
-    SearchForSavedLocationForRegister (uint32_t lldb_regnum, lldb_private::UnwindLLDB::RegisterLocation &regloc, uint32_t starting_frame_num);
+    SearchForSavedLocationForRegister (uint32_t lldb_regnum, lldb_private::UnwindLLDB::RegisterLocation &regloc, uint32_t starting_frame_num, bool pc_or_return_address_reg);
 
 
 private:

Modified: lldb/branches/windows/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp (original)
+++ lldb/branches/windows/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp Thu Nov  1 02:04:04 2012
@@ -49,6 +49,8 @@
 #include "lldb/Host/Symbols.h"
 #include "lldb/Host/TimeValue.h"
 #include "lldb/Interpreter/CommandInterpreter.h"
+#include "lldb/Interpreter/CommandObject.h"
+#include "lldb/Interpreter/CommandObjectMultiword.h"
 #include "lldb/Interpreter/CommandReturnObject.h"
 #include "lldb/Symbol/ObjectFile.h"
 #include "lldb/Target/DynamicLoader.h"
@@ -199,6 +201,8 @@
     m_register_info (),
     m_async_broadcaster (NULL, "lldb.process.gdb-remote.async-broadcaster"),
     m_async_thread (LLDB_INVALID_HOST_THREAD),
+    m_async_thread_state(eAsyncThreadNotStarted),
+    m_async_thread_state_mutex(Mutex::eMutexTypeRecursive),
     m_thread_ids (),
     m_continue_c_tids (),
     m_continue_C_tids (),
@@ -231,6 +235,12 @@
     // destruct this class, then Process::~Process() might have problems
     // trying to fully destroy the broadcaster.
     Finalize();
+    
+    // The general Finalize is going to try to destroy the process and that SHOULD
+    // shut down the async thread.  However, if we don't kill it it will get stranded and
+    // its connection will go away so when it wakes up it will crash.  So kill it for sure here.
+    StopAsyncThread();
+    KillDebugserverProcess();
 }
 
 //----------------------------------------------------------------------
@@ -1599,9 +1609,13 @@
                             }
                             else
                             {
-                                // TODO: check for breakpoint or trap opcode in case there is a hard 
-                                // coded software trap
-                                gdb_thread->SetStopInfo (StopInfo::CreateStopReasonToTrace (*thread_sp));
+                                // If we were stepping then assume the stop was the result of the trace.  If we were
+                                // not stepping then report the SIGTRAP.
+                                // FIXME: We are still missing the case where we single step over a trap instruction.
+                                if (gdb_thread->GetTemporaryResumeState() == eStateStepping)
+                                    gdb_thread->SetStopInfo (StopInfo::CreateStopReasonToTrace (*thread_sp));
+                                else
+                                    gdb_thread->SetStopInfo (StopInfo::CreateStopReasonWithSignal(*thread_sp, signo));
                             }
                         }
                         if (!handled)
@@ -2728,11 +2742,32 @@
 
     if (log)
         log->Printf ("ProcessGDBRemote::%s ()", __FUNCTION__);
-
-    // Create a thread that watches our internal state and controls which
-    // events make it to clients (into the DCProcess event queue).
-    m_async_thread = Host::ThreadCreate ("<lldb.process.gdb-remote.async>", ProcessGDBRemote::AsyncThread, this, NULL);
-    return IS_VALID_LLDB_HOST_THREAD(m_async_thread);
+    
+    Mutex::Locker start_locker(m_async_thread_state_mutex);
+    if (m_async_thread_state == eAsyncThreadNotStarted)
+    {
+        // Create a thread that watches our internal state and controls which
+        // events make it to clients (into the DCProcess event queue).
+        m_async_thread = Host::ThreadCreate ("<lldb.process.gdb-remote.async>", ProcessGDBRemote::AsyncThread, this, NULL);
+        if (IS_VALID_LLDB_HOST_THREAD(m_async_thread))
+        {
+            m_async_thread_state = eAsyncThreadRunning;
+            return true;
+        }
+        else
+            return false;
+    }
+    else
+    {
+        // Somebody tried to start the async thread while it was either being started or stopped.  If the former, and
+        // it started up successfully, then say all's well.  Otherwise it is an error, since we aren't going to restart it.
+        if (log)
+            log->Printf ("ProcessGDBRemote::%s () - Called when Async thread was in state: %d.", __FUNCTION__, m_async_thread_state);
+        if (m_async_thread_state == eAsyncThreadRunning)
+            return true;
+        else
+            return false;
+    }
 }
 
 void
@@ -2743,15 +2778,25 @@
     if (log)
         log->Printf ("ProcessGDBRemote::%s ()", __FUNCTION__);
 
-    m_async_broadcaster.BroadcastEvent (eBroadcastBitAsyncThreadShouldExit);
-    
-    //  This will shut down the async thread.
-    m_gdb_comm.Disconnect();    // Disconnect from the debug server.
+    Mutex::Locker start_locker(m_async_thread_state_mutex);
+    if (m_async_thread_state == eAsyncThreadRunning)
+    {
+        m_async_broadcaster.BroadcastEvent (eBroadcastBitAsyncThreadShouldExit);
+        
+        //  This will shut down the async thread.
+        m_gdb_comm.Disconnect();    // Disconnect from the debug server.
 
-    // Stop the stdio thread
-    if (IS_VALID_LLDB_HOST_THREAD(m_async_thread))
+        // Stop the stdio thread
+        if (IS_VALID_LLDB_HOST_THREAD(m_async_thread))
+        {
+            Host::ThreadJoin (m_async_thread, NULL, NULL);
+        }
+        m_async_thread_state = eAsyncThreadDone;
+    }
+    else
     {
-        Host::ThreadJoin (m_async_thread, NULL, NULL);
+        if (log)
+            log->Printf ("ProcessGDBRemote::%s () - Called when Async thread was in state: %d.", __FUNCTION__, m_async_thread_state);
     }
 }
 
@@ -3037,8 +3082,6 @@
     return m_dyld_ap.get();
 }
 
-#include "lldb/Interpreter/CommandObject.h"
-#include "lldb/Interpreter/CommandObjectMultiword.h"
 
 class CommandObjectProcessGDBRemotePacketHistory : public CommandObjectParsed
 {

Modified: lldb/branches/windows/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h?rev=167218&r1=167217&r2=167218&view=diff
==============================================================================
--- lldb/branches/windows/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h (original)
+++ lldb/branches/windows/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h Thu Nov  1 02:04:04 2012
@@ -307,6 +307,13 @@
         eBroadcastBitAsyncThreadDidExit             = (1 << 2)
     };
 
+    typedef enum AsyncThreadState
+    {
+        eAsyncThreadNotStarted,
+        eAsyncThreadRunning,
+        eAsyncThreadDone
+    } AsyncThreadState;
+    
     lldb_private::Flags m_flags;            // Process specific flags (see eFlags enums)
     GDBRemoteCommunicationClient m_gdb_comm;
     lldb::pid_t m_debugserver_pid;
@@ -315,6 +322,8 @@
     GDBRemoteDynamicRegisterInfo m_register_info;
     lldb_private::Broadcaster m_async_broadcaster;
     lldb::thread_t m_async_thread;
+    AsyncThreadState m_async_thread_state;
+    lldb_private::Mutex m_async_thread_state_mutex;
     typedef std::vector<lldb::tid_t> tid_collection;
     typedef std::vector< std::pair<lldb::tid_t,int> > tid_sig_collection;
     typedef std::map<lldb::addr_t, lldb::addr_t> MMapMap;

Added: lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp.orig
URL: http://llvm.org/viewvc/llvm-project/lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp.orig?rev=167218&view=auto
==============================================================================
--- lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp.orig (added)
+++ lldb/branches/windows/source/Plugins/SymbolFile/DWARF/DWARFDebugInfoEntry.cpp.orig Thu Nov  1 02:04:04 2012
@@ -0,0 +1,2211 @@
+//===-- DWARFDebugInfoEntry.cpp ---------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "DWARFDebugInfoEntry.h"
+
+#include <assert.h>
+
+#include <algorithm>
+
+#include "lldb/Core/Module.h"
+#include "lldb/Core/Stream.h"
+#include "lldb/Expression/DWARFExpression.h"
+#include "lldb/Symbol/ObjectFile.h"
+
+#include "DWARFCompileUnit.h"
+#include "SymbolFileDWARF.h"
+#include "DWARFDebugAbbrev.h"
+#include "DWARFDebugAranges.h"
+#include "DWARFDebugInfo.h"
+#include "DWARFDeclContext.h"
+#include "DWARFDIECollection.h"
+#include "DWARFFormValue.h"
+#include "DWARFLocationDescription.h"
+#include "DWARFLocationList.h"
+#include "DWARFDebugRanges.h"
+
+using namespace lldb_private;
+using namespace std;
+extern int g_verbose;
+
+
+
+DWARFDebugInfoEntry::Attributes::Attributes() :
+    m_infos()
+{
+}
+
+DWARFDebugInfoEntry::Attributes::~Attributes()
+{
+}
+
+
+uint32_t
+DWARFDebugInfoEntry::Attributes::FindAttributeIndex(dw_attr_t attr) const
+{
+    collection::const_iterator end = m_infos.end();
+    collection::const_iterator beg = m_infos.begin();
+    collection::const_iterator pos;
+    for (pos = beg; pos != end; ++pos)
+    {
+        if (pos->attr == attr)
+            return std::distance(beg, pos);
+    }
+    return UINT32_MAX;
+}
+
+void
+DWARFDebugInfoEntry::Attributes::Append(const DWARFCompileUnit *cu, dw_offset_t attr_die_offset, dw_attr_t attr, dw_form_t form)
+{
+    Info info = { cu, attr_die_offset, attr, form };
+    m_infos.push_back(info);
+}
+
+bool
+DWARFDebugInfoEntry::Attributes::ContainsAttribute(dw_attr_t attr) const
+{
+    return FindAttributeIndex(attr) != UINT32_MAX;
+}
+
+bool
+DWARFDebugInfoEntry::Attributes::RemoveAttribute(dw_attr_t attr)
+{
+    uint32_t attr_index = FindAttributeIndex(attr);
+    if (attr_index != UINT32_MAX)
+    {
+        m_infos.erase(m_infos.begin() + attr_index);
+        return true;
+    }
+    return false;
+}
+
+bool
+DWARFDebugInfoEntry::Attributes::ExtractFormValueAtIndex (SymbolFileDWARF* dwarf2Data, uint32_t i, DWARFFormValue &form_value) const
+{
+    form_value.SetForm(FormAtIndex(i));
+    dw_offset_t offset = DIEOffsetAtIndex(i);
+    return form_value.ExtractValue(dwarf2Data->get_debug_info_data(), &offset, CompileUnitAtIndex(i));
+}
+
+uint64_t
+DWARFDebugInfoEntry::Attributes::FormValueAsUnsigned (SymbolFileDWARF* dwarf2Data, dw_attr_t attr, uint64_t fail_value) const
+{
+    const uint32_t attr_idx = FindAttributeIndex (attr);
+    if (attr_idx != UINT32_MAX)
+        return FormValueAsUnsignedAtIndex (dwarf2Data, attr_idx, fail_value);
+    return fail_value;
+}
+
+uint64_t
+DWARFDebugInfoEntry::Attributes::FormValueAsUnsignedAtIndex(SymbolFileDWARF* dwarf2Data, uint32_t i, uint64_t fail_value) const
+{
+    DWARFFormValue form_value;
+    if (ExtractFormValueAtIndex(dwarf2Data, i, form_value))
+        return form_value.Reference(CompileUnitAtIndex(i));
+    return fail_value;
+}
+
+
+
+bool
+DWARFDebugInfoEntry::FastExtract
+(
+    const DataExtractor& debug_info_data,
+    const DWARFCompileUnit* cu,
+    const uint8_t *fixed_form_sizes,
+    uint32_t* offset_ptr
+)
+{
+    m_offset = *offset_ptr;
+    m_parent_idx = 0;
+    m_sibling_idx = 0;
+    m_empty_children = false;
+    const uint64_t abbr_idx = debug_info_data.GetULEB128 (offset_ptr);
+    assert (abbr_idx < (1 << DIE_ABBR_IDX_BITSIZE));
+    m_abbr_idx = abbr_idx;
+    
+    //assert (fixed_form_sizes);  // For best performance this should be specified!
+    
+    if (m_abbr_idx)
+    {
+        uint32_t offset = *offset_ptr;
+
+        const DWARFAbbreviationDeclaration *abbrevDecl = cu->GetAbbreviations()->GetAbbreviationDeclaration(m_abbr_idx);
+        
+        if (abbrevDecl == NULL)
+        {
+            cu->GetSymbolFileDWARF()->GetObjectFile()->GetModule()->ReportError ("{0x%8.8x}: invalid abbreviation code %u, please file a bug and attach the file at the start of this error message", 
+                                                                                 m_offset, 
+                                                                                 (unsigned)abbr_idx);
+            // WE can't parse anymore if the DWARF is borked...
+            *offset_ptr = UINT32_MAX;
+            return false;
+        }
+        m_tag = abbrevDecl->Tag();
+        m_has_children = abbrevDecl->HasChildren();
+        // Skip all data in the .debug_info for the attributes
+        const uint32_t numAttributes = abbrevDecl->NumAttributes();
+        register uint32_t i;
+        register dw_form_t form;
+        for (i=0; i<numAttributes; ++i)
+        {
+            form = abbrevDecl->GetFormByIndexUnchecked(i);
+
+            const uint8_t fixed_skip_size = fixed_form_sizes [form];
+            if (fixed_skip_size)
+                offset += fixed_skip_size;
+            else
+            {
+                bool form_is_indirect = false;
+                do
+                {
+                    form_is_indirect = false;
+                    register uint32_t form_size = 0;
+                    switch (form)
+                    {
+                    // Blocks if inlined data that have a length field and the data bytes
+                    // inlined in the .debug_info
+                    case DW_FORM_exprloc     :
+                    case DW_FORM_block       : form_size = debug_info_data.GetULEB128 (&offset);      break;
+                    case DW_FORM_block1      : form_size = debug_info_data.GetU8_unchecked (&offset); break;
+                    case DW_FORM_block2      : form_size = debug_info_data.GetU16_unchecked (&offset);break;
+                    case DW_FORM_block4      : form_size = debug_info_data.GetU32_unchecked (&offset);break;
+
+                    // Inlined NULL terminated C-strings
+                    case DW_FORM_string      :
+                        debug_info_data.GetCStr (&offset);
+                        break;
+
+                    // Compile unit address sized values
+                    case DW_FORM_addr        :
+                    case DW_FORM_ref_addr    :
+                        form_size = cu->GetAddressByteSize();
+                        break;
+                    
+                    // zero sized field
+                    case DW_FORM_flag_present:
+                        form_size = 0;
+                        break;
+
+                    // 0 sized form
+                    case DW_FORM_flag_present:
+                        form_size = 0;
+                        break;
+
+                    // 1 byte values
+                    case DW_FORM_data1       :
+                    case DW_FORM_flag        :
+                    case DW_FORM_ref1        :
+                        form_size = 1;
+                        break;
+
+                    // 2 byte values
+                    case DW_FORM_data2       :
+                    case DW_FORM_ref2        :
+                        form_size = 2;
+                        break;
+
+                    // 4 byte values
+                    case DW_FORM_strp        :
+                    case DW_FORM_data4       :
+                    case DW_FORM_ref4        :
+                        form_size = 4;
+                        break;
+
+                    // 8 byte values
+                    case DW_FORM_data8       :
+                    case DW_FORM_ref8        :
+                    case DW_FORM_ref_sig8    :
+                        form_size = 8;
+                        break;
+
+                    // signed or unsigned LEB 128 values
+                    case DW_FORM_sdata       :
+                    case DW_FORM_udata       :
+                    case DW_FORM_ref_udata   :
+                        debug_info_data.Skip_LEB128 (&offset);
+                        break;
+
+                    case DW_FORM_indirect    :
+                        form_is_indirect = true;
+                        form = debug_info_data.GetULEB128 (&offset);
+                        break;
+
+                    case DW_FORM_sec_offset  :
+                        if (cu->GetAddressByteSize () == 4)
+                            debug_info_data.GetU32 (offset_ptr);
+                        else
+                            debug_info_data.GetU64 (offset_ptr);
+                        break;
+
+                    default:
+                        *offset_ptr = m_offset;
+                        return false;
+                    }
+                    offset += form_size;
+
+                } while (form_is_indirect);
+            }
+        }
+        *offset_ptr = offset;
+        return true;
+    }
+    else
+    {
+        m_tag = 0;
+        m_has_children = false;
+        return true;    // NULL debug tag entry
+    }
+
+    return false;
+}
+
+//----------------------------------------------------------------------
+// Extract
+//
+// Extract a debug info entry for a given compile unit from the
+// .debug_info and .debug_abbrev data within the SymbolFileDWARF class
+// starting at the given offset
+//----------------------------------------------------------------------
+bool
+DWARFDebugInfoEntry::Extract
+(
+    SymbolFileDWARF* dwarf2Data,
+    const DWARFCompileUnit* cu,
+    uint32_t* offset_ptr
+)
+{
+    const DataExtractor& debug_info_data = dwarf2Data->get_debug_info_data();
+//    const DataExtractor& debug_str_data = dwarf2Data->get_debug_str_data();
+    const uint32_t cu_end_offset = cu->GetNextCompileUnitOffset();
+    const uint8_t cu_addr_size = cu->GetAddressByteSize();
+    uint32_t offset = *offset_ptr;
+//  if (offset >= cu_end_offset)
+//      Log::Error("DIE at offset 0x%8.8x is beyond the end of the current compile unit (0x%8.8x)", m_offset, cu_end_offset);
+    if ((offset < cu_end_offset) && debug_info_data.ValidOffset(offset))
+    {
+        m_offset = offset;
+
+        const uint64_t abbr_idx = debug_info_data.GetULEB128(&offset);
+        assert (abbr_idx < (1 << DIE_ABBR_IDX_BITSIZE));
+        m_abbr_idx = abbr_idx;
+        if (abbr_idx)
+        {
+            const DWARFAbbreviationDeclaration *abbrevDecl = cu->GetAbbreviations()->GetAbbreviationDeclaration(abbr_idx);
+
+            if (abbrevDecl)
+            {
+                m_tag = abbrevDecl->Tag();
+                m_has_children = abbrevDecl->HasChildren();
+
+                bool isCompileUnitTag = m_tag == DW_TAG_compile_unit;
+                if (cu && isCompileUnitTag)
+                    ((DWARFCompileUnit*)cu)->SetBaseAddress(0);
+
+                // Skip all data in the .debug_info for the attributes
+                const uint32_t numAttributes = abbrevDecl->NumAttributes();
+                uint32_t i;
+                dw_attr_t attr;
+                dw_form_t form;
+                for (i=0; i<numAttributes; ++i)
+                {
+                    abbrevDecl->GetAttrAndFormByIndexUnchecked(i, attr, form);
+
+                    if (isCompileUnitTag && ((attr == DW_AT_entry_pc) || (attr == DW_AT_low_pc)))
+                    {
+                        DWARFFormValue form_value(form);
+                        if (form_value.ExtractValue(debug_info_data, &offset, cu))
+                        {
+                            if (attr == DW_AT_low_pc || attr == DW_AT_entry_pc)
+                                ((DWARFCompileUnit*)cu)->SetBaseAddress(form_value.Unsigned());
+                        }
+                    }
+                    else
+                    {
+                        bool form_is_indirect = false;
+                        do
+                        {
+                            form_is_indirect = false;
+                            register uint32_t form_size = 0;
+                            switch (form)
+                            {
+                            // Blocks if inlined data that have a length field and the data bytes
+                            // inlined in the .debug_info
+                            case DW_FORM_exprloc     :
+                            case DW_FORM_block       : form_size = debug_info_data.GetULEB128(&offset);  break;
+                            case DW_FORM_block1      : form_size = debug_info_data.GetU8(&offset);       break;
+                            case DW_FORM_block2      : form_size = debug_info_data.GetU16(&offset);      break;
+                            case DW_FORM_block4      : form_size = debug_info_data.GetU32(&offset);      break;
+
+                            // Inlined NULL terminated C-strings
+                            case DW_FORM_string      : debug_info_data.GetCStr(&offset);                 break;
+
+                            // Compile unit address sized values
+                            case DW_FORM_addr        :
+                            case DW_FORM_ref_addr    :
+                                form_size = cu_addr_size;
+                                break;
+
+<<<<<<< .working
+                            // zero sized field
+                            case DW_FORM_flag_present:
+                                form_size = 0;
+                                break;
+
+=======
+                            // 0 sized form
+                            case DW_FORM_flag_present:
+                                form_size = 0;
+                                break;
+
+>>>>>>> .merge-right.r164814
+                            // 1 byte values
+                            case DW_FORM_data1       :
+                            case DW_FORM_flag        :
+                            case DW_FORM_ref1        :
+                                form_size = 1;
+                                break;
+
+                            // 2 byte values
+                            case DW_FORM_data2       :
+                            case DW_FORM_ref2        :
+                                form_size = 2;
+                                break;
+
+                            // 4 byte values
+                            case DW_FORM_strp        :
+                                form_size = 4;
+                                break;
+
+                            case DW_FORM_data4       :
+                            case DW_FORM_ref4        :
+                                form_size = 4;
+                                break;
+
+                            // 8 byte values
+                            case DW_FORM_data8       :
+                            case DW_FORM_ref8        :
+                            case DW_FORM_ref_sig8    :
+                                form_size = 8;
+                                break;
+
+                            // signed or unsigned LEB 128 values
+                            case DW_FORM_sdata       :
+                            case DW_FORM_udata       :
+                            case DW_FORM_ref_udata   :
+                                debug_info_data.Skip_LEB128(&offset);
+                                break;
+
+                            case DW_FORM_indirect    :
+                                form = debug_info_data.GetULEB128(&offset);
+                                form_is_indirect = true;
+                                break;
+
+                            case DW_FORM_sec_offset  :
+                                if (cu->GetAddressByteSize () == 4)
+                                    debug_info_data.GetU32 (offset_ptr);
+                                else
+                                    debug_info_data.GetU64 (offset_ptr);
+                                break;
+
+                            default:
+                                *offset_ptr = offset;
+                                return false;
+                            }
+
+                            offset += form_size;
+                        } while (form_is_indirect);
+                    }
+                }
+                *offset_ptr = offset;
+                return true;
+            }
+        }
+        else
+        {
+            m_tag = 0;
+            m_has_children = false;
+            *offset_ptr = offset;
+            return true;    // NULL debug tag entry
+        }
+    }
+
+    return false;
+}
+
+//----------------------------------------------------------------------
+// DumpAncestry
+//
+// Dumps all of a debug information entries parents up until oldest and
+// all of it's attributes to the specified stream.
+//----------------------------------------------------------------------
+void
+DWARFDebugInfoEntry::DumpAncestry
+(
+    SymbolFileDWARF* dwarf2Data,
+    const DWARFCompileUnit* cu,
+    const DWARFDebugInfoEntry* oldest,
+    Stream &s,
+    uint32_t recurse_depth
+) const
+{
+    const DWARFDebugInfoEntry* parent = GetParent();
+    if (parent && parent != oldest)
+        parent->DumpAncestry(dwarf2Data, cu, oldest, s, 0);
+    Dump(dwarf2Data, cu, s, recurse_depth);
+}
+
+//----------------------------------------------------------------------
+// Compare two DIE by comparing all their attributes values, and
+// following all DW_FORM_ref attributes and comparing their contents as
+// well (except for DW_AT_sibling attributes.
+//
+//  DWARFDebugInfoEntry::CompareState compare_state;
+//  int result = DWARFDebugInfoEntry::Compare(this, 0x00017ccb, 0x0001eb2b, compare_state, false, true);
+//----------------------------------------------------------------------
+//int
+//DWARFDebugInfoEntry::Compare
+//(
+//    SymbolFileDWARF* dwarf2Data,
+//    dw_offset_t a_die_offset,
+//    dw_offset_t b_die_offset,
+//    CompareState &compare_state,
+//    bool compare_siblings,
+//    bool compare_children
+//)
+//{
+//    if (a_die_offset == b_die_offset)
+//        return 0;
+//
+//    DWARFCompileUnitSP a_cu_sp;
+//    DWARFCompileUnitSP b_cu_sp;
+//    const DWARFDebugInfoEntry* a_die = dwarf2Data->DebugInfo()->GetDIEPtr(a_die_offset, &a_cu_sp);
+//    const DWARFDebugInfoEntry* b_die = dwarf2Data->DebugInfo()->GetDIEPtr(b_die_offset, &b_cu_sp);
+//
+//    return Compare(dwarf2Data, a_cu_sp.get(), a_die, b_cu_sp.get(), b_die, compare_state, compare_siblings, compare_children);
+//}
+//
+//int
+//DWARFDebugInfoEntry::Compare
+//(
+//    SymbolFileDWARF* dwarf2Data,
+//    DWARFCompileUnit* a_cu, const DWARFDebugInfoEntry* a_die,
+//    DWARFCompileUnit* b_cu, const DWARFDebugInfoEntry* b_die,
+//    CompareState &compare_state,
+//    bool compare_siblings,
+//    bool compare_children
+//)
+//{
+//    if (a_die == b_die)
+//        return 0;
+//
+//    if (!compare_state.AddTypePair(a_die->GetOffset(), b_die->GetOffset()))
+//    {
+//        // We are already comparing both of these types, so let
+//        // compares complete for the real result
+//        return 0;
+//    }
+//
+//    //printf("DWARFDebugInfoEntry::Compare(0x%8.8x, 0x%8.8x)\n", a_die->GetOffset(), b_die->GetOffset());
+//
+//    // Do we have two valid DIEs?
+//    if (a_die && b_die)
+//    {
+//        // Both DIE are valid
+//        int result = 0;
+//
+//        const dw_tag_t a_tag = a_die->Tag();
+//        const dw_tag_t b_tag = b_die->Tag();
+//        if (a_tag == 0 && b_tag == 0)
+//            return 0;
+//
+//        //printf("    comparing tags: %s and %s\n", DW_TAG_value_to_name(a_tag), DW_TAG_value_to_name(b_tag));
+//
+//        if (a_tag < b_tag)
+//            return -1;
+//        else if (a_tag > b_tag)
+//            return 1;
+//
+//        DWARFDebugInfoEntry::Attributes a_attrs;
+//        DWARFDebugInfoEntry::Attributes b_attrs;
+//        size_t a_attr_count = a_die->GetAttributes(dwarf2Data, a_cu, a_attrs);
+//        size_t b_attr_count = b_die->GetAttributes(dwarf2Data, b_cu, b_attrs);
+//        if (a_attr_count != b_attr_count)
+//        {
+//            a_attrs.RemoveAttribute(DW_AT_sibling);
+//            b_attrs.RemoveAttribute(DW_AT_sibling);
+//        }
+//
+//        a_attr_count = a_attrs.Size();
+//        b_attr_count = b_attrs.Size();
+//
+//        DWARFFormValue a_form_value;
+//        DWARFFormValue b_form_value;
+//
+//        if (a_attr_count != b_attr_count)
+//        {
+//            uint32_t is_decl_index = a_attrs.FindAttributeIndex(DW_AT_declaration);
+//            uint32_t a_name_index = UINT32_MAX;
+//            uint32_t b_name_index = UINT32_MAX;
+//            if (is_decl_index != UINT32_MAX)
+//            {
+//                if (a_attr_count == 2)
+//                {
+//                    a_name_index = a_attrs.FindAttributeIndex(DW_AT_name);
+//                    b_name_index = b_attrs.FindAttributeIndex(DW_AT_name);
+//                }
+//            }
+//            else
+//            {
+//                is_decl_index = b_attrs.FindAttributeIndex(DW_AT_declaration);
+//                if (is_decl_index != UINT32_MAX && a_attr_count == 2)
+//                {
+//                    a_name_index = a_attrs.FindAttributeIndex(DW_AT_name);
+//                    b_name_index = b_attrs.FindAttributeIndex(DW_AT_name);
+//                }
+//            }
+//            if (a_name_index != UINT32_MAX && b_name_index != UINT32_MAX)
+//            {
+//                if (a_attrs.ExtractFormValueAtIndex(dwarf2Data, a_name_index, a_form_value) &&
+//                    b_attrs.ExtractFormValueAtIndex(dwarf2Data, b_name_index, b_form_value))
+//                {
+//                    result = DWARFFormValue::Compare (a_form_value, b_form_value, a_cu, b_cu, &dwarf2Data->get_debug_str_data());
+//                    if (result == 0)
+//                    {
+//                        a_attr_count = b_attr_count = 0;
+//                        compare_children = false;
+//                    }
+//                }
+//            }
+//        }
+//
+//        if (a_attr_count < b_attr_count)
+//            return -1;
+//        if (a_attr_count > b_attr_count)
+//            return 1;
+//
+//
+//        // The number of attributes are the same...
+//        if (a_attr_count > 0)
+//        {
+//            const DataExtractor* debug_str_data_ptr = &dwarf2Data->get_debug_str_data();
+//
+//            uint32_t i;
+//            for (i=0; i<a_attr_count; ++i)
+//            {
+//                const dw_attr_t a_attr = a_attrs.AttributeAtIndex(i);
+//                const dw_attr_t b_attr = b_attrs.AttributeAtIndex(i);
+//                //printf("    comparing attributes\n\t\t0x%8.8x: %s %s\t\t0x%8.8x: %s %s\n",
+//                //                a_attrs.DIEOffsetAtIndex(i), DW_FORM_value_to_name(a_attrs.FormAtIndex(i)), DW_AT_value_to_name(a_attr),
+//                //                b_attrs.DIEOffsetAtIndex(i), DW_FORM_value_to_name(b_attrs.FormAtIndex(i)), DW_AT_value_to_name(b_attr));
+//
+//                if (a_attr < b_attr)
+//                    return -1;
+//                else if (a_attr > b_attr)
+//                    return 1;
+//
+//                switch (a_attr)
+//                {
+//                // Since we call a form of GetAttributes which inlines the
+//                // attributes from DW_AT_abstract_origin and DW_AT_specification
+//                // we don't care if their values mismatch...
+//                case DW_AT_abstract_origin:
+//                case DW_AT_specification:
+//                case DW_AT_sibling:
+//                case DW_AT_containing_type:
+//                    //printf("        action = IGNORE\n");
+//                    result = 0;
+//                    break;  // ignore
+//
+//                default:
+//                    if (a_attrs.ExtractFormValueAtIndex(dwarf2Data, i, a_form_value) &&
+//                        b_attrs.ExtractFormValueAtIndex(dwarf2Data, i, b_form_value))
+//                        result = DWARFFormValue::Compare (a_form_value, b_form_value, a_cu, b_cu, debug_str_data_ptr);
+//                    break;
+//                }
+//
+//                //printf("\t  result = %i\n", result);
+//
+//                if (result != 0)
+//                {
+//                    // Attributes weren't equal, lets see if we care?
+//                    switch (a_attr)
+//                    {
+//                    case DW_AT_decl_file:
+//                        // TODO: add the ability to compare files in two different compile units
+//                        if (a_cu == b_cu)
+//                        {
+//                            //printf("        action = RETURN RESULT\n");
+//                            return result;  // Only return the compare results when the compile units are the same and the decl_file attributes can be compared
+//                        }
+//                        else
+//                        {
+//                            result = 0;
+//                            //printf("        action = IGNORE\n");
+//                        }
+//                        break;
+//
+//                    default:
+//                        switch (a_attrs.FormAtIndex(i))
+//                        {
+//                        case DW_FORM_ref1:
+//                        case DW_FORM_ref2:
+//                        case DW_FORM_ref4:
+//                        case DW_FORM_ref8:
+//                        case DW_FORM_ref_udata:
+//                        case DW_FORM_ref_addr:
+//                            //printf("    action = COMPARE DIEs 0x%8.8x 0x%8.8x\n", (dw_offset_t)a_form_value.Reference(a_cu), (dw_offset_t)b_form_value.Reference(b_cu));
+//                            // These attribute values refer to other DIEs, so lets compare those instead of their DIE offsets...
+//                            result = Compare(dwarf2Data, a_form_value.Reference(a_cu), b_form_value.Reference(b_cu), compare_state, false, true);
+//                            if (result != 0)
+//                                return result;
+//                            break;
+//
+//                        default:
+//                            // We do care that they were different, return this result...
+//                            //printf("        action = RETURN RESULT\n");
+//                            return result;
+//                        }
+//                    }
+//                }
+//            }
+//        }
+//        //printf("    SUCCESS\n\t\t0x%8.8x: %s\n\t\t0x%8.8x: %s\n", a_die->GetOffset(), DW_TAG_value_to_name(a_tag), b_die->GetOffset(), DW_TAG_value_to_name(b_tag));
+//
+//        if (compare_children)
+//        {
+//            bool a_has_children = a_die->HasChildren();
+//            bool b_has_children = b_die->HasChildren();
+//            if (a_has_children == b_has_children)
+//            {
+//                // Both either have kids or don't
+//                if (a_has_children)
+//                    result = Compare(   dwarf2Data,
+//                                        a_cu, a_die->GetFirstChild(),
+//                                        b_cu, b_die->GetFirstChild(),
+//                                        compare_state, true, compare_children);
+//                else
+//                    result = 0;
+//            }
+//            else if (!a_has_children)
+//                result = -1;    // A doesn't have kids, but B does
+//            else
+//                result = 1; // A has kids, but B doesn't
+//        }
+//
+//        if (compare_siblings)
+//        {
+//            result = Compare(   dwarf2Data,
+//                                a_cu, a_die->GetSibling(),
+//                                b_cu, b_die->GetSibling(),
+//                                compare_state, true, compare_children);
+//        }
+//
+//        return result;
+//    }
+//
+//    if (a_die == NULL)
+//        return -1;  // a_die is NULL, yet b_die is non-NULL
+//    else
+//        return 1;   // a_die is non-NULL, yet b_die is NULL
+//
+//}
+//
+//
+//int
+//DWARFDebugInfoEntry::Compare
+//(
+//  SymbolFileDWARF* dwarf2Data,
+//  const DWARFCompileUnit* cu_a,
+//  const DWARFDebugInfoEntry* die_a,
+//  const DWARFCompileUnit* cu_a,
+//  const DWARFDebugInfoEntry* die_b,
+//  CompareState &compare_state
+//)
+//{
+//}
+
+//----------------------------------------------------------------------
+// GetDIENamesAndRanges
+//
+// Gets the valid address ranges for a given DIE by looking for a
+// DW_AT_low_pc/DW_AT_high_pc pair, DW_AT_entry_pc, or DW_AT_ranges
+// attributes.
+//----------------------------------------------------------------------
+bool
+DWARFDebugInfoEntry::GetDIENamesAndRanges
+(
+    SymbolFileDWARF* dwarf2Data,
+    const DWARFCompileUnit* cu,
+    const char * &name,
+    const char * &mangled,
+    DWARFDebugRanges::RangeList& ranges,
+    int& decl_file,
+    int& decl_line,
+    int& decl_column,
+    int& call_file,
+    int& call_line,
+    int& call_column,
+    DWARFExpression *frame_base
+) const
+{
+    if (dwarf2Data == NULL)
+        return false;
+
+    dw_addr_t lo_pc = DW_INVALID_ADDRESS;
+    dw_addr_t hi_pc = DW_INVALID_ADDRESS;
+    std::vector<dw_offset_t> die_offsets;
+    bool set_frame_base_loclist_addr = false;
+    
+    dw_offset_t offset;
+    const DWARFAbbreviationDeclaration* abbrevDecl = GetAbbreviationDeclarationPtr(dwarf2Data, cu, offset);
+
+    if (abbrevDecl)
+    {
+        const DataExtractor& debug_info_data = dwarf2Data->get_debug_info_data();
+
+        if (!debug_info_data.ValidOffset(offset))
+            return false;
+
+        const uint32_t numAttributes = abbrevDecl->NumAttributes();
+        uint32_t i;
+        dw_attr_t attr;
+        dw_form_t form;
+        for (i=0; i<numAttributes; ++i)
+        {
+            abbrevDecl->GetAttrAndFormByIndexUnchecked(i, attr, form);
+            DWARFFormValue form_value(form);
+            if (form_value.ExtractValue(debug_info_data, &offset, cu))
+            {
+                switch (attr)
+                {
+                case DW_AT_low_pc:
+                case DW_AT_entry_pc:
+                    lo_pc = form_value.Unsigned();
+                    break;
+
+                case DW_AT_high_pc:
+                    hi_pc = form_value.Unsigned();
+                    break;
+
+                case DW_AT_ranges:
+                    {
+                        const DWARFDebugRanges* debug_ranges = dwarf2Data->DebugRanges();
+                        debug_ranges->FindRanges(form_value.Unsigned(), ranges);
+                        // All DW_AT_ranges are relative to the base address of the
+                        // compile unit. We add the compile unit base address to make
+                        // sure all the addresses are properly fixed up.
+                        ranges.Slide(cu->GetBaseAddress());
+                    }
+                    break;
+
+                case DW_AT_name:
+                    if (name == NULL)
+                        name = form_value.AsCString(&dwarf2Data->get_debug_str_data());
+                    break;
+
+                case DW_AT_MIPS_linkage_name:
+                    if (mangled == NULL)
+                        mangled = form_value.AsCString(&dwarf2Data->get_debug_str_data());
+                    break;
+
+                case DW_AT_abstract_origin:
+                    die_offsets.push_back(form_value.Reference(cu));
+                    break;
+
+                case DW_AT_specification:
+                    die_offsets.push_back(form_value.Reference(cu));
+                    break;
+
+                case DW_AT_decl_file:
+                    if (decl_file == 0)
+                        decl_file = form_value.Unsigned();
+                    break;
+
+                case DW_AT_decl_line:
+                    if (decl_line == 0)
+                        decl_line = form_value.Unsigned();
+                    break;
+
+                case DW_AT_decl_column:
+                    if (decl_column == 0)
+                        decl_column = form_value.Unsigned();
+                    break;
+
+                case DW_AT_call_file:
+                    if (call_file == 0)
+                        call_file = form_value.Unsigned();
+                    break;
+
+                case DW_AT_call_line:
+                    if (call_line == 0)
+                        call_line = form_value.Unsigned();
+                    break;
+
+                case DW_AT_call_column:
+                    if (call_column == 0)
+                        call_column = form_value.Unsigned();
+                    break;
+
+                case DW_AT_frame_base:
+                    if (frame_base)
+                    {
+                        if (form_value.BlockData())
+                        {
+                            uint32_t block_offset = form_value.BlockData() - debug_info_data.GetDataStart();
+                            uint32_t block_length = form_value.Unsigned();
+                            frame_base->SetOpcodeData(debug_info_data, block_offset, block_length);
+                        }
+                        else
+                        {
+                            const DataExtractor &debug_loc_data = dwarf2Data->get_debug_loc_data();
+                            const dw_offset_t debug_loc_offset = form_value.Unsigned();
+
+                            size_t loc_list_length = DWARFLocationList::Size(debug_loc_data, debug_loc_offset);
+                            if (loc_list_length > 0)
+                            {
+                                frame_base->SetOpcodeData(debug_loc_data, debug_loc_offset, loc_list_length);
+                                if (lo_pc != DW_INVALID_ADDRESS)
+                                {
+                                    assert (lo_pc >= cu->GetBaseAddress());
+                                    frame_base->SetLocationListSlide(lo_pc - cu->GetBaseAddress());
+                                }
+                                else
+                                {
+                                    set_frame_base_loclist_addr = true;
+                                }
+                            }
+                        }
+                    }
+                    break;
+
+                default:
+                    break;
+                }
+            }
+        }
+    }
+
+    if (ranges.IsEmpty())
+    {
+        if (lo_pc != DW_INVALID_ADDRESS)
+        {
+            if (hi_pc != DW_INVALID_ADDRESS && hi_pc > lo_pc)
+                ranges.Append(DWARFDebugRanges::Range (lo_pc, hi_pc - lo_pc));
+            else
+                ranges.Append(DWARFDebugRanges::Range (lo_pc, 0));
+        }
+    }
+    
+    if (set_frame_base_loclist_addr)
+    {
+        dw_addr_t lowest_range_pc = ranges.GetMinRangeBase(0);
+        assert (lowest_range_pc >= cu->GetBaseAddress());
+        frame_base->SetLocationListSlide (lowest_range_pc - cu->GetBaseAddress());
+    }
+
+    if (ranges.IsEmpty() || name == NULL || mangled == NULL)
+    {
+        std::vector<dw_offset_t>::const_iterator pos;
+        std::vector<dw_offset_t>::const_iterator end = die_offsets.end();
+        for (pos = die_offsets.begin(); pos != end; ++pos)
+        {
+            DWARFCompileUnitSP cu_sp_ptr;
+            const DWARFDebugInfoEntry* die = NULL;
+            dw_offset_t die_offset = *pos;
+            if (die_offset != DW_INVALID_OFFSET)
+            {
+                die = dwarf2Data->DebugInfo()->GetDIEPtr(die_offset, &cu_sp_ptr);
+                if (die)
+                    die->GetDIENamesAndRanges(dwarf2Data, cu_sp_ptr.get(), name, mangled, ranges, decl_file, decl_line, decl_column, call_file, call_line, call_column);
+            }
+        }
+    }
+    return !ranges.IsEmpty();
+}
+
+//----------------------------------------------------------------------
+// Dump
+//
+// Dumps a debug information entry and all of it's attributes to the
+// specified stream.
+//----------------------------------------------------------------------
+void
+DWARFDebugInfoEntry::Dump
+(
+    SymbolFileDWARF* dwarf2Data,
+    const DWARFCompileUnit* cu,
+    Stream &s,
+    uint32_t recurse_depth
+) const
+{
+    const DataExtractor& debug_info_data = dwarf2Data->get_debug_info_data();
+    uint32_t offset = m_offset;
+
+    if (debug_info_data.ValidOffset(offset))
+    {
+        dw_uleb128_t abbrCode = debug_info_data.GetULEB128(&offset);
+
+        s.Printf("\n0x%8.8x: ", m_offset);
+        s.Indent();
+        if (abbrCode != m_abbr_idx)
+        {
+            s.Printf( "error: DWARF has been modified\n");
+        }
+        else if (abbrCode)
+        {
+            const DWARFAbbreviationDeclaration* abbrevDecl = cu->GetAbbreviations()->GetAbbreviationDeclaration (abbrCode);
+
+            if (abbrevDecl)
+            {
+                s.PutCString(DW_TAG_value_to_name(abbrevDecl->Tag()));
+                s.Printf( " [%u] %c\n", abbrCode, abbrevDecl->HasChildren() ? '*':' ');
+
+                // Dump all data in the .debug_info for the attributes
+                const uint32_t numAttributes = abbrevDecl->NumAttributes();
+                uint32_t i;
+                dw_attr_t attr;
+                dw_form_t form;
+                for (i=0; i<numAttributes; ++i)
+                {
+                    abbrevDecl->GetAttrAndFormByIndexUnchecked(i, attr, form);
+
+                    DumpAttribute(dwarf2Data, cu, debug_info_data, &offset, s, attr, form);
+                }
+
+                const DWARFDebugInfoEntry* child = GetFirstChild();
+                if (recurse_depth > 0 && child)
+                {
+                    s.IndentMore();
+
+                    while (child)
+                    {
+                        child->Dump(dwarf2Data, cu, s, recurse_depth-1);
+                        child = child->GetSibling();
+                    }
+                    s.IndentLess();
+                }
+            }
+            else
+                s.Printf( "Abbreviation code note found in 'debug_abbrev' class for code: %u\n", abbrCode);
+        }
+        else
+        {
+            s.Printf( "NULL\n");
+        }
+    }
+}
+
+void
+DWARFDebugInfoEntry::DumpLocation
+(
+    SymbolFileDWARF* dwarf2Data,
+    DWARFCompileUnit* cu,
+    Stream &s
+) const
+{
+    const DWARFDebugInfoEntry *cu_die = cu->GetCompileUnitDIEOnly();
+    const char *cu_name = NULL;
+    if (cu_die != NULL)
+        cu_name = cu_die->GetName (dwarf2Data, cu);
+    const char *obj_file_name = NULL;
+    ObjectFile *obj_file = dwarf2Data->GetObjectFile();
+    if (obj_file)
+        obj_file_name = obj_file->GetFileSpec().GetFilename().AsCString();
+    const char *die_name = GetName (dwarf2Data, cu);
+    s.Printf ("0x%8.8x/0x%8.8x: %-30s (from %s in %s)", 
+              cu->GetOffset(),
+              GetOffset(),
+              die_name ? die_name : "", 
+              cu_name ? cu_name : "<NULL>",
+              obj_file_name ? obj_file_name : "<NULL>");
+}
+
+//----------------------------------------------------------------------
+// DumpAttribute
+//
+// Dumps a debug information entry attribute along with it's form. Any
+// special display of attributes is done (disassemble location lists,
+// show enumeration values for attributes, etc).
+//----------------------------------------------------------------------
+void
+DWARFDebugInfoEntry::DumpAttribute
+(
+    SymbolFileDWARF* dwarf2Data,
+    const DWARFCompileUnit* cu,
+    const DataExtractor& debug_info_data,
+    uint32_t* offset_ptr,
+    Stream &s,
+    dw_attr_t attr,
+    dw_form_t form
+)
+{
+    bool verbose    = s.GetVerbose();
+    bool show_form  = s.GetFlags().Test(DWARFDebugInfo::eDumpFlag_ShowForm);
+    const DataExtractor* debug_str_data = dwarf2Data ? &dwarf2Data->get_debug_str_data() : NULL;
+    if (verbose)
+        s.Offset (*offset_ptr);
+    else
+        s.Printf ("            ");
+    s.Indent(DW_AT_value_to_name(attr));
+
+    if (show_form)
+    {
+        s.Printf( "[%s", DW_FORM_value_to_name(form));
+    }
+
+    DWARFFormValue form_value(form);
+
+    if (!form_value.ExtractValue(debug_info_data, offset_ptr, cu))
+        return;
+
+    if (show_form)
+    {
+        if (form == DW_FORM_indirect)
+        {
+            s.Printf( " [%s]", DW_FORM_value_to_name(form_value.Form()));
+        }
+
+        s.PutCString("] ");
+    }
+
+    s.PutCString("( ");
+
+    // Always dump form value if verbose is enabled
+    if (verbose)
+    {
+        form_value.Dump(s, debug_str_data, cu);
+    }
+
+
+    // Check to see if we have any special attribute formatters
+    switch (attr)
+    {
+    case DW_AT_stmt_list:
+        if ( verbose ) s.PutCString(" ( ");
+        s.Printf( "0x%8.8llx", form_value.Unsigned());
+        if ( verbose ) s.PutCString(" )");
+        break;
+
+    case DW_AT_language:
+        if ( verbose ) s.PutCString(" ( ");
+        s.PutCString(DW_LANG_value_to_name(form_value.Unsigned()));
+        if ( verbose ) s.PutCString(" )");
+        break;
+
+    case DW_AT_encoding:
+        if ( verbose ) s.PutCString(" ( ");
+        s.PutCString(DW_ATE_value_to_name(form_value.Unsigned()));
+        if ( verbose ) s.PutCString(" )");
+        break;
+
+    case DW_AT_frame_base:
+    case DW_AT_location:
+    case DW_AT_data_member_location:
+        {
+            const uint8_t* blockData = form_value.BlockData();
+            if (blockData)
+            {
+                if (!verbose)
+                    form_value.Dump(s, debug_str_data, cu);
+
+                // Location description is inlined in data in the form value
+                DataExtractor locationData(debug_info_data, (*offset_ptr) - form_value.Unsigned(), form_value.Unsigned());
+                if ( verbose ) s.PutCString(" ( ");
+                print_dwarf_expression (s, locationData, DWARFCompileUnit::GetAddressByteSize(cu), 4, false);
+                if ( verbose ) s.PutCString(" )");
+            }
+            else
+            {
+                // We have a location list offset as the value that is
+                // the offset into the .debug_loc section that describes
+                // the value over it's lifetime
+                uint64_t debug_loc_offset = form_value.Unsigned();
+                if (dwarf2Data)
+                {
+                    if ( !verbose )
+                        form_value.Dump(s, debug_str_data, cu);
+                    DWARFLocationList::Dump(s, cu, dwarf2Data->get_debug_loc_data(), debug_loc_offset);
+                }
+                else
+                {
+                    if ( !verbose )
+                        form_value.Dump(s, NULL, cu);
+                }
+            }
+        }
+        break;
+
+    case DW_AT_abstract_origin:
+    case DW_AT_specification:
+        {
+            uint64_t abstract_die_offset = form_value.Reference(cu);
+            form_value.Dump(s, debug_str_data, cu);
+        //  *ostrm_ptr << HEX32 << abstract_die_offset << " ( ";
+            if ( verbose ) s.PutCString(" ( ");
+            GetName(dwarf2Data, cu, abstract_die_offset, s);
+            if ( verbose ) s.PutCString(" )");
+        }
+        break;
+
+    case DW_AT_type:
+        {
+            uint64_t type_die_offset = form_value.Reference(cu);
+            if (!verbose)
+                form_value.Dump(s, debug_str_data, cu);
+            s.PutCString(" ( ");
+            AppendTypeName(dwarf2Data, cu, type_die_offset, s);
+            s.PutCString(" )");
+        }
+        break;
+
+    case DW_AT_ranges:
+        {
+            if ( !verbose )
+                form_value.Dump(s, debug_str_data, cu);
+            uint32_t ranges_offset = form_value.Unsigned();
+            dw_addr_t base_addr = cu ? cu->GetBaseAddress() : 0;
+            DWARFDebugRanges::Dump(s, dwarf2Data->get_debug_ranges_data(), &ranges_offset, base_addr);
+        }
+        break;
+
+    default:
+        if ( !verbose )
+            form_value.Dump(s, debug_str_data, cu);
+        break;
+    }
+
+    s.PutCString(" )\n");
+}
+
+//----------------------------------------------------------------------
+// Get all attribute values for a given DIE, including following any
+// specification or abstract origin attributes and including those in
+// the results. Any duplicate attributes will have the first instance
+// take precedence (this can happen for declaration attributes).
+//----------------------------------------------------------------------
+size_t
+DWARFDebugInfoEntry::GetAttributes
+(
+    SymbolFileDWARF* dwarf2Data,
+    const DWARFCompileUnit* cu,
+    const uint8_t *fixed_form_sizes,
+    DWARFDebugInfoEntry::Attributes& attributes,
+    uint32_t curr_depth
+) const
+{
+    uint32_t offset;
+    const DWARFAbbreviationDeclaration* abbrevDecl = GetAbbreviationDeclarationPtr(dwarf2Data, cu, offset);
+
+    if (abbrevDecl)
+    {
+        const DataExtractor& debug_info_data = dwarf2Data->get_debug_info_data();
+
+        if (fixed_form_sizes == NULL)
+            fixed_form_sizes = DWARFFormValue::GetFixedFormSizesForAddressSize(cu->GetAddressByteSize());
+
+        const uint32_t num_attributes = abbrevDecl->NumAttributes();
+        uint32_t i;
+        dw_attr_t attr;
+        dw_form_t form;
+        DWARFFormValue form_value;
+        for (i=0; i<num_attributes; ++i)
+        {
+            abbrevDecl->GetAttrAndFormByIndexUnchecked (i, attr, form);
+            
+            // If we are tracking down DW_AT_specification or DW_AT_abstract_origin
+            // attributes, the depth will be non-zero. We need to omit certain
+            // attributes that don't make sense.
+            switch (attr)
+            {
+            case DW_AT_sibling:
+            case DW_AT_declaration:
+                if (curr_depth > 0)
+                {
+                    // This attribute doesn't make sense when combined with
+                    // the DIE that references this DIE. We know a DIE is 
+                    // referencing this DIE because curr_depth is not zero
+                    break;  
+                }
+                // Fall through...
+            default:
+                attributes.Append(cu, offset, attr, form);
+                break;
+            }
+
+            if ((attr == DW_AT_specification) || (attr == DW_AT_abstract_origin))
+            {
+                form_value.SetForm(form);
+                if (form_value.ExtractValue(debug_info_data, &offset, cu))
+                {
+                    const DWARFDebugInfoEntry* die = NULL;
+                    dw_offset_t die_offset = form_value.Reference(cu);
+                    if (cu->ContainsDIEOffset(die_offset))
+                    {
+                        die = const_cast<DWARFCompileUnit*>(cu)->GetDIEPtr(die_offset);
+                        if (die)
+                            die->GetAttributes(dwarf2Data, cu, fixed_form_sizes, attributes, curr_depth + 1);
+                    }
+                    else
+                    {
+                        DWARFCompileUnitSP cu_sp_ptr;
+                        die = const_cast<SymbolFileDWARF*>(dwarf2Data)->DebugInfo()->GetDIEPtr(die_offset, &cu_sp_ptr);
+                        if (die)
+                            die->GetAttributes(dwarf2Data, cu_sp_ptr.get(), fixed_form_sizes, attributes, curr_depth + 1);
+                    }
+                }
+            }
+            else
+            {
+                const uint8_t fixed_skip_size = fixed_form_sizes [form];
+                if (fixed_skip_size)
+                    offset += fixed_skip_size;
+                else
+                    DWARFFormValue::SkipValue(form, debug_info_data, &offset, cu);
+            }
+        }
+    }
+    else
+    {
+        attributes.Clear();
+    }
+    return attributes.Size();
+
+}
+
+//----------------------------------------------------------------------
+// GetAttributeValue
+//
+// Get the value of an attribute and return the .debug_info offset of the
+// attribute if it was properly extracted into form_value, or zero
+// if we fail since an offset of zero is invalid for an attribute (it
+// would be a compile unit header).
+//----------------------------------------------------------------------
+dw_offset_t
+DWARFDebugInfoEntry::GetAttributeValue
+(
+    SymbolFileDWARF* dwarf2Data,
+    const DWARFCompileUnit* cu,
+    const dw_attr_t attr,
+    DWARFFormValue& form_value,
+    dw_offset_t* end_attr_offset_ptr
+) const
+{
+    uint32_t offset;
+    const DWARFAbbreviationDeclaration* abbrevDecl = GetAbbreviationDeclarationPtr(dwarf2Data, cu, offset);
+
+    if (abbrevDecl)
+    {
+        uint32_t attr_idx = abbrevDecl->FindAttributeIndex(attr);
+
+        if (attr_idx != DW_INVALID_INDEX)
+        {
+            const DataExtractor& debug_info_data = dwarf2Data->get_debug_info_data();
+
+            uint32_t idx=0;
+            while (idx<attr_idx)
+                DWARFFormValue::SkipValue(abbrevDecl->GetFormByIndex(idx++), debug_info_data, &offset, cu);
+
+            const dw_offset_t attr_offset = offset;
+            form_value.SetForm(abbrevDecl->GetFormByIndex(idx));
+            if (form_value.ExtractValue(debug_info_data, &offset, cu))
+            {
+                if (end_attr_offset_ptr)
+                    *end_attr_offset_ptr = offset;
+                return attr_offset;
+            }
+        }
+    }
+
+    return 0;
+}
+
+//----------------------------------------------------------------------
+// GetAttributeValueAsString
+//
+// Get the value of an attribute as a string return it. The resulting
+// pointer to the string data exists within the supplied SymbolFileDWARF
+// and will only be available as long as the SymbolFileDWARF is still around
+// and it's content doesn't change.
+//----------------------------------------------------------------------
+const char*
+DWARFDebugInfoEntry::GetAttributeValueAsString
+(
+    SymbolFileDWARF* dwarf2Data,
+    const DWARFCompileUnit* cu,
+    const dw_attr_t attr,
+    const char* fail_value) const
+{
+    DWARFFormValue form_value;
+    if (GetAttributeValue(dwarf2Data, cu, attr, form_value))
+        return form_value.AsCString(&dwarf2Data->get_debug_str_data());
+    return fail_value;
+}
+
+//----------------------------------------------------------------------
+// GetAttributeValueAsUnsigned
+//
+// Get the value of an attribute as unsigned and return it.
+//----------------------------------------------------------------------
+uint64_t
+DWARFDebugInfoEntry::GetAttributeValueAsUnsigned
+(
+    SymbolFileDWARF* dwarf2Data,
+    const DWARFCompileUnit* cu,
+    const dw_attr_t attr,
+    uint64_t fail_value
+) const
+{
+    DWARFFormValue form_value;
+    if (GetAttributeValue(dwarf2Data, cu, attr, form_value))
+        return form_value.Unsigned();
+    return fail_value;
+}
+
+//----------------------------------------------------------------------
+// GetAttributeValueAsSigned
+//
+// Get the value of an attribute a signed value and return it.
+//----------------------------------------------------------------------
+int64_t
+DWARFDebugInfoEntry::GetAttributeValueAsSigned
+(
+    SymbolFileDWARF* dwarf2Data,
+    const DWARFCompileUnit* cu,
+    const dw_attr_t attr,
+    int64_t fail_value
+) const
+{
+    DWARFFormValue form_value;
+    if (GetAttributeValue(dwarf2Data, cu, attr, form_value))
+        return form_value.Signed();
+    return fail_value;
+}
+
+//----------------------------------------------------------------------
+// GetAttributeValueAsReference
+//
+// Get the value of an attribute as reference and fix up and compile
+// unit relative offsets as needed.
+//----------------------------------------------------------------------
+uint64_t
+DWARFDebugInfoEntry::GetAttributeValueAsReference
+(
+    SymbolFileDWARF* dwarf2Data,
+    const DWARFCompileUnit* cu,
+    const dw_attr_t attr,
+    uint64_t fail_value
+) const
+{
+    DWARFFormValue form_value;
+    if (GetAttributeValue(dwarf2Data, cu, attr, form_value))
+        return form_value.Reference(cu);
+    return fail_value;
+}
+
+//----------------------------------------------------------------------
+// GetAttributeValueAsLocation
+//
+// Get the value of an attribute as reference and fix up and compile
+// unit relative offsets as needed.
+//----------------------------------------------------------------------
+dw_offset_t
+DWARFDebugInfoEntry::GetAttributeValueAsLocation
+(
+    SymbolFileDWARF* dwarf2Data,
+    const DWARFCompileUnit* cu,
+    const dw_attr_t attr,
+    DataExtractor& location_data,
+    uint32_t &block_size
+) const
+{
+    block_size = 0;
+    DWARFFormValue form_value;
+
+    // Empty out data in case we don't find anything
+    location_data.Clear();
+    dw_offset_t end_addr_offset = DW_INVALID_OFFSET;
+    const dw_offset_t attr_offset = GetAttributeValue(dwarf2Data, cu, attr, form_value, &end_addr_offset);
+    if (attr_offset)
+    {
+        const uint8_t* blockData = form_value.BlockData();
+        if (blockData)
+        {
+            // We have an inlined location list in the .debug_info section
+            const DataExtractor& debug_info = dwarf2Data->get_debug_info_data();
+            dw_offset_t block_offset = blockData - debug_info.GetDataStart();
+            block_size = (end_addr_offset - attr_offset) - form_value.Unsigned();
+            location_data.SetData(debug_info, block_offset, block_size);
+        }
+        else
+        {
+            // We have a location list offset as the value that is
+            // the offset into the .debug_loc section that describes
+            // the value over it's lifetime
+            dw_offset_t debug_loc_offset = form_value.Unsigned();
+            if (dwarf2Data)
+            {
+                assert(dwarf2Data->get_debug_loc_data().GetAddressByteSize() == cu->GetAddressByteSize());
+                return DWARFLocationList::Extract(dwarf2Data->get_debug_loc_data(), &debug_loc_offset, location_data);
+            }
+        }
+    }
+    return attr_offset;
+}
+
+//----------------------------------------------------------------------
+// GetName
+//
+// Get value of the DW_AT_name attribute and return it if one exists,
+// else return NULL.
+//----------------------------------------------------------------------
+const char*
+DWARFDebugInfoEntry::GetName
+(
+    SymbolFileDWARF* dwarf2Data,
+    const DWARFCompileUnit* cu
+) const
+{
+    DWARFFormValue form_value;
+    if (GetAttributeValue(dwarf2Data, cu, DW_AT_name, form_value))
+        return form_value.AsCString(&dwarf2Data->get_debug_str_data());
+    return NULL;
+}
+
+
+//----------------------------------------------------------------------
+// GetMangledName
+//
+// Get value of the DW_AT_MIPS_linkage_name attribute and return it if
+// one exists, else return the value of the DW_AT_name attribute
+//----------------------------------------------------------------------
+const char*
+DWARFDebugInfoEntry::GetMangledName
+(
+    SymbolFileDWARF* dwarf2Data,
+    const DWARFCompileUnit* cu,
+    bool substitute_name_allowed
+) const
+{
+    const char* name = NULL;
+    DWARFFormValue form_value;
+
+    if (GetAttributeValue(dwarf2Data, cu, DW_AT_MIPS_linkage_name, form_value))
+        name = form_value.AsCString(&dwarf2Data->get_debug_str_data());
+
+    if (substitute_name_allowed && name == NULL)
+    {
+        if (GetAttributeValue(dwarf2Data, cu, DW_AT_name, form_value))
+            name = form_value.AsCString(&dwarf2Data->get_debug_str_data());
+    }
+    return name;
+}
+
+
+//----------------------------------------------------------------------
+// GetPubname
+//
+// Get value the name for a DIE as it should appear for a
+// .debug_pubnames or .debug_pubtypes section.
+//----------------------------------------------------------------------
+const char*
+DWARFDebugInfoEntry::GetPubname
+(
+    SymbolFileDWARF* dwarf2Data,
+    const DWARFCompileUnit* cu
+) const
+{
+    const char* name = NULL;
+    DWARFFormValue form_value;
+
+    if (GetAttributeValue(dwarf2Data, cu, DW_AT_MIPS_linkage_name, form_value))
+        name = form_value.AsCString(&dwarf2Data->get_debug_str_data());
+    else if (GetAttributeValue(dwarf2Data, cu, DW_AT_name, form_value))
+        name = form_value.AsCString(&dwarf2Data->get_debug_str_data());
+    else if (GetAttributeValue(dwarf2Data, cu, DW_AT_specification, form_value))
+    {
+        // The specification DIE may be in another compile unit so we need
+        // to get a die and its compile unit.
+        DWARFCompileUnitSP cu_sp_ptr;
+        const DWARFDebugInfoEntry* die = const_cast<SymbolFileDWARF*>(dwarf2Data)->DebugInfo()->GetDIEPtr(form_value.Reference(cu), &cu_sp_ptr);
+        if (die)
+            return die->GetPubname(dwarf2Data, cu_sp_ptr.get());
+    }
+    return name;
+}
+
+
+//----------------------------------------------------------------------
+// GetName
+//
+// Get value of the DW_AT_name attribute for a debug information entry
+// that exists at offset "die_offset" and place that value into the
+// supplied stream object. If the DIE is a NULL object "NULL" is placed
+// into the stream, and if no DW_AT_name attribute exists for the DIE
+// then nothing is printed.
+//----------------------------------------------------------------------
+bool
+DWARFDebugInfoEntry::GetName
+(
+    SymbolFileDWARF* dwarf2Data,
+    const DWARFCompileUnit* cu,
+    const uint32_t die_offset,
+    Stream &s
+)
+{
+    DWARFDebugInfoEntry die;
+    uint32_t offset = die_offset;
+    if (die.Extract(dwarf2Data, cu, &offset))
+    {
+        if (die.IsNULL())
+        {
+            s.PutCString("NULL");
+            return true;
+        }
+        else
+        {
+            DWARFFormValue form_value;
+            if (die.GetAttributeValue(dwarf2Data, cu, DW_AT_name, form_value))
+            {
+                const char* name = form_value.AsCString(&dwarf2Data->get_debug_str_data());
+                if (name)
+                {
+                    s.PutCString(name);
+                    return true;
+                }
+            }
+        }
+    }
+    return false;
+}
+
+//----------------------------------------------------------------------
+// AppendTypeName
+//
+// Follows the type name definition down through all needed tags to
+// end up with a fully qualified type name and dump the results to
+// the supplied stream. This is used to show the name of types given
+// a type identifier.
+//----------------------------------------------------------------------
+bool
+DWARFDebugInfoEntry::AppendTypeName
+(
+    SymbolFileDWARF* dwarf2Data,
+    const DWARFCompileUnit* cu,
+    const uint32_t die_offset,
+    Stream &s
+)
+{
+    DWARFDebugInfoEntry die;
+    uint32_t offset = die_offset;
+    if (die.Extract(dwarf2Data, cu, &offset))
+    {
+        if (die.IsNULL())
+        {
+            s.PutCString("NULL");
+            return true;
+        }
+        else
+        {
+            const char* name = die.GetPubname(dwarf2Data, cu);
+        //  if (die.GetAttributeValue(dwarf2Data, cu, DW_AT_name, form_value))
+        //      name = form_value.AsCString(&dwarf2Data->get_debug_str_data());
+            if (name)
+                s.PutCString(name);
+            else
+            {
+                bool result = true;
+                const DWARFAbbreviationDeclaration* abbrevDecl = die.GetAbbreviationDeclarationPtr(dwarf2Data, cu, offset);
+
+                switch (abbrevDecl->Tag())
+                {
+                case DW_TAG_array_type:         break;  // print out a "[]" after printing the full type of the element below
+                case DW_TAG_base_type:          s.PutCString("base ");         break;
+                case DW_TAG_class_type:         s.PutCString("class ");            break;
+                case DW_TAG_const_type:         s.PutCString("const ");            break;
+                case DW_TAG_enumeration_type:   s.PutCString("enum ");         break;
+                case DW_TAG_file_type:          s.PutCString("file ");         break;
+                case DW_TAG_interface_type:     s.PutCString("interface ");        break;
+                case DW_TAG_packed_type:        s.PutCString("packed ");       break;
+                case DW_TAG_pointer_type:       break;  // print out a '*' after printing the full type below
+                case DW_TAG_ptr_to_member_type: break;  // print out a '*' after printing the full type below
+                case DW_TAG_reference_type:     break;  // print out a '&' after printing the full type below
+                case DW_TAG_restrict_type:      s.PutCString("restrict ");     break;
+                case DW_TAG_set_type:           s.PutCString("set ");          break;
+                case DW_TAG_shared_type:        s.PutCString("shared ");       break;
+                case DW_TAG_string_type:        s.PutCString("string ");       break;
+                case DW_TAG_structure_type:     s.PutCString("struct ");       break;
+                case DW_TAG_subrange_type:      s.PutCString("subrange ");     break;
+                case DW_TAG_subroutine_type:    s.PutCString("function ");     break;
+                case DW_TAG_thrown_type:        s.PutCString("thrown ");       break;
+                case DW_TAG_union_type:         s.PutCString("union ");            break;
+                case DW_TAG_unspecified_type:   s.PutCString("unspecified ");  break;
+                case DW_TAG_volatile_type:      s.PutCString("volatile ");     break;
+                default:
+                    return false;
+                }
+
+                // Follow the DW_AT_type if possible
+                DWARFFormValue form_value;
+                if (die.GetAttributeValue(dwarf2Data, cu, DW_AT_type, form_value))
+                {
+                    uint64_t next_die_offset = form_value.Reference(cu);
+                    result = AppendTypeName(dwarf2Data, cu, next_die_offset, s);
+                }
+
+                switch (abbrevDecl->Tag())
+                {
+                case DW_TAG_array_type:         s.PutCString("[]");    break;
+                case DW_TAG_pointer_type:       s.PutChar('*');    break;
+                case DW_TAG_ptr_to_member_type: s.PutChar('*');    break;
+                case DW_TAG_reference_type:     s.PutChar('&');    break;
+                default:
+                    break;
+                }
+                return result;
+            }
+        }
+    }
+    return false;
+}
+
+bool
+DWARFDebugInfoEntry::Contains (const DWARFDebugInfoEntry *die) const
+{
+    if (die)
+    {
+        const dw_offset_t die_offset = die->GetOffset();
+        if (die_offset > GetOffset())
+        {
+            const DWARFDebugInfoEntry *sibling = GetSibling();
+            assert (sibling); // TODO: take this out
+            if (sibling)
+                return die_offset < sibling->GetOffset();
+        }
+    }
+    return false;
+}
+
+//----------------------------------------------------------------------
+// BuildAddressRangeTable
+//----------------------------------------------------------------------
+void
+DWARFDebugInfoEntry::BuildAddressRangeTable
+(
+    SymbolFileDWARF* dwarf2Data,
+    const DWARFCompileUnit* cu,
+    DWARFDebugAranges* debug_aranges
+) const
+{
+    if (m_tag)
+    {
+        if (m_tag == DW_TAG_subprogram)
+        {
+            dw_addr_t hi_pc = DW_INVALID_ADDRESS;
+            dw_addr_t lo_pc = GetAttributeValueAsUnsigned(dwarf2Data, cu, DW_AT_low_pc, DW_INVALID_ADDRESS);
+            if (lo_pc != DW_INVALID_ADDRESS)
+                hi_pc = GetAttributeValueAsUnsigned(dwarf2Data, cu, DW_AT_high_pc, DW_INVALID_ADDRESS);
+            if (hi_pc != DW_INVALID_ADDRESS)
+            {
+            /// printf("BuildAddressRangeTable() 0x%8.8x: %30s: [0x%8.8x - 0x%8.8x)\n", m_offset, DW_TAG_value_to_name(tag), lo_pc, hi_pc);
+                debug_aranges->AppendRange (cu->GetOffset(), lo_pc, hi_pc);
+            }
+        }
+
+
+        const DWARFDebugInfoEntry* child = GetFirstChild();
+        while (child)
+        {
+            child->BuildAddressRangeTable(dwarf2Data, cu, debug_aranges);
+            child = child->GetSibling();
+        }
+    }
+}
+
+//----------------------------------------------------------------------
+// BuildFunctionAddressRangeTable
+//
+// This function is very similar to the BuildAddressRangeTable function
+// except that the actual DIE offset for the function is placed in the
+// table instead of the compile unit offset (which is the way the
+// standard .debug_aranges section does it).
+//----------------------------------------------------------------------
+void
+DWARFDebugInfoEntry::BuildFunctionAddressRangeTable
+(
+    SymbolFileDWARF* dwarf2Data,
+    const DWARFCompileUnit* cu,
+    DWARFDebugAranges* debug_aranges
+) const
+{
+    if (m_tag)
+    {
+        if (m_tag == DW_TAG_subprogram)
+        {
+            dw_addr_t hi_pc = DW_INVALID_ADDRESS;
+            dw_addr_t lo_pc = GetAttributeValueAsUnsigned(dwarf2Data, cu, DW_AT_low_pc, DW_INVALID_ADDRESS);
+            if (lo_pc != DW_INVALID_ADDRESS)
+                hi_pc = GetAttributeValueAsUnsigned(dwarf2Data, cu, DW_AT_high_pc, DW_INVALID_ADDRESS);
+            if (hi_pc != DW_INVALID_ADDRESS)
+            {
+            //  printf("BuildAddressRangeTable() 0x%8.8x: [0x%16.16llx - 0x%16.16llx)\n", m_offset, lo_pc, hi_pc); // DEBUG ONLY
+                debug_aranges->AppendRange (GetOffset(), lo_pc, hi_pc);
+            }
+        }
+
+        const DWARFDebugInfoEntry* child = GetFirstChild();
+        while (child)
+        {
+            child->BuildFunctionAddressRangeTable(dwarf2Data, cu, debug_aranges);
+            child = child->GetSibling();
+        }
+    }
+}
+
+void
+DWARFDebugInfoEntry::GetDeclContextDIEs (SymbolFileDWARF* dwarf2Data, 
+                                         DWARFCompileUnit* cu,
+                                         DWARFDIECollection &decl_context_dies) const
+{
+    const DWARFDebugInfoEntry *parent_decl_ctx_die = GetParentDeclContextDIE (dwarf2Data, cu);
+    if (parent_decl_ctx_die && parent_decl_ctx_die != this)
+    {
+        decl_context_dies.Append(parent_decl_ctx_die);
+        parent_decl_ctx_die->GetDeclContextDIEs (dwarf2Data, cu, decl_context_dies);
+    }
+}
+
+void
+DWARFDebugInfoEntry::GetDWARFDeclContext (SymbolFileDWARF* dwarf2Data,
+                                          DWARFCompileUnit* cu,
+                                          DWARFDeclContext &dwarf_decl_ctx) const
+{
+    const dw_tag_t tag = Tag();
+    if (tag != DW_TAG_compile_unit)
+    {
+        dwarf_decl_ctx.AppendDeclContext(tag, GetName(dwarf2Data, cu));
+        const DWARFDebugInfoEntry *parent_decl_ctx_die = GetParentDeclContextDIE (dwarf2Data, cu);
+        if (parent_decl_ctx_die && parent_decl_ctx_die != this)
+        {
+            if (parent_decl_ctx_die->Tag() != DW_TAG_compile_unit)
+                parent_decl_ctx_die->GetDWARFDeclContext (dwarf2Data, cu, dwarf_decl_ctx);
+        }
+    }
+}
+
+
+bool
+DWARFDebugInfoEntry::MatchesDWARFDeclContext (SymbolFileDWARF* dwarf2Data,
+                                              DWARFCompileUnit* cu,
+                                              const DWARFDeclContext &dwarf_decl_ctx) const
+{
+    
+    DWARFDeclContext this_dwarf_decl_ctx;
+    GetDWARFDeclContext (dwarf2Data, cu, this_dwarf_decl_ctx);
+    return this_dwarf_decl_ctx == dwarf_decl_ctx;
+}
+
+const DWARFDebugInfoEntry *
+DWARFDebugInfoEntry::GetParentDeclContextDIE (SymbolFileDWARF* dwarf2Data, 
+											  DWARFCompileUnit* cu) const
+{
+	DWARFDebugInfoEntry::Attributes attributes;
+	GetAttributes(dwarf2Data, cu, NULL, attributes);
+	return GetParentDeclContextDIE (dwarf2Data, cu, attributes);
+}
+
+const DWARFDebugInfoEntry *
+DWARFDebugInfoEntry::GetParentDeclContextDIE (SymbolFileDWARF* dwarf2Data, 
+											  DWARFCompileUnit* cu,
+											  const DWARFDebugInfoEntry::Attributes& attributes) const
+{
+	const DWARFDebugInfoEntry * die = this;
+	
+	while (die != NULL)
+	{
+		// If this is the original DIE that we are searching for a declaration 
+		// for, then don't look in the cache as we don't want our own decl 
+		// context to be our decl context...
+		if (die != this)
+		{            
+			switch (die->Tag())
+			{
+				case DW_TAG_compile_unit:
+				case DW_TAG_namespace:
+				case DW_TAG_structure_type:
+				case DW_TAG_union_type:
+				case DW_TAG_class_type:
+					return die;
+					
+				default:
+					break;
+			}
+		}
+		
+		dw_offset_t die_offset;
+        
+		die_offset = attributes.FormValueAsUnsigned(dwarf2Data, DW_AT_specification, DW_INVALID_OFFSET);
+		if (die_offset != DW_INVALID_OFFSET)
+		{
+			const DWARFDebugInfoEntry *spec_die = cu->GetDIEPtr (die_offset);
+			if (spec_die)
+			{
+				const DWARFDebugInfoEntry *spec_die_decl_ctx_die = spec_die->GetParentDeclContextDIE (dwarf2Data, cu);
+				if (spec_die_decl_ctx_die)
+					return spec_die_decl_ctx_die;
+			}
+		}
+		
+        die_offset = attributes.FormValueAsUnsigned(dwarf2Data, DW_AT_abstract_origin, DW_INVALID_OFFSET);
+		if (die_offset != DW_INVALID_OFFSET)
+		{
+			const DWARFDebugInfoEntry *abs_die = cu->GetDIEPtr (die_offset);
+			if (abs_die)
+			{
+				const DWARFDebugInfoEntry *abs_die_decl_ctx_die = abs_die->GetParentDeclContextDIE (dwarf2Data, cu);
+				if (abs_die_decl_ctx_die)
+					return abs_die_decl_ctx_die;
+			}
+		}
+		
+		die = die->GetParent();
+	}
+    return NULL;
+}
+
+
+const char *
+DWARFDebugInfoEntry::GetQualifiedName (SymbolFileDWARF* dwarf2Data, 
+									   DWARFCompileUnit* cu,
+									   std::string &storage) const
+{
+	DWARFDebugInfoEntry::Attributes attributes;
+	GetAttributes(dwarf2Data, cu, NULL, attributes);
+	return GetQualifiedName (dwarf2Data, cu, attributes, storage);
+}
+
+const char*
+DWARFDebugInfoEntry::GetQualifiedName (SymbolFileDWARF* dwarf2Data, 
+									   DWARFCompileUnit* cu,
+									   const DWARFDebugInfoEntry::Attributes& attributes,
+									   std::string &storage) const
+{
+	
+	const char *name = GetName (dwarf2Data, cu);
+	
+	if (name)
+	{
+		const DWARFDebugInfoEntry *parent_decl_ctx_die = GetParentDeclContextDIE (dwarf2Data, cu);
+		storage.clear();
+		// TODO: change this to get the correct decl context parent....
+		while (parent_decl_ctx_die)
+		{
+			const dw_tag_t parent_tag = parent_decl_ctx_die->Tag();
+			switch (parent_tag)
+			{
+                case DW_TAG_namespace:
+				{
+					const char *namespace_name = parent_decl_ctx_die->GetName (dwarf2Data, cu);
+					if (namespace_name)
+					{
+						storage.insert (0, "::");
+						storage.insert (0, namespace_name);
+					}
+					else
+					{
+						storage.insert (0, "(anonymous namespace)::");
+					}
+					parent_decl_ctx_die = parent_decl_ctx_die->GetParentDeclContextDIE(dwarf2Data, cu);
+				}
+                    break;
+					
+                case DW_TAG_class_type:
+                case DW_TAG_structure_type:
+                case DW_TAG_union_type:
+				{
+					const char *class_union_struct_name = parent_decl_ctx_die->GetName (dwarf2Data, cu);
+                    
+					if (class_union_struct_name)
+					{
+						storage.insert (0, "::");
+						storage.insert (0, class_union_struct_name);
+					}
+					parent_decl_ctx_die = parent_decl_ctx_die->GetParentDeclContextDIE(dwarf2Data, cu);
+				}
+                    break;
+                    
+                default:
+                    parent_decl_ctx_die = NULL;
+                    break;
+			}
+		}
+		
+		if (storage.empty())
+			storage.append ("::");
+        
+		storage.append (name);
+	}
+	if (storage.empty())
+		return NULL;
+	return storage.c_str();
+}
+
+
+//----------------------------------------------------------------------
+// LookupAddress
+//----------------------------------------------------------------------
+bool
+DWARFDebugInfoEntry::LookupAddress
+(
+    const dw_addr_t address,
+    SymbolFileDWARF* dwarf2Data,
+    const DWARFCompileUnit* cu,
+    DWARFDebugInfoEntry** function_die,
+    DWARFDebugInfoEntry** block_die
+)
+{
+    bool found_address = false;
+    if (m_tag)
+    {
+        bool check_children = false;
+        bool match_addr_range = false;
+    //  printf("0x%8.8x: %30s: address = 0x%8.8x - ", m_offset, DW_TAG_value_to_name(tag), address);
+        switch (m_tag)
+        {
+        case DW_TAG_array_type                 : break;
+        case DW_TAG_class_type                 : check_children = true; break;
+        case DW_TAG_entry_point                : break;
+        case DW_TAG_enumeration_type           : break;
+        case DW_TAG_formal_parameter           : break;
+        case DW_TAG_imported_declaration       : break;
+        case DW_TAG_label                      : break;
+        case DW_TAG_lexical_block              : check_children = true; match_addr_range = true; break;
+        case DW_TAG_member                     : break;
+        case DW_TAG_pointer_type               : break;
+        case DW_TAG_reference_type             : break;
+        case DW_TAG_compile_unit               : match_addr_range = true; break;
+        case DW_TAG_string_type                : break;
+        case DW_TAG_structure_type             : check_children = true; break;
+        case DW_TAG_subroutine_type            : break;
+        case DW_TAG_typedef                    : break;
+        case DW_TAG_union_type                 : break;
+        case DW_TAG_unspecified_parameters     : break;
+        case DW_TAG_variant                    : break;
+        case DW_TAG_common_block               : check_children = true; break;
+        case DW_TAG_common_inclusion           : break;
+        case DW_TAG_inheritance                : break;
+        case DW_TAG_inlined_subroutine         : check_children = true; match_addr_range = true; break;
+        case DW_TAG_module                     : match_addr_range = true; break;
+        case DW_TAG_ptr_to_member_type         : break;
+        case DW_TAG_set_type                   : break;
+        case DW_TAG_subrange_type              : break;
+        case DW_TAG_with_stmt                  : break;
+        case DW_TAG_access_declaration         : break;
+        case DW_TAG_base_type                  : break;
+        case DW_TAG_catch_block                : match_addr_range = true; break;
+        case DW_TAG_const_type                 : break;
+        case DW_TAG_constant                   : break;
+        case DW_TAG_enumerator                 : break;
+        case DW_TAG_file_type                  : break;
+        case DW_TAG_friend                     : break;
+        case DW_TAG_namelist                   : break;
+        case DW_TAG_namelist_item              : break;
+        case DW_TAG_packed_type                : break;
+        case DW_TAG_subprogram                 : match_addr_range = true; break;
+        case DW_TAG_template_type_parameter    : break;
+        case DW_TAG_template_value_parameter   : break;
+        case DW_TAG_thrown_type                : break;
+        case DW_TAG_try_block                  : match_addr_range = true; break;
+        case DW_TAG_variant_part               : break;
+        case DW_TAG_variable                   : break;
+        case DW_TAG_volatile_type              : break;
+        case DW_TAG_dwarf_procedure            : break;
+        case DW_TAG_restrict_type              : break;
+        case DW_TAG_interface_type             : break;
+        case DW_TAG_namespace                  : check_children = true; break;
+        case DW_TAG_imported_module            : break;
+        case DW_TAG_unspecified_type           : break;
+        case DW_TAG_partial_unit               : break;
+        case DW_TAG_imported_unit              : break;
+        case DW_TAG_shared_type                : break;
+        default: break;
+        }
+
+        if (match_addr_range)
+        {
+            dw_addr_t lo_pc = GetAttributeValueAsUnsigned(dwarf2Data, cu, DW_AT_low_pc, DW_INVALID_ADDRESS);
+            if (lo_pc != DW_INVALID_ADDRESS)
+            {
+                dw_addr_t hi_pc = GetAttributeValueAsUnsigned(dwarf2Data, cu, DW_AT_high_pc, DW_INVALID_ADDRESS);
+                if (hi_pc != DW_INVALID_ADDRESS)
+                {
+                    //  printf("\n0x%8.8x: %30s: address = 0x%8.8x  [0x%8.8x - 0x%8.8x) ", m_offset, DW_TAG_value_to_name(tag), address, lo_pc, hi_pc);
+                    if ((lo_pc <= address) && (address < hi_pc))
+                    {
+                        found_address = true;
+                    //  puts("***MATCH***");
+                        switch (m_tag)
+                        {
+                        case DW_TAG_compile_unit:       // File
+                            check_children = ((function_die != NULL) || (block_die != NULL));
+                            break;
+
+                        case DW_TAG_subprogram:         // Function
+                            if (function_die)
+                                *function_die = this;
+                            check_children = (block_die != NULL);
+                            break;
+
+                        case DW_TAG_inlined_subroutine: // Inlined Function
+                        case DW_TAG_lexical_block:      // Block { } in code
+                            if (block_die)
+                            {
+                                *block_die = this;
+                                check_children = true;
+                            }
+                            break;
+
+                        default:
+                            check_children = true;
+                            break;
+                        }
+                    }
+                }
+                else
+                {   // compile units may not have a valid high/low pc when there
+                    // are address gaps in subroutines so we must always search
+                    // if there is no valid high and low PC
+                    check_children = (m_tag == DW_TAG_compile_unit) && ((function_die != NULL) || (block_die != NULL));
+                }
+            }
+            else
+            {
+                dw_offset_t debug_ranges_offset = GetAttributeValueAsUnsigned(dwarf2Data, cu, DW_AT_ranges, DW_INVALID_OFFSET);
+                if (debug_ranges_offset != DW_INVALID_OFFSET)
+                {
+                    DWARFDebugRanges::RangeList ranges;
+                    DWARFDebugRanges* debug_ranges = dwarf2Data->DebugRanges();
+                    debug_ranges->FindRanges(debug_ranges_offset, ranges);
+                    // All DW_AT_ranges are relative to the base address of the
+                    // compile unit. We add the compile unit base address to make
+                    // sure all the addresses are properly fixed up.
+                    ranges.Slide (cu->GetBaseAddress());
+                    if (ranges.FindEntryThatContains(address))
+                    {
+                        found_address = true;
+                    //  puts("***MATCH***");
+                        switch (m_tag)
+                        {
+                        case DW_TAG_compile_unit:       // File
+                            check_children = ((function_die != NULL) || (block_die != NULL));
+                            break;
+
+                        case DW_TAG_subprogram:         // Function
+                            if (function_die)
+                                *function_die = this;
+                            check_children = (block_die != NULL);
+                            break;
+
+                        case DW_TAG_inlined_subroutine: // Inlined Function
+                        case DW_TAG_lexical_block:      // Block { } in code
+                            if (block_die)
+                            {
+                                *block_die = this;
+                                check_children = true;
+                            }
+                            break;
+
+                        default:
+                            check_children = true;
+                            break;
+                        }
+                    }
+                    else
+                    {
+                        check_children = false;
+                    }
+                }
+            }
+        }
+
+
+        if (check_children)
+        {
+        //  printf("checking children\n");
+            DWARFDebugInfoEntry* child = GetFirstChild();
+            while (child)
+            {
+                if (child->LookupAddress(address, dwarf2Data, cu, function_die, block_die))
+                    return true;
+                child = child->GetSibling();
+            }
+        }
+    }
+    return found_address;
+}
+
+const DWARFAbbreviationDeclaration* 
+DWARFDebugInfoEntry::GetAbbreviationDeclarationPtr (SymbolFileDWARF* dwarf2Data,
+                                                    const DWARFCompileUnit *cu,
+                                                    dw_offset_t &offset) const
+{
+    offset = GetOffset();
+    
+    const DWARFAbbreviationDeclaration* abbrev_decl = cu->GetAbbreviations()->GetAbbreviationDeclaration (m_abbr_idx);
+    if (abbrev_decl)
+    {
+        // Make sure the abbreviation code still matches. If it doesn't and
+        // the DWARF data was mmap'ed, the backing file might have been modified
+        // which is bad news.
+        const uint64_t abbrev_code = dwarf2Data->get_debug_info_data().GetULEB128 (&offset);
+    
+        if (abbrev_decl->Code() == abbrev_code)
+            return abbrev_decl;
+        
+        dwarf2Data->GetObjectFile()->GetModule()->ReportErrorIfModifyDetected ("0x%8.8x: the DWARF debug information has been modified (abbrev code was %u, and is now %u)", 
+                                                                               GetOffset(),
+                                                                               (uint32_t)abbrev_decl->Code(),
+                                                                               (uint32_t)abbrev_code);
+    }
+    offset = DW_INVALID_OFFSET;
+    return NULL;
+}
+
+
+bool
+DWARFDebugInfoEntry::OffsetLessThan (const DWARFDebugInfoEntry& a, const DWARFDebugInfoEntry& b)
+{
+    return a.GetOffset() < b.GetOffset();
+}
+
+void
+DWARFDebugInfoEntry::DumpDIECollection (Stream &strm, DWARFDebugInfoEntry::collection &die_collection)
+{
+    DWARFDebugInfoEntry::const_iterator pos;
+    DWARFDebugInfoEntry::const_iterator end = die_collection.end();
+    strm.PutCString("\noffset    parent   sibling  child\n");
+    strm.PutCString("--------  -------- -------- --------\n");
+    for (pos = die_collection.begin(); pos != end; ++pos)
+    {
+        const DWARFDebugInfoEntry& die_ref = *pos;
+        const DWARFDebugInfoEntry* p = die_ref.GetParent();
+        const DWARFDebugInfoEntry* s = die_ref.GetSibling();
+        const DWARFDebugInfoEntry* c = die_ref.GetFirstChild();
+        strm.Printf("%.8x: %.8x %.8x %.8x 0x%4.4x %s%s\n", 
+                    die_ref.GetOffset(),
+                    p ? p->GetOffset() : 0,
+                    s ? s->GetOffset() : 0,
+                    c ? c->GetOffset() : 0,
+                    die_ref.Tag(), 
+                    DW_TAG_value_to_name(die_ref.Tag()),
+                    die_ref.HasChildren() ? " *" : "");
+    }
+}
+
+





More information about the lldb-commits mailing list