diff --git a/scripts/Python/build-swig-Python.sh b/scripts/Python/build-swig-Python.sh
index 1b2897e..21ff005 100755
--- a/scripts/Python/build-swig-Python.sh
+++ b/scripts/Python/build-swig-Python.sh
@@ -46,6 +46,7 @@
 " ${SRC_ROOT}/include/lldb/API/SBCommandReturnObject.h"\
 " ${SRC_ROOT}/include/lldb/API/SBCommunication.h"\
 " ${SRC_ROOT}/include/lldb/API/SBCompileUnit.h"\
+" ${SRC_ROOT}/include/lldb/API/SBData.h"\
 " ${SRC_ROOT}/include/lldb/API/SBDebugger.h"\
 " ${SRC_ROOT}/include/lldb/API/SBError.h"\
 " ${SRC_ROOT}/include/lldb/API/SBEvent.h"\
@@ -72,6 +73,40 @@
 " ${SRC_ROOT}/include/lldb/API/SBValue.h"\
 " ${SRC_ROOT}/include/lldb/API/SBValueList.h"
 
+INTERFACE_FILES = "${SRC_ROOT}/scripts/Python/interface/SBAddress.i"\
+" ${SRC_ROOT}/scripts/Python/interface/SBBlock.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBBreakpoint.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBBreakpointLocation.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBBroadcaster.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBCommandInterpreter.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBCommandReturnObject.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBCommunication.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBCompileUnit.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBData.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBDebugger.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBError.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBEvent.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBFileSpec.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBFrame.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBFunction.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBHostOS.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBInputReader.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBInstruction.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBInstructionList.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBLineEntry.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBListener.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBModule.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBProcess.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBSourceManager.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBStream.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBStringList.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBSymbol.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBSymbolContext.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBTarget.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBThread.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBType.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBValue.i" \
+" ${SRC_ROOT}/scripts/Python/interface/SBValueList.i"
 
 if [ $Debug == 1 ]
 then
@@ -79,6 +114,12 @@
     echo ${HEADER_FILES}
 fi
 
+if [ $Debug == 1 ]
+then
+    echo "SWIG interface files are:"
+    echo ${INTERFACE_FILES}
+fi
+
 NeedToUpdate=0
 
 
@@ -110,6 +151,23 @@
 
 if [ $NeedToUpdate == 0 ]
 then
+    for intffile in ${INTERFACE_FILES}
+    do
+        if [ $intffile -nt ${swig_output_file} ]
+        then
+            NeedToUpdate=1
+            if [ $Debug == 1 ]
+            then
+                echo "${intffile} is newer than ${swig_output_file}"
+                echo "swig file will need to be re-built."
+            fi
+            break
+        fi
+    done
+fi
+
+if [ $NeedToUpdate == 0 ]
+then
     if [ ${swig_input_file} -nt ${swig_output_file} ]
     then
         NeedToUpdate=1
diff --git a/scripts/Python/interface/SBData.i b/scripts/Python/interface/SBData.i
new file mode 100644
index 0000000..416afb6
--- /dev/null
+++ b/scripts/Python/interface/SBData.i
@@ -0,0 +1,95 @@
+//===-- SWIG Interface for SBData -------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+
+namespace lldb {
+
+class SBData
+{
+public:
+
+	    SBData ();
+
+	    SBData (const SBData &rhs);
+
+	    ~SBData ();
+
+	    uint8_t
+	    GetAddressByteSize ();
+
+	    void
+	    Clear ();
+
+	    bool
+	    IsValid();
+
+	    size_t
+	    GetByteSize ();
+
+	    lldb::ByteOrder
+	    GetByteOrder();
+
+	    float
+	    GetFloat (lldb::SBError& error, uint32_t offset);
+
+	    double
+	    GetDouble (lldb::SBError& error, uint32_t offset);
+
+	    long double
+	    GetLongDouble (lldb::SBError& error, uint32_t offset);
+
+	    lldb::addr_t
+	    GetAddress (lldb::SBError& error, uint32_t offset);
+
+	    uint8_t
+	    GetUnsignedInt8 (lldb::SBError& error, uint32_t offset);
+
+	    uint16_t
+	    GetUnsignedInt16 (lldb::SBError& error, uint32_t offset);
+
+	    uint32_t
+	    GetUnsignedInt32 (lldb::SBError& error, uint32_t offset);
+
+	    uint64_t
+	    GetUnsignedInt64 (lldb::SBError& error, uint32_t offset);
+
+	    int8_t
+	    GetSignedInt8 (lldb::SBError& error, uint32_t offset);
+
+	    int16_t
+	    GetSignedInt16 (lldb::SBError& error, uint32_t offset);
+
+	    int32_t
+	    GetSignedInt32 (lldb::SBError& error, uint32_t offset);
+
+	    int64_t
+	    GetSignedInt64 (lldb::SBError& error, uint32_t offset);
+
+	    const char*
+	    GetString (lldb::SBError& error, uint32_t offset);
+	
+		bool
+    	GetDescription (lldb::SBStream &description);
+
+	    size_t
+	    ReadRawData (lldb::SBError& error,
+	                 uint32_t offset,
+	                 void *buf,
+	                 size_t size);
+
+	    void
+	    SetData(lldb::SBError& error, const void *buf, size_t size, lldb::ByteOrder endian, uint8_t addr_size);
+
+	    bool
+	    Append(const SBData& rhs);
+
+
+};
+
+} // namespace lldb
diff --git a/scripts/Python/interface/SBValue.i b/scripts/Python/interface/SBValue.i
index d73e601..e872410 100644
--- a/scripts/Python/interface/SBValue.i
+++ b/scripts/Python/interface/SBValue.i
@@ -196,6 +196,11 @@
     lldb::SBValue
     CreateValueFromAddress(const char* name, lldb::addr_t address, const SBType& type);
     
