diff --git a/scripts/Python/build-swig-Python.sh b/scripts/Python/build-swig-Python.sh
index a38d2ff..59394f9 100755
--- a/scripts/Python/build-swig-Python.sh
+++ b/scripts/Python/build-swig-Python.sh
@@ -76,6 +76,7 @@
 " ${SRC_ROOT}/include/lldb/API/SBDebugger.h"\
 " ${SRC_ROOT}/include/lldb/API/SBError.h"\
 " ${SRC_ROOT}/include/lldb/API/SBEvent.h"\
+" ${SRC_ROOT}/include/lldb/API/SBExpressionOptions.h"\
 " ${SRC_ROOT}/include/lldb/API/SBFileSpec.h"\
 " ${SRC_ROOT}/include/lldb/API/SBFrame.h"\
 " ${SRC_ROOT}/include/lldb/API/SBFunction.h"\
@@ -120,6 +121,7 @@
 " ${SRC_ROOT}/scripts/Python/interface/SBDeclaration.i"\
 " ${SRC_ROOT}/scripts/Python/interface/SBError.i"\
 " ${SRC_ROOT}/scripts/Python/interface/SBEvent.i"\
+" ${SRC_ROOT}/scripts/Python/interface/SBExpressionOptions.i"\
 " ${SRC_ROOT}/scripts/Python/interface/SBFileSpec.i"\
 " ${SRC_ROOT}/scripts/Python/interface/SBFrame.i"\
 " ${SRC_ROOT}/scripts/Python/interface/SBFunction.i"\
diff --git a/scripts/Python/interface/SBExpressionOptions.i b/scripts/Python/interface/SBExpressionOptions.i
new file mode 100644
index 0000000..fa58fe3
--- /dev/null
+++ b/scripts/Python/interface/SBExpressionOptions.i
@@ -0,0 +1,104 @@
+//===-- SWIG interface for SBExpressionOptions -----------------------------------------------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+namespace lldb {
+
+%feature("docstring",
+"A container for options to use when evaluating expressions."
+) SBExpressionOptions;
+
+class SBExpressionOptions
+{
+friend class SBFrame;
+friend class SBValue;
+
+public:
+    SBExpressionOptions();
+
+    SBExpressionOptions (const lldb::SBExpressionOptions &rhs);
+    
+    SBExpressionOptions (bool coerce_to_id,
+                         bool unwind_on_error,
+                         bool keep_in_memory,
+                         bool run_others,
+                         DynamicValueType use_dynamic,
+                         uint32_t timeout_usec);
+
+    ~SBExpressionOptions();
+
+    bool
+    DoesCoerceToId () const;
+    
+    %feature("docstring",
+    "Sets whether to coerce the expression result to ObjC id type after evaluation."
+    ) SetCoerceToId;
+    void
+    SetCoerceToId (bool coerce = true);
+    
+    bool
+    DoesUnwindOnError () const;
+    
+    %feature("docstring",
+    "Sets whether to unwind the expression stack on error."
+    ) SetUnwindOnError;
+    void
+    SetUnwindOnError (bool unwind = false);
+    
+    bool
+    DoesKeepInMemory () const;
+    
+    %feature("docstring",
+    "Sets whether to keep the expression result in the target program's memory - forced to true when creating SBValues."
+    ) SetKeepInMemory;
+    void
+    SetKeepInMemory (bool keep = true);
+
+    lldb::DynamicValueType
+    GetUseDynamic () const;
+    
+    %feature("docstring",
+    "Sets whether to cast the expression result to its dynamic type."
+    ) SetUseDynamic;
+    void
+    SetUseDynamic (lldb::DynamicValueType dynamic = lldb::eDynamicCanRunTarget);
+    
+    uint32_t
+    GetTimeoutUsec () const;
+    
+    %feature("docstring",
+    "Sets the duration we will wait before cancelling expression evaluation.  0 means wait forever."
+    ) SetTimeoutUsec;
+    void
+    SetTimeoutUsec (uint32_t timeout = 0);
+    
+    bool
+    GetRunOthers () const;
+    
+    %feature("docstring",
+    "Sets whether to run all threads if the expression does not complete on one thread."
+    ) SetRunOthers;
+    void
+    SetRunOthers (bool run_others = true);
+
+protected:
+
+    SBExpressionOptions (lldb_private::EvaluateExpressionOptions &expression_options);
+
+    lldb_private::EvaluateExpressionOptions *
+    get () const;
+
+    lldb_private::EvaluateExpressionOptions &
+    ref () const;
+
+private:
+    // This auto_pointer is made in the constructor and is always valid.
+    mutable std::auto_ptr<lldb_private::EvaluateExpressionOptions> m_opaque_ap;
+};
+
+} // namespace lldb
diff --git a/scripts/Python/interface/SBFrame.i b/scripts/Python/interface/SBFrame.i
index 7d02564..1735dd9 100644
--- a/scripts/Python/interface/SBFrame.i
+++ b/scripts/Python/interface/SBFrame.i
@@ -139,6 +139,9 @@
 
     lldb::SBValue
     EvaluateExpression (const char *expr, lldb::DynamicValueType use_dynamic, bool unwind_on_error);
+    
+    lldb::SBValue
+    EvaluateExpression (const char *expr, SBExpressionOptions &options);
 
     %feature("docstring", "
     /// Gets the lexical block that defines the stack frame. Another way to think
diff --git a/scripts/Python/interface/SBValue.i b/scripts/Python/interface/SBValue.i
index e316637..70c3d80 100644
--- a/scripts/Python/interface/SBValue.i
+++ b/scripts/Python/interface/SBValue.i
@@ -222,6 +222,9 @@
 
     lldb::SBValue
     CreateValueFromExpression (const char *name, const char* expression);
+    
+    lldb::SBValue
+    CreateValueFromExpression (const char *name, const char* expression, SBExpressionOptions &options);
 
     lldb::SBValue
     CreateValueFromAddress(const char* name, lldb::addr_t address, lldb::SBType type);
diff --git a/scripts/lldb.swig b/scripts/lldb.swig
index 12dc859..a89b675 100644
--- a/scripts/lldb.swig
+++ b/scripts/lldb.swig
@@ -66,6 +66,7 @@
 #include "lldb/API/SBDeclaration.h"
 #include "lldb/API/SBError.h"
 #include "lldb/API/SBEvent.h"
+#include "lldb/API/SBExpressionOptions.h"
 #include "lldb/API/SBFileSpec.h"
 #include "lldb/API/SBFileSpecList.h"
 #include "lldb/API/SBFrame.h"
@@ -125,6 +126,7 @@
 %include "./Python/interface/SBDeclaration.i"
 %include "./Python/interface/SBError.i"
 %include "./Python/interface/SBEvent.i"
+%include "./Python/interface/SBExpressionOptions.i"
 %include "./Python/interface/SBFileSpec.i"
 %include "./Python/interface/SBFileSpecList.i"
 %include "./Python/interface/SBFrame.i"
