diff --git a/lldb/source/Expression/ExpressionSourceCode.cpp b/lldb/source/Expression/ExpressionSourceCode.cpp
index aef3b9e..c79a2d7 100644
--- a/lldb/source/Expression/ExpressionSourceCode.cpp
+++ b/lldb/source/Expression/ExpressionSourceCode.cpp
@@ -10,6 +10,9 @@
 #include "lldb/Expression/ExpressionSourceCode.h"
 
 #include "lldb/Core/StreamString.h"
+#include "lldb/Target/ExecutionContext.h"
+#include "lldb/Target/Platform.h"
+#include "lldb/Target/Target.h"
 
 using namespace lldb_private;
 
@@ -25,7 +28,6 @@
 #define nil (__null)
 #define YES ((BOOL)1)
 #define NO ((BOOL)0)
-typedef signed char BOOL;
 typedef signed __INT8_TYPE__ int8_t;
 typedef unsigned __INT8_TYPE__ uint8_t;
 typedef signed __INT16_TYPE__ int16_t;
@@ -42,8 +44,29 @@
 )";
 
 
-bool ExpressionSourceCode::GetText (std::string &text, lldb::LanguageType wrapping_language, bool const_object, bool static_method) const
+bool ExpressionSourceCode::GetText (std::string &text, lldb::LanguageType wrapping_language, bool const_object, bool static_method, ExecutionContext &exe_ctx) const
 {
+    const char *target_specific_defines = "typedef signed char BOOL;\n";
+    static ConstString g_platform_ios_simulator ("PlatformiOSSimulator");
+    
+    if (Target *target = exe_ctx.GetTargetPtr())
+    {
+        if (target->GetArchitecture().GetMachine() == llvm::Triple::arm64)
+        {
+            target_specific_defines = "typedef bool BOOL;\n";
+        }
+        if (target->GetArchitecture().GetMachine() == llvm::Triple::x86_64)
+        {
+            if (lldb::PlatformSP platform_sp = target->GetPlatform())
+            {
+                if (platform_sp->GetPluginName() == g_platform_ios_simulator)
+                {
+                    target_specific_defines = "typedef bool BOOL;\n";
+                }
+            }
+        }
+    }
+    
     if (m_wrap)
     {
         switch (wrapping_language) 
@@ -65,12 +88,14 @@
         case lldb::eLanguageTypeC:
             wrap_stream.Printf("%s                             \n"
                                "%s                             \n"
+                               "%s                             \n"
                                "void                           \n"
                                "%s(void *$__lldb_arg)          \n"
                                "{                              \n"
                                "    %s;                        \n" 
                                "}                              \n",
                                g_expression_prefix,
+                               target_specific_defines,
                                m_prefix.c_str(),
                                m_name.c_str(),
                                m_body.c_str());
@@ -78,12 +103,14 @@
         case lldb::eLanguageTypeC_plus_plus:
             wrap_stream.Printf("%s                                     \n"
                                "%s                                     \n"
+                               "%s                                     \n"
                                "void                                   \n"
                                "$__lldb_class::%s(void *$__lldb_arg) %s\n"
                                "{                                      \n"
                                "    %s;                                \n" 
                                "}                                      \n",
                                g_expression_prefix,
+                               target_specific_defines,
                                m_prefix.c_str(),
                                m_name.c_str(),
                                (const_object ? "const" : ""),
@@ -94,6 +121,7 @@
             {
                 wrap_stream.Printf("%s                                                      \n"
                                    "%s                                                      \n"
+                                   "%s                                                      \n"
                                    "@interface $__lldb_objc_class ($__lldb_category)        \n"
                                    "+(void)%s:(void *)$__lldb_arg;                          \n"
                                    "@end                                                    \n"
@@ -104,6 +132,7 @@
                                    "}                                                       \n"
                                    "@end                                                    \n",
                                    g_expression_prefix,
+                                   target_specific_defines,
                                    m_prefix.c_str(),
                                    m_name.c_str(),
                                    m_name.c_str(),
@@ -113,6 +142,7 @@
             {
                 wrap_stream.Printf("%s                                                     \n"
                                    "%s                                                     \n"
+                                   "%s                                                     \n"
                                    "@interface $__lldb_objc_class ($__lldb_category)       \n"
                                    "-(void)%s:(void *)$__lldb_arg;                         \n"
                                    "@end                                                   \n"
@@ -123,6 +153,7 @@
                                    "}                                                      \n"
                                    "@end                                                   \n",
                                    g_expression_prefix,
+                                   target_specific_defines,
                                    m_prefix.c_str(),
                                    m_name.c_str(),
                                    m_name.c_str(),