+	lldb::SBValue
+	CreateValueFromData (const char* name,
+	                     const SBData& data,
+	                     const SBType& type);
+
     lldb::SBType
     GetType();
     
@@ -278,9 +283,57 @@
 
     bool
     GetExpressionPath (lldb::SBStream &description);
+
+	%feature("docstring", "
+	//------------------------------------------------------------------
+    /// Get an SBData wrapping what this SBValue points to.
+    ///
+    /// This method will dereference the current SBValue, if its
+    /// data type is a T* or T[], and extract item_count elements
+    /// of type T from it, copying their contents in an SBData. 
+    ///
+    /// @param[in] item_idx
+    ///     The index of the first item to retrieve. For an array
+    ///     this is equivalent to array[item_idx], for a pointer
+    ///     to *(pointer + item_idx). In either case, the measurement
+    ///     unit for item_idx is the sizeof(T) rather than the byte
+    ///
+    /// @param[in] item_count
+    ///     How many items should be copied into the output. By default
+    ///     only one item is copied, but more can be asked for.
+    ///
+    /// @return
+    ///     An SBData with the contents of the copied items, on success.
+    ///     An empty SBData otherwise.
+    //------------------------------------------------------------------
+	") GetPointeeData;
+	lldb::SBData
+	GetPointeeData (uint32_t item_idx = 0,
+					uint32_t item_count = 1);
+
+    %feature("docstring", "
+	//------------------------------------------------------------------
+    /// Get an SBData wrapping the contents of this SBValue.
+    ///
+    /// This method will read the contents of this object in memory
+    /// and copy them into an SBData for future use. 
+    ///
+    /// @return
+    ///     An SBData with the contents of this SBValue, on success.
+    ///     An empty SBData otherwise.
+    //------------------------------------------------------------------
+	") GetData;
+    lldb::SBData
+    GetData ();
+
+	lldb::addr_t
+	GetLoadAddress();
+
+	lldb::SBAddress
+	GetAddress();
     
     %feature("docstring", "Returns an expression path for this value."
-    ) GetValueForExpressionPath;
+    ) GetExpressionPath;
     bool
     GetExpressionPath (lldb::SBStream &description, bool qualify_cxx_base_classes);
 };
diff --git a/scripts/Python/python-extensions.swig b/scripts/Python/python-extensions.swig
index 8943561..6450699 100644
--- a/scripts/Python/python-extensions.swig
+++ b/scripts/Python/python-extensions.swig
@@ -41,6 +41,13 @@
                 return PyString_FromString (description.GetData());
         }
 }
+%extend lldb::SBData {
+        PyObject *lldb::SBData::__repr__ (){
+                lldb::SBStream description;
+                $self->GetDescription (description);
+                return PyString_FromString (description.GetData());
+        }
+}
 %extend lldb::SBDebugger {
         PyObject *lldb::SBDebugger::__repr__ (){
                 lldb::SBStream description;
diff --git a/scripts/Python/python-wrapper.swig b/scripts/Python/python-wrapper.swig
index 964f96a..3417c71 100644
--- a/scripts/Python/python-wrapper.swig
+++ b/scripts/Python/python-wrapper.swig
@@ -540,7 +540,7 @@
 
 }
 
-SWIGEXPORT lldb::SBValue*
+SWIGEXPORT void*
 LLDBSWIGPython_CastPyObjectToSBValue
 (
     PyObject* data
