[Lldb-commits] [lldb] r280751 - *** This commit represents a complete reformatting of the LLDB source code

Kate Stone via lldb-commits lldb-commits at lists.llvm.org
Tue Sep 6 13:58:36 PDT 2016


Modified: lldb/trunk/source/Interpreter/OptionValueFileSpec.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/OptionValueFileSpec.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/OptionValueFileSpec.cpp (original)
+++ lldb/trunk/source/Interpreter/OptionValueFileSpec.cpp Tue Sep  6 15:57:50 2016
@@ -22,150 +22,112 @@
 using namespace lldb;
 using namespace lldb_private;
 
-
-OptionValueFileSpec::OptionValueFileSpec (bool resolve) :
-    OptionValue(),
-    m_current_value (),
-    m_default_value (),
-    m_data_sp(),
-    m_data_mod_time (),
-    m_completion_mask (CommandCompletions::eDiskFileCompletion),
-    m_resolve (resolve)
-{
-}
-
-OptionValueFileSpec::OptionValueFileSpec (const FileSpec &value,
-                                          bool resolve) :
-    OptionValue(),
-    m_current_value (value),
-    m_default_value (value),
-    m_data_sp(),
-    m_data_mod_time (),
-    m_completion_mask (CommandCompletions::eDiskFileCompletion),
-    m_resolve (resolve)
-{
-}
-
-OptionValueFileSpec::OptionValueFileSpec (const FileSpec &current_value,
-                                          const FileSpec &default_value,
-                                          bool resolve) :
-    OptionValue(),
-    m_current_value (current_value),
-    m_default_value (default_value),
-    m_data_sp(),
-    m_data_mod_time (),
-    m_completion_mask (CommandCompletions::eDiskFileCompletion),
-    m_resolve (resolve)
-{
-}
-
-void
-OptionValueFileSpec::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask)
-{
+OptionValueFileSpec::OptionValueFileSpec(bool resolve)
+    : OptionValue(), m_current_value(), m_default_value(), m_data_sp(),
+      m_data_mod_time(),
+      m_completion_mask(CommandCompletions::eDiskFileCompletion),
+      m_resolve(resolve) {}
+
+OptionValueFileSpec::OptionValueFileSpec(const FileSpec &value, bool resolve)
+    : OptionValue(), m_current_value(value), m_default_value(value),
+      m_data_sp(), m_data_mod_time(),
+      m_completion_mask(CommandCompletions::eDiskFileCompletion),
+      m_resolve(resolve) {}
+
+OptionValueFileSpec::OptionValueFileSpec(const FileSpec &current_value,
+                                         const FileSpec &default_value,
+                                         bool resolve)
+    : OptionValue(), m_current_value(current_value),
+      m_default_value(default_value), m_data_sp(), m_data_mod_time(),
+      m_completion_mask(CommandCompletions::eDiskFileCompletion),
+      m_resolve(resolve) {}
+
+void OptionValueFileSpec::DumpValue(const ExecutionContext *exe_ctx,
+                                    Stream &strm, uint32_t dump_mask) {
+  if (dump_mask & eDumpOptionType)
+    strm.Printf("(%s)", GetTypeAsCString());
+  if (dump_mask & eDumpOptionValue) {
     if (dump_mask & eDumpOptionType)
-        strm.Printf ("(%s)", GetTypeAsCString ());
-    if (dump_mask & eDumpOptionValue)
-    {
-        if (dump_mask & eDumpOptionType)
-            strm.PutCString (" = ");
-
-        if (m_current_value)
-        {
-            strm << '"' << m_current_value.GetPath().c_str() << '"';
-        }
-    }
-}
+      strm.PutCString(" = ");
 
-Error
-OptionValueFileSpec::SetValueFromString (llvm::StringRef value,
-                                          VarSetOperationType op)
-{
-    Error error;
-    switch (op)
-    {
-    case eVarSetOperationClear:
-        Clear ();
-        NotifyValueChanged();
-        break;
-        
-    case eVarSetOperationReplace:
-    case eVarSetOperationAssign:
-        if (value.size() > 0)
-        {
-            // The setting value may have whitespace, double-quotes, or single-quotes around the file
-            // path to indicate that internal spaces are not word breaks.  Strip off any ws & quotes
-            // from the start and end of the file path - we aren't doing any word // breaking here so 
-            // the quoting is unnecessary.  NB this will cause a problem if someone tries to specify
-            // a file path that legitimately begins or ends with a " or ' character, or whitespace.
-            value = value.trim("\"' \t");
-            m_value_was_set = true;
-            m_current_value.SetFile(value.str().c_str(), m_resolve);
-            m_data_sp.reset();
-            m_data_mod_time.Clear();
-            NotifyValueChanged();
-        }
-        else
-        {
-            error.SetErrorString("invalid value string");
-        }
-        break;
-        
-    case eVarSetOperationInsertBefore:
-    case eVarSetOperationInsertAfter:
-    case eVarSetOperationRemove:
-    case eVarSetOperationAppend:
-    case eVarSetOperationInvalid:
-        error = OptionValue::SetValueFromString (value, op);
-        break;
+    if (m_current_value) {
+      strm << '"' << m_current_value.GetPath().c_str() << '"';
     }
-    return error;
-}
-
-lldb::OptionValueSP
-OptionValueFileSpec::DeepCopy () const
-{
-    return OptionValueSP(new OptionValueFileSpec(*this));
+  }
 }
 
+Error OptionValueFileSpec::SetValueFromString(llvm::StringRef value,
+                                              VarSetOperationType op) {
+  Error error;
+  switch (op) {
+  case eVarSetOperationClear:
+    Clear();
+    NotifyValueChanged();
+    break;
+
+  case eVarSetOperationReplace:
+  case eVarSetOperationAssign:
+    if (value.size() > 0) {
+      // The setting value may have whitespace, double-quotes, or single-quotes
+      // around the file
+      // path to indicate that internal spaces are not word breaks.  Strip off
+      // any ws & quotes
+      // from the start and end of the file path - we aren't doing any word //
+      // breaking here so
+      // the quoting is unnecessary.  NB this will cause a problem if someone
+      // tries to specify
+      // a file path that legitimately begins or ends with a " or ' character,
+      // or whitespace.
+      value = value.trim("\"' \t");
+      m_value_was_set = true;
+      m_current_value.SetFile(value.str().c_str(), m_resolve);
+      m_data_sp.reset();
+      m_data_mod_time.Clear();
+      NotifyValueChanged();
+    } else {
+      error.SetErrorString("invalid value string");
+    }
+    break;
 
-size_t
-OptionValueFileSpec::AutoComplete (CommandInterpreter &interpreter,
-                                   const char *s,
-                                   int match_start_point,
-                                   int max_return_elements,
-                                   bool &word_complete,
-                                   StringList &matches)
-{
-    word_complete = false;
-    matches.Clear();
-    CommandCompletions::InvokeCommonCompletionCallbacks (interpreter,
-                                                         m_completion_mask,
-                                                         s,
-                                                         match_start_point,
-                                                         max_return_elements,
-                                                         nullptr,
-                                                         word_complete,
-                                                         matches);
-    return matches.GetSize();
+  case eVarSetOperationInsertBefore:
+  case eVarSetOperationInsertAfter:
+  case eVarSetOperationRemove:
+  case eVarSetOperationAppend:
+  case eVarSetOperationInvalid:
+    error = OptionValue::SetValueFromString(value, op);
+    break;
+  }
+  return error;
+}
+
+lldb::OptionValueSP OptionValueFileSpec::DeepCopy() const {
+  return OptionValueSP(new OptionValueFileSpec(*this));
+}
+
+size_t OptionValueFileSpec::AutoComplete(CommandInterpreter &interpreter,
+                                         const char *s, int match_start_point,
+                                         int max_return_elements,
+                                         bool &word_complete,
+                                         StringList &matches) {
+  word_complete = false;
+  matches.Clear();
+  CommandCompletions::InvokeCommonCompletionCallbacks(
+      interpreter, m_completion_mask, s, match_start_point, max_return_elements,
+      nullptr, word_complete, matches);
+  return matches.GetSize();
 }
 
-
-
 const lldb::DataBufferSP &
-OptionValueFileSpec::GetFileContents(bool null_terminate)
-{
-    if (m_current_value)
-    {
-        const TimeValue file_mod_time = m_current_value.GetModificationTime();
-        if (m_data_sp && m_data_mod_time == file_mod_time)
-            return m_data_sp;
-        if (null_terminate)
-            m_data_sp = m_current_value.ReadFileContentsAsCString();
-        else
-            m_data_sp = m_current_value.ReadFileContents();
-        m_data_mod_time = file_mod_time;
-    }
-    return m_data_sp;
+OptionValueFileSpec::GetFileContents(bool null_terminate) {
+  if (m_current_value) {
+    const TimeValue file_mod_time = m_current_value.GetModificationTime();
+    if (m_data_sp && m_data_mod_time == file_mod_time)
+      return m_data_sp;
+    if (null_terminate)
+      m_data_sp = m_current_value.ReadFileContentsAsCString();
+    else
+      m_data_sp = m_current_value.ReadFileContents();
+    m_data_mod_time = file_mod_time;
+  }
+  return m_data_sp;
 }
-
-

Modified: lldb/trunk/source/Interpreter/OptionValueFileSpecLIst.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/OptionValueFileSpecLIst.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/OptionValueFileSpecLIst.cpp (original)
+++ lldb/trunk/source/Interpreter/OptionValueFileSpecLIst.cpp Tue Sep  6 15:57:50 2016
@@ -20,171 +20,145 @@
 using namespace lldb;
 using namespace lldb_private;
 
-void
-OptionValueFileSpecList::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask)
-{
+void OptionValueFileSpecList::DumpValue(const ExecutionContext *exe_ctx,
+                                        Stream &strm, uint32_t dump_mask) {
+  if (dump_mask & eDumpOptionType)
+    strm.Printf("(%s)", GetTypeAsCString());
+  if (dump_mask & eDumpOptionValue) {
     if (dump_mask & eDumpOptionType)
-        strm.Printf ("(%s)", GetTypeAsCString ());
-    if (dump_mask & eDumpOptionValue)
-    {
-        if (dump_mask & eDumpOptionType)
-            strm.Printf (" =%s", m_current_value.GetSize() > 0 ? "\n" : "");
-        strm.IndentMore();
-        const uint32_t size = m_current_value.GetSize();
-        for (uint32_t i = 0; i<size; ++i)
-        {
-            strm.Indent();
-            strm.Printf("[%u]: ", i);
-            m_current_value.GetFileSpecAtIndex(i).Dump(&strm);
-        }
-        strm.IndentLess();
+      strm.Printf(" =%s", m_current_value.GetSize() > 0 ? "\n" : "");
+    strm.IndentMore();
+    const uint32_t size = m_current_value.GetSize();
+    for (uint32_t i = 0; i < size; ++i) {
+      strm.Indent();
+      strm.Printf("[%u]: ", i);
+      m_current_value.GetFileSpecAtIndex(i).Dump(&strm);
     }
+    strm.IndentLess();
+  }
 }
 
-Error
-OptionValueFileSpecList::SetValueFromString (llvm::StringRef value, VarSetOperationType op)
-{
-    Error error;
-    Args args(value.str().c_str());
-    const size_t argc = args.GetArgumentCount();
-
-    switch (op)
-    {
-        case eVarSetOperationClear:
-            Clear ();
-            NotifyValueChanged();
-            break;
-            
-        case eVarSetOperationReplace:
-            if (argc > 1)
-            {
-                uint32_t idx = StringConvert::ToUInt32(args.GetArgumentAtIndex(0), UINT32_MAX);
-                const uint32_t count = m_current_value.GetSize();
-                if (idx > count)
-                {
-                    error.SetErrorStringWithFormat("invalid file list index %u, index must be 0 through %u", idx, count);
-                }
-                else
-                {
-                    for (size_t i=1; i<argc; ++i, ++idx)
-                    {
-                        FileSpec file (args.GetArgumentAtIndex(i), false);
-                        if (idx < count)
-                            m_current_value.Replace(idx, file);
-                        else
-                            m_current_value.Append(file);
-                    }
-                    NotifyValueChanged();
-                }
-            }
-            else
-            {
-                error.SetErrorString("replace operation takes an array index followed by one or more values");
-            }
-            break;
-            
-            
-            
-        case eVarSetOperationAssign:
-            m_current_value.Clear();
-            // Fall through to append case
-            LLVM_FALLTHROUGH;
-        case eVarSetOperationAppend:
-            if (argc > 0)
-            {
-                m_value_was_set = true;
-                for (size_t i=0; i<argc; ++i)
-                {
-                    FileSpec file (args.GetArgumentAtIndex(i), false);
-                    m_current_value.Append(file);
-                }
-                NotifyValueChanged();
-            }
-            else
-            {
-                error.SetErrorString("assign operation takes at least one file path argument");
-            }
-            break;
-            
-        case eVarSetOperationInsertBefore:
-        case eVarSetOperationInsertAfter:
-            if (argc > 1)
-            {
-                uint32_t idx = StringConvert::ToUInt32(args.GetArgumentAtIndex(0), UINT32_MAX);
-                const uint32_t count = m_current_value.GetSize();
-                if (idx > count)
-                {
-                    error.SetErrorStringWithFormat("invalid insert file list index %u, index must be 0 through %u", idx, count);
-                }
-                else
-                {
-                    if (op == eVarSetOperationInsertAfter)
-                        ++idx;
-                    for (size_t i=1; i<argc; ++i, ++idx)
-                    {
-                        FileSpec file (args.GetArgumentAtIndex(i), false);
-                        m_current_value.Insert (idx, file);
-                    }
-                    NotifyValueChanged();
-                }
-            }
-            else
-            {
-                error.SetErrorString("insert operation takes an array index followed by one or more values");
-            }
-            break;
-            
-        case eVarSetOperationRemove:
-            if (argc > 0)
-            {
-                std::vector<int> remove_indexes;
-                bool all_indexes_valid = true;
-                size_t i;
-                for (i=0; all_indexes_valid && i<argc; ++i)
-                {
-                    const int idx = StringConvert::ToSInt32(args.GetArgumentAtIndex(i), INT32_MAX);
-                    if (idx == INT32_MAX)
-                        all_indexes_valid = false;
-                    else
-                        remove_indexes.push_back(idx);
-                }
-                
-                if (all_indexes_valid)
-                {
-                    size_t num_remove_indexes = remove_indexes.size();
-                    if (num_remove_indexes)
-                    {
-                        // Sort and then erase in reverse so indexes are always valid
-                        std::sort(remove_indexes.begin(), remove_indexes.end());
-                        for (size_t j=num_remove_indexes-1; j<num_remove_indexes; ++j)
-                        {
-                            m_current_value.Remove (j);
-                        }
-                    }
-                    NotifyValueChanged();
-                }
-                else
-                {
-                    error.SetErrorStringWithFormat("invalid array index '%s', aborting remove operation", args.GetArgumentAtIndex(i));
-                }
-            }
-            else
-            {
-                error.SetErrorString("remove operation takes one or more array index");
-            }
-            break;
-
-        case eVarSetOperationInvalid:
-            error = OptionValue::SetValueFromString (value, op);
-            break;
+Error OptionValueFileSpecList::SetValueFromString(llvm::StringRef value,
+                                                  VarSetOperationType op) {
+  Error error;
+  Args args(value.str().c_str());
+  const size_t argc = args.GetArgumentCount();
+
+  switch (op) {
+  case eVarSetOperationClear:
+    Clear();
+    NotifyValueChanged();
+    break;
+
+  case eVarSetOperationReplace:
+    if (argc > 1) {
+      uint32_t idx =
+          StringConvert::ToUInt32(args.GetArgumentAtIndex(0), UINT32_MAX);
+      const uint32_t count = m_current_value.GetSize();
+      if (idx > count) {
+        error.SetErrorStringWithFormat(
+            "invalid file list index %u, index must be 0 through %u", idx,
+            count);
+      } else {
+        for (size_t i = 1; i < argc; ++i, ++idx) {
+          FileSpec file(args.GetArgumentAtIndex(i), false);
+          if (idx < count)
+            m_current_value.Replace(idx, file);
+          else
+            m_current_value.Append(file);
+        }
+        NotifyValueChanged();
+      }
+    } else {
+      error.SetErrorString("replace operation takes an array index followed by "
+                           "one or more values");
     }
-    return error;
-}
+    break;
 
-lldb::OptionValueSP
-OptionValueFileSpecList::DeepCopy () const
-{
-    return OptionValueSP(new OptionValueFileSpecList(*this));
-}
+  case eVarSetOperationAssign:
+    m_current_value.Clear();
+    // Fall through to append case
+    LLVM_FALLTHROUGH;
+  case eVarSetOperationAppend:
+    if (argc > 0) {
+      m_value_was_set = true;
+      for (size_t i = 0; i < argc; ++i) {
+        FileSpec file(args.GetArgumentAtIndex(i), false);
+        m_current_value.Append(file);
+      }
+      NotifyValueChanged();
+    } else {
+      error.SetErrorString(
+          "assign operation takes at least one file path argument");
+    }
+    break;
 
+  case eVarSetOperationInsertBefore:
+  case eVarSetOperationInsertAfter:
+    if (argc > 1) {
+      uint32_t idx =
+          StringConvert::ToUInt32(args.GetArgumentAtIndex(0), UINT32_MAX);
+      const uint32_t count = m_current_value.GetSize();
+      if (idx > count) {
+        error.SetErrorStringWithFormat(
+            "invalid insert file list index %u, index must be 0 through %u",
+            idx, count);
+      } else {
+        if (op == eVarSetOperationInsertAfter)
+          ++idx;
+        for (size_t i = 1; i < argc; ++i, ++idx) {
+          FileSpec file(args.GetArgumentAtIndex(i), false);
+          m_current_value.Insert(idx, file);
+        }
+        NotifyValueChanged();
+      }
+    } else {
+      error.SetErrorString("insert operation takes an array index followed by "
+                           "one or more values");
+    }
+    break;
 
+  case eVarSetOperationRemove:
+    if (argc > 0) {
+      std::vector<int> remove_indexes;
+      bool all_indexes_valid = true;
+      size_t i;
+      for (i = 0; all_indexes_valid && i < argc; ++i) {
+        const int idx =
+            StringConvert::ToSInt32(args.GetArgumentAtIndex(i), INT32_MAX);
+        if (idx == INT32_MAX)
+          all_indexes_valid = false;
+        else
+          remove_indexes.push_back(idx);
+      }
+
+      if (all_indexes_valid) {
+        size_t num_remove_indexes = remove_indexes.size();
+        if (num_remove_indexes) {
+          // Sort and then erase in reverse so indexes are always valid
+          std::sort(remove_indexes.begin(), remove_indexes.end());
+          for (size_t j = num_remove_indexes - 1; j < num_remove_indexes; ++j) {
+            m_current_value.Remove(j);
+          }
+        }
+        NotifyValueChanged();
+      } else {
+        error.SetErrorStringWithFormat(
+            "invalid array index '%s', aborting remove operation",
+            args.GetArgumentAtIndex(i));
+      }
+    } else {
+      error.SetErrorString("remove operation takes one or more array index");
+    }
+    break;
+
+  case eVarSetOperationInvalid:
+    error = OptionValue::SetValueFromString(value, op);
+    break;
+  }
+  return error;
+}
+
+lldb::OptionValueSP OptionValueFileSpecList::DeepCopy() const {
+  return OptionValueSP(new OptionValueFileSpecList(*this));
+}

Modified: lldb/trunk/source/Interpreter/OptionValueFormat.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/OptionValueFormat.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/OptionValueFormat.cpp (original)
+++ lldb/trunk/source/Interpreter/OptionValueFormat.cpp Tue Sep  6 15:57:50 2016
@@ -20,59 +20,48 @@
 using namespace lldb;
 using namespace lldb_private;
 
-void
-OptionValueFormat::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask)
-{
+void OptionValueFormat::DumpValue(const ExecutionContext *exe_ctx, Stream &strm,
+                                  uint32_t dump_mask) {
+  if (dump_mask & eDumpOptionType)
+    strm.Printf("(%s)", GetTypeAsCString());
+  if (dump_mask & eDumpOptionValue) {
     if (dump_mask & eDumpOptionType)
-        strm.Printf ("(%s)", GetTypeAsCString ());
-    if (dump_mask & eDumpOptionValue)
-    {
-        if (dump_mask & eDumpOptionType)
-            strm.PutCString (" = ");
-        strm.PutCString (FormatManager::GetFormatAsCString (m_current_value));
-    }
+      strm.PutCString(" = ");
+    strm.PutCString(FormatManager::GetFormatAsCString(m_current_value));
+  }
 }
 
-Error
-OptionValueFormat::SetValueFromString (llvm::StringRef value, VarSetOperationType op)
-{
-    Error error;
-    switch (op)
-    {
-    case eVarSetOperationClear:
-        Clear();
-        NotifyValueChanged();
-        break;
-        
-    case eVarSetOperationReplace:
-    case eVarSetOperationAssign:
-        {
-            Format new_format;
-            error = Args::StringToFormat (value.str().c_str(), new_format, nullptr);
-            if (error.Success())
-            {
-                m_value_was_set = true;
-                m_current_value = new_format;
-                NotifyValueChanged();
-            }
-        }
-        break;
-        
-    case eVarSetOperationInsertBefore:
-    case eVarSetOperationInsertAfter:
-    case eVarSetOperationRemove:
-    case eVarSetOperationAppend:
-    case eVarSetOperationInvalid:
-        error = OptionValue::SetValueFromString (value, op);
-        break;
-    }
-    return error;
-}
+Error OptionValueFormat::SetValueFromString(llvm::StringRef value,
+                                            VarSetOperationType op) {
+  Error error;
+  switch (op) {
+  case eVarSetOperationClear:
+    Clear();
+    NotifyValueChanged();
+    break;
 
+  case eVarSetOperationReplace:
+  case eVarSetOperationAssign: {
+    Format new_format;
+    error = Args::StringToFormat(value.str().c_str(), new_format, nullptr);
+    if (error.Success()) {
+      m_value_was_set = true;
+      m_current_value = new_format;
+      NotifyValueChanged();
+    }
+  } break;
 
-lldb::OptionValueSP
-OptionValueFormat::DeepCopy () const
-{
-    return OptionValueSP(new OptionValueFormat(*this));
+  case eVarSetOperationInsertBefore:
+  case eVarSetOperationInsertAfter:
+  case eVarSetOperationRemove:
+  case eVarSetOperationAppend:
+  case eVarSetOperationInvalid:
+    error = OptionValue::SetValueFromString(value, op);
+    break;
+  }
+  return error;
 }
 
+lldb::OptionValueSP OptionValueFormat::DeepCopy() const {
+  return OptionValueSP(new OptionValueFormat(*this));
+}

Modified: lldb/trunk/source/Interpreter/OptionValueFormatEntity.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/OptionValueFormatEntity.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/OptionValueFormatEntity.cpp (original)
+++ lldb/trunk/source/Interpreter/OptionValueFormatEntity.cpp Tue Sep  6 15:57:50 2016
@@ -20,121 +20,96 @@
 using namespace lldb;
 using namespace lldb_private;
 
-
-OptionValueFormatEntity::OptionValueFormatEntity (const char *default_format) :
-    OptionValue(),
-    m_current_format (),
-    m_default_format (),
-    m_current_entry (),
-    m_default_entry ()
-{
-    if (default_format && default_format[0])
-    {
-        llvm::StringRef default_format_str(default_format);
-        Error error = FormatEntity::Parse(default_format_str, m_default_entry);
-        if (error.Success())
-        {
-            m_default_format = default_format;
-            m_current_format = default_format;
-            m_current_entry = m_default_entry;
-        }
+OptionValueFormatEntity::OptionValueFormatEntity(const char *default_format)
+    : OptionValue(), m_current_format(), m_default_format(), m_current_entry(),
+      m_default_entry() {
+  if (default_format && default_format[0]) {
+    llvm::StringRef default_format_str(default_format);
+    Error error = FormatEntity::Parse(default_format_str, m_default_entry);
+    if (error.Success()) {
+      m_default_format = default_format;
+      m_current_format = default_format;
+      m_current_entry = m_default_entry;
     }
+  }
 }
 
-bool
-OptionValueFormatEntity::Clear ()
-{
-    m_current_entry = m_default_entry;
-    m_current_format = m_default_format;
-    m_value_was_set = false;
-    return true;
+bool OptionValueFormatEntity::Clear() {
+  m_current_entry = m_default_entry;
+  m_current_format = m_default_format;
+  m_value_was_set = false;
+  return true;
 }
 
-
-void
-OptionValueFormatEntity::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask)
-{
+void OptionValueFormatEntity::DumpValue(const ExecutionContext *exe_ctx,
+                                        Stream &strm, uint32_t dump_mask) {
+  if (dump_mask & eDumpOptionType)
+    strm.Printf("(%s)", GetTypeAsCString());
+  if (dump_mask & eDumpOptionValue) {
     if (dump_mask & eDumpOptionType)
-        strm.Printf ("(%s)", GetTypeAsCString ());
-    if (dump_mask & eDumpOptionValue)
-    {
-        if (dump_mask & eDumpOptionType)
-            strm.PutCString (" = \"");
-        strm << m_current_format.c_str() << '"';
+      strm.PutCString(" = \"");
+    strm << m_current_format.c_str() << '"';
+  }
+}
+
+Error OptionValueFormatEntity::SetValueFromString(llvm::StringRef value_str,
+                                                  VarSetOperationType op) {
+  Error error;
+  switch (op) {
+  case eVarSetOperationClear:
+    Clear();
+    NotifyValueChanged();
+    break;
+
+  case eVarSetOperationReplace:
+  case eVarSetOperationAssign: {
+    // Check if the string starts with a quote character after removing leading
+    // and trailing spaces.
+    // If it does start with a quote character, make sure it ends with the same
+    // quote character
+    // and remove the quotes before we parse the format string. If the string
+    // doesn't start with
+    // a quote, leave the string alone and parse as is.
+    llvm::StringRef trimmed_value_str = value_str.trim();
+    if (!trimmed_value_str.empty()) {
+      const char first_char = trimmed_value_str[0];
+      if (first_char == '"' || first_char == '\'') {
+        const size_t trimmed_len = trimmed_value_str.size();
+        if (trimmed_len == 1 || value_str[trimmed_len - 1] != first_char) {
+          error.SetErrorStringWithFormat("mismatched quotes");
+          return error;
+        }
+        value_str = trimmed_value_str.substr(1, trimmed_len - 2);
+      }
     }
-}
-
-Error
-OptionValueFormatEntity::SetValueFromString (llvm::StringRef value_str,
-                                             VarSetOperationType op)
-{
-    Error error;
-    switch (op)
-    {
-        case eVarSetOperationClear:
-            Clear();
-            NotifyValueChanged();
-            break;
-            
-        case eVarSetOperationReplace:
-        case eVarSetOperationAssign:
-            {
-                // Check if the string starts with a quote character after removing leading and trailing spaces.
-                // If it does start with a quote character, make sure it ends with the same quote character
-                // and remove the quotes before we parse the format string. If the string doesn't start with
-                // a quote, leave the string alone and parse as is.
-                llvm::StringRef trimmed_value_str = value_str.trim();
-                if (!trimmed_value_str.empty())
-                {
-                    const char first_char = trimmed_value_str[0];
-                    if (first_char == '"' || first_char == '\'')
-                    {
-                        const size_t trimmed_len = trimmed_value_str.size();
-                        if (trimmed_len == 1 || value_str[trimmed_len-1] != first_char)
-                        {
-                            error.SetErrorStringWithFormat("mismatched quotes");
-                            return error;
-                        }
-                        value_str = trimmed_value_str.substr(1,trimmed_len-2);
-                    }
-                }
-                FormatEntity::Entry entry;
-                error = FormatEntity::Parse(value_str, entry);
-                if (error.Success())
-                {
-                    m_current_entry = std::move(entry);
-                    m_current_format = value_str;
-                    m_value_was_set = true;
-                    NotifyValueChanged();
-                }
-            }
-            break;
-            
-        case eVarSetOperationInsertBefore:
-        case eVarSetOperationInsertAfter:
-        case eVarSetOperationRemove:
-        case eVarSetOperationAppend:
-        case eVarSetOperationInvalid:
-            error = OptionValue::SetValueFromString (value_str, op);
-            break;
+    FormatEntity::Entry entry;
+    error = FormatEntity::Parse(value_str, entry);
+    if (error.Success()) {
+      m_current_entry = std::move(entry);
+      m_current_format = value_str;
+      m_value_was_set = true;
+      NotifyValueChanged();
     }
-    return error;
-}
+  } break;
 
-lldb::OptionValueSP
-OptionValueFormatEntity::DeepCopy () const
-{
-    return OptionValueSP(new OptionValueFormatEntity(*this));
-}
-
-size_t
-OptionValueFormatEntity::AutoComplete (CommandInterpreter &interpreter,
-                                       const char *s,
-                                       int match_start_point,
-                                       int max_return_elements,
-                                       bool &word_complete,
-                                       StringList &matches)
-{
-    return FormatEntity::AutoComplete (s, match_start_point, max_return_elements, word_complete, matches);
+  case eVarSetOperationInsertBefore:
+  case eVarSetOperationInsertAfter:
+  case eVarSetOperationRemove:
+  case eVarSetOperationAppend:
+  case eVarSetOperationInvalid:
+    error = OptionValue::SetValueFromString(value_str, op);
+    break;
+  }
+  return error;
+}
+
+lldb::OptionValueSP OptionValueFormatEntity::DeepCopy() const {
+  return OptionValueSP(new OptionValueFormatEntity(*this));
+}
+
+size_t OptionValueFormatEntity::AutoComplete(
+    CommandInterpreter &interpreter, const char *s, int match_start_point,
+    int max_return_elements, bool &word_complete, StringList &matches) {
+  return FormatEntity::AutoComplete(s, match_start_point, max_return_elements,
+                                    word_complete, matches);
 }
-

Modified: lldb/trunk/source/Interpreter/OptionValueLanguage.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/OptionValueLanguage.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/OptionValueLanguage.cpp (original)
+++ lldb/trunk/source/Interpreter/OptionValueLanguage.cpp Tue Sep  6 15:57:50 2016
@@ -21,72 +21,61 @@
 using namespace lldb;
 using namespace lldb_private;
 
-void
-OptionValueLanguage::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask)
-{
+void OptionValueLanguage::DumpValue(const ExecutionContext *exe_ctx,
+                                    Stream &strm, uint32_t dump_mask) {
+  if (dump_mask & eDumpOptionType)
+    strm.Printf("(%s)", GetTypeAsCString());
+  if (dump_mask & eDumpOptionValue) {
     if (dump_mask & eDumpOptionType)
-        strm.Printf ("(%s)", GetTypeAsCString ());
-    if (dump_mask & eDumpOptionValue)
-    {
-        if (dump_mask & eDumpOptionType)
-            strm.PutCString (" = ");
-        strm.PutCString (Language::GetNameForLanguageType(m_current_value));
-    }
+      strm.PutCString(" = ");
+    strm.PutCString(Language::GetNameForLanguageType(m_current_value));
+  }
 }
 
-Error
-OptionValueLanguage::SetValueFromString (llvm::StringRef value, VarSetOperationType op)
-{
-    Error error;
-    switch (op)
-    {
-    case eVarSetOperationClear:
-        Clear();
-        break;
-        
-    case eVarSetOperationReplace:
-    case eVarSetOperationAssign:
-        {
-            ConstString lang_name(value.trim());
-            std::set<lldb::LanguageType> languages_for_types;
-            std::set<lldb::LanguageType> languages_for_expressions;
-            Language::GetLanguagesSupportingTypeSystems(languages_for_types, languages_for_expressions);
-
-            LanguageType new_type = Language::GetLanguageTypeFromString(lang_name.GetCString());
-            if (new_type && languages_for_types.count(new_type))
-            {
-                m_value_was_set = true;
-                m_current_value = new_type;
-            }
-            else
-            {
-                StreamString error_strm;
-                error_strm.Printf("invalid language type '%s', ", value.str().c_str());
-                error_strm.Printf("valid values are:\n");
-                for (lldb::LanguageType language : languages_for_types)
-                {
-                    error_strm.Printf("%s%s%s", "    ", Language::GetNameForLanguageType(language), "\n");
-                }
-                error.SetErrorString(error_strm.GetData());
-            }
-        }
-        break;
-        
-    case eVarSetOperationInsertBefore:
-    case eVarSetOperationInsertAfter:
-    case eVarSetOperationRemove:
-    case eVarSetOperationAppend:
-    case eVarSetOperationInvalid:
-        error = OptionValue::SetValueFromString(value, op);
-        break;
+Error OptionValueLanguage::SetValueFromString(llvm::StringRef value,
+                                              VarSetOperationType op) {
+  Error error;
+  switch (op) {
+  case eVarSetOperationClear:
+    Clear();
+    break;
+
+  case eVarSetOperationReplace:
+  case eVarSetOperationAssign: {
+    ConstString lang_name(value.trim());
+    std::set<lldb::LanguageType> languages_for_types;
+    std::set<lldb::LanguageType> languages_for_expressions;
+    Language::GetLanguagesSupportingTypeSystems(languages_for_types,
+                                                languages_for_expressions);
+
+    LanguageType new_type =
+        Language::GetLanguageTypeFromString(lang_name.GetCString());
+    if (new_type && languages_for_types.count(new_type)) {
+      m_value_was_set = true;
+      m_current_value = new_type;
+    } else {
+      StreamString error_strm;
+      error_strm.Printf("invalid language type '%s', ", value.str().c_str());
+      error_strm.Printf("valid values are:\n");
+      for (lldb::LanguageType language : languages_for_types) {
+        error_strm.Printf("%s%s%s", "    ",
+                          Language::GetNameForLanguageType(language), "\n");
+      }
+      error.SetErrorString(error_strm.GetData());
     }
-    return error;
-}
+  } break;
 
-
-lldb::OptionValueSP
-OptionValueLanguage::DeepCopy () const
-{
-    return OptionValueSP(new OptionValueLanguage(*this));
+  case eVarSetOperationInsertBefore:
+  case eVarSetOperationInsertAfter:
+  case eVarSetOperationRemove:
+  case eVarSetOperationAppend:
+  case eVarSetOperationInvalid:
+    error = OptionValue::SetValueFromString(value, op);
+    break;
+  }
+  return error;
 }
 
+lldb::OptionValueSP OptionValueLanguage::DeepCopy() const {
+  return OptionValueSP(new OptionValueLanguage(*this));
+}

Modified: lldb/trunk/source/Interpreter/OptionValuePathMappings.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/OptionValuePathMappings.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/OptionValuePathMappings.cpp (original)
+++ lldb/trunk/source/Interpreter/OptionValuePathMappings.cpp Tue Sep  6 15:57:50 2016
@@ -20,222 +20,189 @@
 
 using namespace lldb;
 using namespace lldb_private;
-namespace
-{
-    static bool
-    VerifyPathExists(const char *path)
-    {
-        if (path && path[0])
-            return FileSpec(path, false).Exists();
-        else
-            return false;
-    }
+namespace {
+static bool VerifyPathExists(const char *path) {
+  if (path && path[0])
+    return FileSpec(path, false).Exists();
+  else
+    return false;
+}
 }
 
-
-void
-OptionValuePathMappings::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask)
-{
+void OptionValuePathMappings::DumpValue(const ExecutionContext *exe_ctx,
+                                        Stream &strm, uint32_t dump_mask) {
+  if (dump_mask & eDumpOptionType)
+    strm.Printf("(%s)", GetTypeAsCString());
+  if (dump_mask & eDumpOptionValue) {
     if (dump_mask & eDumpOptionType)
-        strm.Printf ("(%s)", GetTypeAsCString ());
-    if (dump_mask & eDumpOptionValue)
-    {
-        if (dump_mask & eDumpOptionType)
-            strm.Printf (" =%s", (m_path_mappings.GetSize() > 0) ? "\n" : "");
-        m_path_mappings.Dump(&strm);
-    }
+      strm.Printf(" =%s", (m_path_mappings.GetSize() > 0) ? "\n" : "");
+    m_path_mappings.Dump(&strm);
+  }
 }
 
-Error
-OptionValuePathMappings::SetValueFromString (llvm::StringRef value, VarSetOperationType op)
-{
-    Error error;
-    Args args(value.str().c_str());
-    const size_t argc = args.GetArgumentCount();
-
-    switch (op)
-    {
-        case eVarSetOperationClear:
-            Clear ();
-            NotifyValueChanged();
-            break;
-            
-        case eVarSetOperationReplace:
-            // Must be at least one index + 1 pair of paths, and the pair count must be even
-            if (argc >= 3 && (((argc - 1) & 1) == 0))
-            {
-                uint32_t idx = StringConvert::ToUInt32(args.GetArgumentAtIndex(0), UINT32_MAX);
-                const uint32_t count = m_path_mappings.GetSize();
-                if (idx > count)
-                {
-                    error.SetErrorStringWithFormat("invalid file list index %u, index must be 0 through %u", idx, count);
-                }
-                else
-                {
-                    bool changed = false;
-                    for (size_t i=1; i<argc; i += 2, ++idx)
-                    {
-                        const char *orginal_path = args.GetArgumentAtIndex(i);
-                        const char *replace_path = args.GetArgumentAtIndex(i+1);
-                        if (VerifyPathExists(replace_path))
-                        {
-                            ConstString a(orginal_path);
-                            ConstString b(replace_path);
-                            if (!m_path_mappings.Replace (a, b, idx, m_notify_changes))
-                                m_path_mappings.Append(a, b, m_notify_changes);
-                            changed = true;
-                        }
-                        else
-                        {
-                            error.SetErrorStringWithFormat("the replacement path doesn't exist: \"%s\"", replace_path);
-                            break;
-                        }
-                    }
-                    if (changed)
-                        NotifyValueChanged();
-                }
-            }
-            else
-            {
-                error.SetErrorString("replace operation takes an array index followed by one or more path pairs");
-            }
-            break;
-            
-            
-            
-        case eVarSetOperationAssign:
-            if (argc < 2 || (argc & 1))
-            {
-                error.SetErrorString("assign operation takes one or more path pairs");
-                break;
-            }
-            m_path_mappings.Clear(m_notify_changes);
-            // Fall through to append case
-            LLVM_FALLTHROUGH;
-        case eVarSetOperationAppend:
-            if (argc < 2 || (argc & 1))
-            {
-                error.SetErrorString("append operation takes one or more path pairs");
-                break;
-            }
-            else
-            {
-                bool changed = false;
-                for (size_t i=0; i<argc; i += 2)
-                {
-                    const char *orginal_path = args.GetArgumentAtIndex(i);
-                    const char *replace_path = args.GetArgumentAtIndex(i+1);
-                    if (VerifyPathExists(replace_path))
-                    {
-                        ConstString a(orginal_path);
-                        ConstString b(replace_path);
-                        m_path_mappings.Append(a, b, m_notify_changes);
-                        m_value_was_set = true;
-                        changed = true;
-                    }
-                    else
-                    {
-                        error.SetErrorStringWithFormat("the replacement path doesn't exist: \"%s\"", replace_path);
-                        break;
-                    }
-                }
-                if (changed)
-                    NotifyValueChanged();
-            }
-            break;
-            
-        case eVarSetOperationInsertBefore:
-        case eVarSetOperationInsertAfter:
-            // Must be at least one index + 1 pair of paths, and the pair count must be even
-            if (argc >= 3 && (((argc - 1) & 1) == 0))
-            {
-                uint32_t idx = StringConvert::ToUInt32(args.GetArgumentAtIndex(0), UINT32_MAX);
-                const uint32_t count = m_path_mappings.GetSize();
-                if (idx > count)
-                {
-                    error.SetErrorStringWithFormat("invalid file list index %u, index must be 0 through %u", idx, count);
-                }
-                else
-                {
-                    bool changed = false;
-                    if (op == eVarSetOperationInsertAfter)
-                        ++idx;
-                    for (size_t i=1; i<argc; i += 2, ++idx)
-                    {
-                        const char *orginal_path = args.GetArgumentAtIndex(i);
-                        const char *replace_path = args.GetArgumentAtIndex(i+1);
-                        if (VerifyPathExists(replace_path))
-                        {
-                            ConstString a(orginal_path);
-                            ConstString b(replace_path);
-                            m_path_mappings.Insert (a, b, idx, m_notify_changes);
-                            changed = true;
-                        }
-                        else
-                        {
-                            error.SetErrorStringWithFormat("the replacement path doesn't exist: \"%s\"", replace_path);
-                            break;
-                        }
-                    }
-                    if (changed)
-                        NotifyValueChanged();
-                }
-            }
-            else
-            {
-                error.SetErrorString("insert operation takes an array index followed by one or more path pairs");
-            }
-            break;
-            
-        case eVarSetOperationRemove:
-            if (argc > 0)
-            {
-                std::vector<int> remove_indexes;
-                bool all_indexes_valid = true;
-                size_t i;
-                for (i=0; all_indexes_valid && i<argc; ++i)
-                {
-                    const int idx = StringConvert::ToSInt32(args.GetArgumentAtIndex(i), INT32_MAX);
-                    if (idx == INT32_MAX)
-                        all_indexes_valid = false;
-                    else
-                        remove_indexes.push_back(idx);
-                }
-                
-                if (all_indexes_valid)
-                {
-                    size_t num_remove_indexes = remove_indexes.size();
-                    if (num_remove_indexes)
-                    {
-                        // Sort and then erase in reverse so indexes are always valid
-                        std::sort(remove_indexes.begin(), remove_indexes.end());
-                        for (size_t j=num_remove_indexes-1; j<num_remove_indexes; ++j)
-                        {
-                            m_path_mappings.Remove (j, m_notify_changes);
-                        }
-                    }
-                    NotifyValueChanged();
-                }
-                else
-                {
-                    error.SetErrorStringWithFormat("invalid array index '%s', aborting remove operation", args.GetArgumentAtIndex(i));
-                }
-            }
-            else
-            {
-                error.SetErrorString("remove operation takes one or more array index");
-            }
-            break;
+Error OptionValuePathMappings::SetValueFromString(llvm::StringRef value,
+                                                  VarSetOperationType op) {
+  Error error;
+  Args args(value.str().c_str());
+  const size_t argc = args.GetArgumentCount();
+
+  switch (op) {
+  case eVarSetOperationClear:
+    Clear();
+    NotifyValueChanged();
+    break;
+
+  case eVarSetOperationReplace:
+    // Must be at least one index + 1 pair of paths, and the pair count must be
+    // even
+    if (argc >= 3 && (((argc - 1) & 1) == 0)) {
+      uint32_t idx =
+          StringConvert::ToUInt32(args.GetArgumentAtIndex(0), UINT32_MAX);
+      const uint32_t count = m_path_mappings.GetSize();
+      if (idx > count) {
+        error.SetErrorStringWithFormat(
+            "invalid file list index %u, index must be 0 through %u", idx,
+            count);
+      } else {
+        bool changed = false;
+        for (size_t i = 1; i < argc; i += 2, ++idx) {
+          const char *orginal_path = args.GetArgumentAtIndex(i);
+          const char *replace_path = args.GetArgumentAtIndex(i + 1);
+          if (VerifyPathExists(replace_path)) {
+            ConstString a(orginal_path);
+            ConstString b(replace_path);
+            if (!m_path_mappings.Replace(a, b, idx, m_notify_changes))
+              m_path_mappings.Append(a, b, m_notify_changes);
+            changed = true;
+          } else {
+            error.SetErrorStringWithFormat(
+                "the replacement path doesn't exist: \"%s\"", replace_path);
+            break;
+          }
+        }
+        if (changed)
+          NotifyValueChanged();
+      }
+    } else {
+      error.SetErrorString("replace operation takes an array index followed by "
+                           "one or more path pairs");
+    }
+    break;
 
-        case eVarSetOperationInvalid:
-            error = OptionValue::SetValueFromString (value, op);
-            break;
+  case eVarSetOperationAssign:
+    if (argc < 2 || (argc & 1)) {
+      error.SetErrorString("assign operation takes one or more path pairs");
+      break;
+    }
+    m_path_mappings.Clear(m_notify_changes);
+    // Fall through to append case
+    LLVM_FALLTHROUGH;
+  case eVarSetOperationAppend:
+    if (argc < 2 || (argc & 1)) {
+      error.SetErrorString("append operation takes one or more path pairs");
+      break;
+    } else {
+      bool changed = false;
+      for (size_t i = 0; i < argc; i += 2) {
+        const char *orginal_path = args.GetArgumentAtIndex(i);
+        const char *replace_path = args.GetArgumentAtIndex(i + 1);
+        if (VerifyPathExists(replace_path)) {
+          ConstString a(orginal_path);
+          ConstString b(replace_path);
+          m_path_mappings.Append(a, b, m_notify_changes);
+          m_value_was_set = true;
+          changed = true;
+        } else {
+          error.SetErrorStringWithFormat(
+              "the replacement path doesn't exist: \"%s\"", replace_path);
+          break;
+        }
+      }
+      if (changed)
+        NotifyValueChanged();
+    }
+    break;
+
+  case eVarSetOperationInsertBefore:
+  case eVarSetOperationInsertAfter:
+    // Must be at least one index + 1 pair of paths, and the pair count must be
+    // even
+    if (argc >= 3 && (((argc - 1) & 1) == 0)) {
+      uint32_t idx =
+          StringConvert::ToUInt32(args.GetArgumentAtIndex(0), UINT32_MAX);
+      const uint32_t count = m_path_mappings.GetSize();
+      if (idx > count) {
+        error.SetErrorStringWithFormat(
+            "invalid file list index %u, index must be 0 through %u", idx,
+            count);
+      } else {
+        bool changed = false;
+        if (op == eVarSetOperationInsertAfter)
+          ++idx;
+        for (size_t i = 1; i < argc; i += 2, ++idx) {
+          const char *orginal_path = args.GetArgumentAtIndex(i);
+          const char *replace_path = args.GetArgumentAtIndex(i + 1);
+          if (VerifyPathExists(replace_path)) {
+            ConstString a(orginal_path);
+            ConstString b(replace_path);
+            m_path_mappings.Insert(a, b, idx, m_notify_changes);
+            changed = true;
+          } else {
+            error.SetErrorStringWithFormat(
+                "the replacement path doesn't exist: \"%s\"", replace_path);
+            break;
+          }
+        }
+        if (changed)
+          NotifyValueChanged();
+      }
+    } else {
+      error.SetErrorString("insert operation takes an array index followed by "
+                           "one or more path pairs");
     }
-    return error;
+    break;
+
+  case eVarSetOperationRemove:
+    if (argc > 0) {
+      std::vector<int> remove_indexes;
+      bool all_indexes_valid = true;
+      size_t i;
+      for (i = 0; all_indexes_valid && i < argc; ++i) {
+        const int idx =
+            StringConvert::ToSInt32(args.GetArgumentAtIndex(i), INT32_MAX);
+        if (idx == INT32_MAX)
+          all_indexes_valid = false;
+        else
+          remove_indexes.push_back(idx);
+      }
+
+      if (all_indexes_valid) {
+        size_t num_remove_indexes = remove_indexes.size();
+        if (num_remove_indexes) {
+          // Sort and then erase in reverse so indexes are always valid
+          std::sort(remove_indexes.begin(), remove_indexes.end());
+          for (size_t j = num_remove_indexes - 1; j < num_remove_indexes; ++j) {
+            m_path_mappings.Remove(j, m_notify_changes);
+          }
+        }
+        NotifyValueChanged();
+      } else {
+        error.SetErrorStringWithFormat(
+            "invalid array index '%s', aborting remove operation",
+            args.GetArgumentAtIndex(i));
+      }
+    } else {
+      error.SetErrorString("remove operation takes one or more array index");
+    }
+    break;
+
+  case eVarSetOperationInvalid:
+    error = OptionValue::SetValueFromString(value, op);
+    break;
+  }
+  return error;
 }
 
-lldb::OptionValueSP
-OptionValuePathMappings::DeepCopy () const
-{
-    return OptionValueSP(new OptionValuePathMappings(*this));
+lldb::OptionValueSP OptionValuePathMappings::DeepCopy() const {
+  return OptionValueSP(new OptionValuePathMappings(*this));
 }

Modified: lldb/trunk/source/Interpreter/OptionValueProperties.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/OptionValueProperties.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/OptionValueProperties.cpp (original)
+++ lldb/trunk/source/Interpreter/OptionValueProperties.cpp Tue Sep  6 15:57:50 2016
@@ -1,4 +1,5 @@
-//===-- OptionValueProperties.cpp ---------------------------------*- C++ -*-===//
+//===-- OptionValueProperties.cpp ---------------------------------*- C++
+//-*-===//
 //
 //                     The LLVM Compiler Infrastructure
 //
@@ -24,89 +25,68 @@
 using namespace lldb;
 using namespace lldb_private;
 
+OptionValueProperties::OptionValueProperties(const ConstString &name)
+    : OptionValue(), m_name(name), m_properties(), m_name_to_index() {}
 
-OptionValueProperties::OptionValueProperties (const ConstString &name) :
-    OptionValue (),
-    m_name (name),
-    m_properties (),
-    m_name_to_index ()
-{
-}
-
-OptionValueProperties::OptionValueProperties (const OptionValueProperties &global_properties) :
-    OptionValue (global_properties),
-    std::enable_shared_from_this<OptionValueProperties> (),
-    m_name (global_properties.m_name),
-    m_properties (global_properties.m_properties),
-    m_name_to_index (global_properties.m_name_to_index)
-{
-    // We now have an exact copy of "global_properties". We need to now
-    // find all non-global settings and copy the property values so that
-    // all non-global settings get new OptionValue instances created for
-    // them.
-    const size_t num_properties = m_properties.size();
-    for (size_t i=0; i<num_properties; ++i)
-    {
-        // Duplicate any values that are not global when constructing properties from
-        // a global copy
-        if (m_properties[i].IsGlobal() == false)
-        {
-            lldb::OptionValueSP new_value_sp (m_properties[i].GetValue()->DeepCopy());
-            m_properties[i].SetOptionValue(new_value_sp);
-        }
-    }
-}
-
-
-
-size_t
-OptionValueProperties::GetNumProperties() const
-{
-    return m_properties.size();
-}
-
-
-void
-OptionValueProperties::Initialize (const PropertyDefinition *defs)
-{
-    for (size_t i=0; defs[i].name; ++i)
-    {
-        Property property(defs[i]);
-        assert(property.IsValid());
-        m_name_to_index.Append(property.GetName().GetCString(),m_properties.size());
-        property.GetValue()->SetParent(shared_from_this());
-        m_properties.push_back(property);
-    }
-    m_name_to_index.Sort();
-}
-
-void
-OptionValueProperties::SetValueChangedCallback (uint32_t property_idx,
-                                                OptionValueChangedCallback callback,
-                                                void *baton)
-{
-    Property *property = ProtectedGetPropertyAtIndex (property_idx);
-    if (property)
-        property->SetValueChangedCallback (callback, baton);
-}
-
-void
-OptionValueProperties::AppendProperty(const ConstString &name,
-                                      const ConstString &desc,
-                                      bool is_global,
-                                      const OptionValueSP &value_sp)
-{
-    Property property(name, desc, is_global, value_sp);
-    m_name_to_index.Append(name.GetCString(),m_properties.size());
+OptionValueProperties::OptionValueProperties(
+    const OptionValueProperties &global_properties)
+    : OptionValue(global_properties),
+      std::enable_shared_from_this<OptionValueProperties>(),
+      m_name(global_properties.m_name),
+      m_properties(global_properties.m_properties),
+      m_name_to_index(global_properties.m_name_to_index) {
+  // We now have an exact copy of "global_properties". We need to now
+  // find all non-global settings and copy the property values so that
+  // all non-global settings get new OptionValue instances created for
+  // them.
+  const size_t num_properties = m_properties.size();
+  for (size_t i = 0; i < num_properties; ++i) {
+    // Duplicate any values that are not global when constructing properties
+    // from
+    // a global copy
+    if (m_properties[i].IsGlobal() == false) {
+      lldb::OptionValueSP new_value_sp(m_properties[i].GetValue()->DeepCopy());
+      m_properties[i].SetOptionValue(new_value_sp);
+    }
+  }
+}
+
+size_t OptionValueProperties::GetNumProperties() const {
+  return m_properties.size();
+}
+
+void OptionValueProperties::Initialize(const PropertyDefinition *defs) {
+  for (size_t i = 0; defs[i].name; ++i) {
+    Property property(defs[i]);
+    assert(property.IsValid());
+    m_name_to_index.Append(property.GetName().GetCString(),
+                           m_properties.size());
+    property.GetValue()->SetParent(shared_from_this());
     m_properties.push_back(property);
-    value_sp->SetParent (shared_from_this());
-    m_name_to_index.Sort();
+  }
+  m_name_to_index.Sort();
 }
 
+void OptionValueProperties::SetValueChangedCallback(
+    uint32_t property_idx, OptionValueChangedCallback callback, void *baton) {
+  Property *property = ProtectedGetPropertyAtIndex(property_idx);
+  if (property)
+    property->SetValueChangedCallback(callback, baton);
+}
+
+void OptionValueProperties::AppendProperty(const ConstString &name,
+                                           const ConstString &desc,
+                                           bool is_global,
+                                           const OptionValueSP &value_sp) {
+  Property property(name, desc, is_global, value_sp);
+  m_name_to_index.Append(name.GetCString(), m_properties.size());
+  m_properties.push_back(property);
+  value_sp->SetParent(shared_from_this());
+  m_name_to_index.Sort();
+}
 
-
-//bool
-//OptionValueProperties::GetQualifiedName (Stream &strm)
+// bool
+// OptionValueProperties::GetQualifiedName (Stream &strm)
 //{
 //    bool dumped_something = false;
 ////    lldb::OptionValuePropertiesSP parent_sp(GetParent ());
@@ -125,686 +105,589 @@ OptionValueProperties::AppendProperty(co
 //}
 //
 lldb::OptionValueSP
-OptionValueProperties::GetValueForKey  (const ExecutionContext *exe_ctx,
-                                        const ConstString &key,
-                                        bool will_modify) const
-{
-    lldb::OptionValueSP value_sp;
-    size_t idx = m_name_to_index.Find (key.GetCString(), SIZE_MAX);
-    if (idx < m_properties.size())
-        value_sp = GetPropertyAtIndex(exe_ctx, will_modify, idx)->GetValue();
-    return value_sp;
+OptionValueProperties::GetValueForKey(const ExecutionContext *exe_ctx,
+                                      const ConstString &key,
+                                      bool will_modify) const {
+  lldb::OptionValueSP value_sp;
+  size_t idx = m_name_to_index.Find(key.GetCString(), SIZE_MAX);
+  if (idx < m_properties.size())
+    value_sp = GetPropertyAtIndex(exe_ctx, will_modify, idx)->GetValue();
+  return value_sp;
 }
 
 lldb::OptionValueSP
-OptionValueProperties::GetSubValue (const ExecutionContext *exe_ctx,
-                                    const char *name,
-                                    bool will_modify,
-                                    Error &error) const
-{
-    lldb::OptionValueSP value_sp;
-    
-    if (name && name[0])
-    {
-        const char *sub_name = nullptr;
-        ConstString key;
-        size_t key_len = ::strcspn (name, ".[{");
-        
-        if (name[key_len])
-        {
-            key.SetCStringWithLength (name, key_len);
-            sub_name = name + key_len;
-        }
-        else
-            key.SetCString (name);
-        
-        value_sp = GetValueForKey (exe_ctx, key, will_modify);
-        if (sub_name && value_sp)
-        {
-            switch (sub_name[0])
-            {
-            case '.':
-            {
-                lldb::OptionValueSP return_val_sp;
-                return_val_sp = value_sp->GetSubValue (exe_ctx, sub_name + 1, will_modify, error);
-                if (!return_val_sp)
-                {
-                    if (Properties::IsSettingExperimental(sub_name + 1))
-                    {
-                        size_t experimental_len = strlen(Properties::GetExperimentalSettingsName()); 
-                        if (*(sub_name + experimental_len + 1) == '.')
-                        return_val_sp = value_sp->GetSubValue(exe_ctx, sub_name + experimental_len + 2, will_modify, error);
-                        // It isn't an error if an experimental setting is not present.
-                        if (!return_val_sp)
-                            error.Clear();
-                    }
-                }
-                return return_val_sp;
-            }
-            case '{':
-                // Predicate matching for predicates like
-                // "<setting-name>{<predicate>}"
-                // strings are parsed by the current OptionValueProperties subclass
-                // to mean whatever they want to. For instance a subclass of
-                // OptionValueProperties for a lldb_private::Target might implement:
-                // "target.run-args{arch==i386}"   -- only set run args if the arch is i386
-                // "target.run-args{path=/tmp/a/b/c/a.out}" -- only set run args if the path matches
-                // "target.run-args{basename==test&&arch==x86_64}" -- only set run args if executable basename is "test" and arch is "x86_64"
-                if (sub_name[1])
-                {
-                    const char *predicate_start = sub_name + 1;
-                    const char *predicate_end = strchr(predicate_start, '}');
-                    if (predicate_end)
-                    {
-                        std::string predicate(predicate_start, predicate_end);
-                        if (PredicateMatches(exe_ctx, predicate.c_str()))
-                        {
-                            if (predicate_end[1])
-                            {
-                                // Still more subvalue string to evaluate
-                                return value_sp->GetSubValue (exe_ctx, predicate_end + 1, will_modify, error);
-                            }
-                            else
-                            {
-                                // We have a match!
-                                break;
-                            }
-                        }
-                    }
-                }
-                // Predicate didn't match or wasn't correctly formed
-                value_sp.reset();
-                break;
-            
-            case '[':
-                // Array or dictionary access for subvalues like:
-                // "[12]"       -- access 12th array element
-                // "['hello']"  -- dictionary access of key named hello
-                return value_sp->GetSubValue (exe_ctx, sub_name, will_modify, error);
-
-            default:
-                value_sp.reset();
+OptionValueProperties::GetSubValue(const ExecutionContext *exe_ctx,
+                                   const char *name, bool will_modify,
+                                   Error &error) const {
+  lldb::OptionValueSP value_sp;
+
+  if (name && name[0]) {
+    const char *sub_name = nullptr;
+    ConstString key;
+    size_t key_len = ::strcspn(name, ".[{");
+
+    if (name[key_len]) {
+      key.SetCStringWithLength(name, key_len);
+      sub_name = name + key_len;
+    } else
+      key.SetCString(name);
+
+    value_sp = GetValueForKey(exe_ctx, key, will_modify);
+    if (sub_name && value_sp) {
+      switch (sub_name[0]) {
+      case '.': {
+        lldb::OptionValueSP return_val_sp;
+        return_val_sp =
+            value_sp->GetSubValue(exe_ctx, sub_name + 1, will_modify, error);
+        if (!return_val_sp) {
+          if (Properties::IsSettingExperimental(sub_name + 1)) {
+            size_t experimental_len =
+                strlen(Properties::GetExperimentalSettingsName());
+            if (*(sub_name + experimental_len + 1) == '.')
+              return_val_sp = value_sp->GetSubValue(
+                  exe_ctx, sub_name + experimental_len + 2, will_modify, error);
+            // It isn't an error if an experimental setting is not present.
+            if (!return_val_sp)
+              error.Clear();
+          }
+        }
+        return return_val_sp;
+      }
+      case '{':
+        // Predicate matching for predicates like
+        // "<setting-name>{<predicate>}"
+        // strings are parsed by the current OptionValueProperties subclass
+        // to mean whatever they want to. For instance a subclass of
+        // OptionValueProperties for a lldb_private::Target might implement:
+        // "target.run-args{arch==i386}"   -- only set run args if the arch is
+        // i386
+        // "target.run-args{path=/tmp/a/b/c/a.out}" -- only set run args if the
+        // path matches
+        // "target.run-args{basename==test&&arch==x86_64}" -- only set run args
+        // if executable basename is "test" and arch is "x86_64"
+        if (sub_name[1]) {
+          const char *predicate_start = sub_name + 1;
+          const char *predicate_end = strchr(predicate_start, '}');
+          if (predicate_end) {
+            std::string predicate(predicate_start, predicate_end);
+            if (PredicateMatches(exe_ctx, predicate.c_str())) {
+              if (predicate_end[1]) {
+                // Still more subvalue string to evaluate
+                return value_sp->GetSubValue(exe_ctx, predicate_end + 1,
+                                             will_modify, error);
+              } else {
+                // We have a match!
                 break;
+              }
             }
+          }
         }
-    }
-    return value_sp;
-}
-
-Error
-OptionValueProperties::SetSubValue (const ExecutionContext *exe_ctx,
-                                    VarSetOperationType op,
-                                    const char *name,
-                                    const char *value)
-{
-    Error error;
-    const bool will_modify = true;
-    lldb::OptionValueSP value_sp (GetSubValue (exe_ctx, name, will_modify, error));
-    if (value_sp)
-        error = value_sp->SetValueFromString(value ? llvm::StringRef(value) : llvm::StringRef(), op);
-    else
-    {
-        if (error.AsCString() == nullptr)
-            error.SetErrorStringWithFormat("invalid value path '%s'", name);
-    }
-    return error;
-}
-
-
-ConstString
-OptionValueProperties::GetPropertyNameAtIndex (uint32_t idx) const
-{
-    const Property *property = GetPropertyAtIndex(nullptr, false, idx);
-    if (property)
-        return property->GetName();
-    return ConstString();
-    
+        // Predicate didn't match or wasn't correctly formed
+        value_sp.reset();
+        break;
+
+      case '[':
+        // Array or dictionary access for subvalues like:
+        // "[12]"       -- access 12th array element
+        // "['hello']"  -- dictionary access of key named hello
+        return value_sp->GetSubValue(exe_ctx, sub_name, will_modify, error);
+
+      default:
+        value_sp.reset();
+        break;
+      }
+    }
+  }
+  return value_sp;
+}
+
+Error OptionValueProperties::SetSubValue(const ExecutionContext *exe_ctx,
+                                         VarSetOperationType op,
+                                         const char *name, const char *value) {
+  Error error;
+  const bool will_modify = true;
+  lldb::OptionValueSP value_sp(GetSubValue(exe_ctx, name, will_modify, error));
+  if (value_sp)
+    error = value_sp->SetValueFromString(
+        value ? llvm::StringRef(value) : llvm::StringRef(), op);
+  else {
+    if (error.AsCString() == nullptr)
+      error.SetErrorStringWithFormat("invalid value path '%s'", name);
+  }
+  return error;
+}
+
+ConstString OptionValueProperties::GetPropertyNameAtIndex(uint32_t idx) const {
+  const Property *property = GetPropertyAtIndex(nullptr, false, idx);
+  if (property)
+    return property->GetName();
+  return ConstString();
 }
 
 const char *
-OptionValueProperties::GetPropertyDescriptionAtIndex (uint32_t idx) const
-{
-    const Property *property = GetPropertyAtIndex(nullptr, false, idx);
-    if (property)
-        return property->GetDescription();
-    return nullptr;
+OptionValueProperties::GetPropertyDescriptionAtIndex(uint32_t idx) const {
+  const Property *property = GetPropertyAtIndex(nullptr, false, idx);
+  if (property)
+    return property->GetDescription();
+  return nullptr;
 }
 
 uint32_t
-OptionValueProperties::GetPropertyIndex (const ConstString &name) const
-{
-    return m_name_to_index.Find (name.GetCString(), SIZE_MAX);
+OptionValueProperties::GetPropertyIndex(const ConstString &name) const {
+  return m_name_to_index.Find(name.GetCString(), SIZE_MAX);
 }
 
 const Property *
-OptionValueProperties::GetProperty (const ExecutionContext *exe_ctx, bool will_modify, const ConstString &name) const
-{
-    return GetPropertyAtIndex (exe_ctx, will_modify, m_name_to_index.Find (name.GetCString(), SIZE_MAX));
-}
-
-const Property *
-OptionValueProperties::GetPropertyAtIndex (const ExecutionContext *exe_ctx, bool will_modify, uint32_t idx) const
-{
-    return ProtectedGetPropertyAtIndex (idx);
-}
-
-lldb::OptionValueSP
-OptionValueProperties::GetPropertyValueAtIndex (const ExecutionContext *exe_ctx,
-                                                bool will_modify,
-                                                uint32_t idx) const
-{
-    const Property *setting = GetPropertyAtIndex (exe_ctx, will_modify, idx);
-    if (setting)
-        return setting->GetValue();
-    return OptionValueSP();
+OptionValueProperties::GetProperty(const ExecutionContext *exe_ctx,
+                                   bool will_modify,
+                                   const ConstString &name) const {
+  return GetPropertyAtIndex(exe_ctx, will_modify,
+                            m_name_to_index.Find(name.GetCString(), SIZE_MAX));
+}
+
+const Property *OptionValueProperties::GetPropertyAtIndex(
+    const ExecutionContext *exe_ctx, bool will_modify, uint32_t idx) const {
+  return ProtectedGetPropertyAtIndex(idx);
+}
+
+lldb::OptionValueSP OptionValueProperties::GetPropertyValueAtIndex(
+    const ExecutionContext *exe_ctx, bool will_modify, uint32_t idx) const {
+  const Property *setting = GetPropertyAtIndex(exe_ctx, will_modify, idx);
+  if (setting)
+    return setting->GetValue();
+  return OptionValueSP();
 }
 
 OptionValuePathMappings *
-OptionValueProperties::GetPropertyAtIndexAsOptionValuePathMappings (const ExecutionContext *exe_ctx, bool will_modify, uint32_t idx) const
-{
-    OptionValueSP value_sp(GetPropertyValueAtIndex (exe_ctx, will_modify, idx));
-    if (value_sp)
-        return value_sp->GetAsPathMappings();
-    return nullptr;
+OptionValueProperties::GetPropertyAtIndexAsOptionValuePathMappings(
+    const ExecutionContext *exe_ctx, bool will_modify, uint32_t idx) const {
+  OptionValueSP value_sp(GetPropertyValueAtIndex(exe_ctx, will_modify, idx));
+  if (value_sp)
+    return value_sp->GetAsPathMappings();
+  return nullptr;
 }
 
 OptionValueFileSpecList *
-OptionValueProperties::GetPropertyAtIndexAsOptionValueFileSpecList (const ExecutionContext *exe_ctx, bool will_modify, uint32_t idx) const
-{
-    OptionValueSP value_sp(GetPropertyValueAtIndex (exe_ctx, will_modify, idx));
-    if (value_sp)
-        return value_sp->GetAsFileSpecList();
-    return nullptr;
+OptionValueProperties::GetPropertyAtIndexAsOptionValueFileSpecList(
+    const ExecutionContext *exe_ctx, bool will_modify, uint32_t idx) const {
+  OptionValueSP value_sp(GetPropertyValueAtIndex(exe_ctx, will_modify, idx));
+  if (value_sp)
+    return value_sp->GetAsFileSpecList();
+  return nullptr;
 }
 
-OptionValueArch *
-OptionValueProperties::GetPropertyAtIndexAsOptionValueArch (const ExecutionContext *exe_ctx, uint32_t idx) const
-{
-    const Property *property = GetPropertyAtIndex (exe_ctx, false, idx);
-    if (property)
-        return property->GetValue()->GetAsArch();
-    return nullptr;
+OptionValueArch *OptionValueProperties::GetPropertyAtIndexAsOptionValueArch(
+    const ExecutionContext *exe_ctx, uint32_t idx) const {
+  const Property *property = GetPropertyAtIndex(exe_ctx, false, idx);
+  if (property)
+    return property->GetValue()->GetAsArch();
+  return nullptr;
 }
 
 OptionValueLanguage *
-OptionValueProperties::GetPropertyAtIndexAsOptionValueLanguage (const ExecutionContext *exe_ctx, uint32_t idx) const
-{
-    const Property *property = GetPropertyAtIndex (exe_ctx, false, idx);
-    if (property)
-        return property->GetValue()->GetAsLanguage();
-    return nullptr;
-}
-
-bool
-OptionValueProperties::GetPropertyAtIndexAsArgs (const ExecutionContext *exe_ctx, uint32_t idx, Args &args) const
-{
-    const Property *property = GetPropertyAtIndex (exe_ctx, false, idx);
-    if (property)
-    {
-        OptionValue *value = property->GetValue().get();
-        if (value)
-        {
-            const OptionValueArray *array = value->GetAsArray();
-            if (array)
-                return array->GetArgs(args);
-            else
-            {
-                const OptionValueDictionary *dict = value->GetAsDictionary();
-                if (dict)
-                    return dict->GetArgs(args);
-            }
-        }
+OptionValueProperties::GetPropertyAtIndexAsOptionValueLanguage(
+    const ExecutionContext *exe_ctx, uint32_t idx) const {
+  const Property *property = GetPropertyAtIndex(exe_ctx, false, idx);
+  if (property)
+    return property->GetValue()->GetAsLanguage();
+  return nullptr;
+}
+
+bool OptionValueProperties::GetPropertyAtIndexAsArgs(
+    const ExecutionContext *exe_ctx, uint32_t idx, Args &args) const {
+  const Property *property = GetPropertyAtIndex(exe_ctx, false, idx);
+  if (property) {
+    OptionValue *value = property->GetValue().get();
+    if (value) {
+      const OptionValueArray *array = value->GetAsArray();
+      if (array)
+        return array->GetArgs(args);
+      else {
+        const OptionValueDictionary *dict = value->GetAsDictionary();
+        if (dict)
+          return dict->GetArgs(args);
+      }
+    }
+  }
+  return false;
+}
+
+bool OptionValueProperties::SetPropertyAtIndexFromArgs(
+    const ExecutionContext *exe_ctx, uint32_t idx, const Args &args) {
+  const Property *property = GetPropertyAtIndex(exe_ctx, true, idx);
+  if (property) {
+    OptionValue *value = property->GetValue().get();
+    if (value) {
+      OptionValueArray *array = value->GetAsArray();
+      if (array)
+        return array->SetArgs(args, eVarSetOperationAssign).Success();
+      else {
+        OptionValueDictionary *dict = value->GetAsDictionary();
+        if (dict)
+          return dict->SetArgs(args, eVarSetOperationAssign).Success();
+      }
+    }
+  }
+  return false;
+}
+
+bool OptionValueProperties::GetPropertyAtIndexAsBoolean(
+    const ExecutionContext *exe_ctx, uint32_t idx, bool fail_value) const {
+  const Property *property = GetPropertyAtIndex(exe_ctx, false, idx);
+  if (property) {
+    OptionValue *value = property->GetValue().get();
+    if (value)
+      return value->GetBooleanValue(fail_value);
+  }
+  return fail_value;
+}
+
+bool OptionValueProperties::SetPropertyAtIndexAsBoolean(
+    const ExecutionContext *exe_ctx, uint32_t idx, bool new_value) {
+  const Property *property = GetPropertyAtIndex(exe_ctx, true, idx);
+  if (property) {
+    OptionValue *value = property->GetValue().get();
+    if (value) {
+      value->SetBooleanValue(new_value);
+      return true;
     }
-    return false;
-}
-
-bool
-OptionValueProperties::SetPropertyAtIndexFromArgs (const ExecutionContext *exe_ctx, uint32_t idx, const Args &args)
-{
-    const Property *property = GetPropertyAtIndex (exe_ctx, true, idx);
-    if (property)
-    {
-        OptionValue *value = property->GetValue().get();
-        if (value)
-        {
-            OptionValueArray *array = value->GetAsArray();
-            if (array)
-                return array->SetArgs(args, eVarSetOperationAssign).Success();
-            else
-            {
-                OptionValueDictionary *dict = value->GetAsDictionary();
-                if (dict)
-                    return dict->SetArgs(args, eVarSetOperationAssign).Success();
-            }
-        }
-    }
-    return false;
-}
-
-bool
-OptionValueProperties::GetPropertyAtIndexAsBoolean (const ExecutionContext *exe_ctx, uint32_t idx, bool fail_value) const
-{
-    const Property *property = GetPropertyAtIndex (exe_ctx, false, idx);
-    if (property)
-    {
-        OptionValue *value = property->GetValue().get();
-        if (value)
-            return value->GetBooleanValue(fail_value);
-    }
-    return fail_value;
-}
-
-bool
-OptionValueProperties::SetPropertyAtIndexAsBoolean (const ExecutionContext *exe_ctx, uint32_t idx, bool new_value)
-{
-    const Property *property = GetPropertyAtIndex (exe_ctx, true, idx);
-    if (property)
-    {
-        OptionValue *value = property->GetValue().get();
-        if (value)
-        {
-            value->SetBooleanValue(new_value);
-            return true;
-        }
-    }
-    return false;
+  }
+  return false;
 }
 
 OptionValueDictionary *
-OptionValueProperties::GetPropertyAtIndexAsOptionValueDictionary (const ExecutionContext *exe_ctx, uint32_t idx) const
-{
-    const Property *property = GetPropertyAtIndex (exe_ctx, false, idx);
-    if (property)
-        return property->GetValue()->GetAsDictionary();
-    return nullptr;
-}
-
-int64_t
-OptionValueProperties::GetPropertyAtIndexAsEnumeration (const ExecutionContext *exe_ctx, uint32_t idx, int64_t fail_value) const
-{
-    const Property *property = GetPropertyAtIndex (exe_ctx, false, idx);
-    if (property)
-    {
-        OptionValue *value = property->GetValue().get();
-        if (value)
-            return value->GetEnumerationValue(fail_value);
-    }
-    return fail_value;
-}
-
-bool
-OptionValueProperties::SetPropertyAtIndexAsEnumeration (const ExecutionContext *exe_ctx, uint32_t idx, int64_t new_value)
-{
-    const Property *property = GetPropertyAtIndex (exe_ctx, true, idx);
-    if (property)
-    {
-        OptionValue *value = property->GetValue().get();
-        if (value)
-            return value->SetEnumerationValue(new_value);
-    }
-    return false;
+OptionValueProperties::GetPropertyAtIndexAsOptionValueDictionary(
+    const ExecutionContext *exe_ctx, uint32_t idx) const {
+  const Property *property = GetPropertyAtIndex(exe_ctx, false, idx);
+  if (property)
+    return property->GetValue()->GetAsDictionary();
+  return nullptr;
+}
+
+int64_t OptionValueProperties::GetPropertyAtIndexAsEnumeration(
+    const ExecutionContext *exe_ctx, uint32_t idx, int64_t fail_value) const {
+  const Property *property = GetPropertyAtIndex(exe_ctx, false, idx);
+  if (property) {
+    OptionValue *value = property->GetValue().get();
+    if (value)
+      return value->GetEnumerationValue(fail_value);
+  }
+  return fail_value;
+}
+
+bool OptionValueProperties::SetPropertyAtIndexAsEnumeration(
+    const ExecutionContext *exe_ctx, uint32_t idx, int64_t new_value) {
+  const Property *property = GetPropertyAtIndex(exe_ctx, true, idx);
+  if (property) {
+    OptionValue *value = property->GetValue().get();
+    if (value)
+      return value->SetEnumerationValue(new_value);
+  }
+  return false;
 }
 
 const FormatEntity::Entry *
-OptionValueProperties::GetPropertyAtIndexAsFormatEntity (const ExecutionContext *exe_ctx, uint32_t idx)
-{
-    const Property *property = GetPropertyAtIndex (exe_ctx, true, idx);
-    if (property)
-    {
-        OptionValue *value = property->GetValue().get();
-        if (value)
-            return value->GetFormatEntity();
-    }
-    return nullptr;
+OptionValueProperties::GetPropertyAtIndexAsFormatEntity(
+    const ExecutionContext *exe_ctx, uint32_t idx) {
+  const Property *property = GetPropertyAtIndex(exe_ctx, true, idx);
+  if (property) {
+    OptionValue *value = property->GetValue().get();
+    if (value)
+      return value->GetFormatEntity();
+  }
+  return nullptr;
 }
 
 OptionValueFileSpec *
-OptionValueProperties::GetPropertyAtIndexAsOptionValueFileSpec (const ExecutionContext *exe_ctx, bool will_modify, uint32_t idx) const
-{
-    const Property *property = GetPropertyAtIndex (exe_ctx, false, idx);
-    if (property)
-    {
-        OptionValue *value = property->GetValue().get();
-        if (value)
-            return value->GetAsFileSpec();
-    }
-    return nullptr;
-}
-
-
-FileSpec
-OptionValueProperties::GetPropertyAtIndexAsFileSpec (const ExecutionContext *exe_ctx, uint32_t idx) const
-{
-    const Property *property = GetPropertyAtIndex (exe_ctx, false, idx);
-    if (property)
-    {
-        OptionValue *value = property->GetValue().get();
-        if (value)
-            return value->GetFileSpecValue();
-    }
-    return FileSpec();
-}
-
-
-bool
-OptionValueProperties::SetPropertyAtIndexAsFileSpec (const ExecutionContext *exe_ctx, uint32_t idx, const FileSpec &new_file_spec)
-{
-    const Property *property = GetPropertyAtIndex (exe_ctx, true, idx);
-    if (property)
-    {
-        OptionValue *value = property->GetValue().get();
-        if (value)
-            return value->SetFileSpecValue(new_file_spec);
-    }
-    return false;
+OptionValueProperties::GetPropertyAtIndexAsOptionValueFileSpec(
+    const ExecutionContext *exe_ctx, bool will_modify, uint32_t idx) const {
+  const Property *property = GetPropertyAtIndex(exe_ctx, false, idx);
+  if (property) {
+    OptionValue *value = property->GetValue().get();
+    if (value)
+      return value->GetAsFileSpec();
+  }
+  return nullptr;
+}
+
+FileSpec OptionValueProperties::GetPropertyAtIndexAsFileSpec(
+    const ExecutionContext *exe_ctx, uint32_t idx) const {
+  const Property *property = GetPropertyAtIndex(exe_ctx, false, idx);
+  if (property) {
+    OptionValue *value = property->GetValue().get();
+    if (value)
+      return value->GetFileSpecValue();
+  }
+  return FileSpec();
+}
+
+bool OptionValueProperties::SetPropertyAtIndexAsFileSpec(
+    const ExecutionContext *exe_ctx, uint32_t idx,
+    const FileSpec &new_file_spec) {
+  const Property *property = GetPropertyAtIndex(exe_ctx, true, idx);
+  if (property) {
+    OptionValue *value = property->GetValue().get();
+    if (value)
+      return value->SetFileSpecValue(new_file_spec);
+  }
+  return false;
 }
 
 const RegularExpression *
-OptionValueProperties::GetPropertyAtIndexAsOptionValueRegex (const ExecutionContext *exe_ctx, uint32_t idx) const
-{
-    const Property *property = GetPropertyAtIndex (exe_ctx, false, idx);
-    if (property)
-    {
-        OptionValue *value = property->GetValue().get();
-        if (value)
-            return value->GetRegexValue();
-    }
-    return nullptr;
-}
-
-OptionValueSInt64 *
-OptionValueProperties::GetPropertyAtIndexAsOptionValueSInt64 (const ExecutionContext *exe_ctx, uint32_t idx) const
-{
-    const Property *property = GetPropertyAtIndex (exe_ctx, false, idx);
-    if (property)
-    {
-        OptionValue *value = property->GetValue().get();
-        if (value)
-            return value->GetAsSInt64();
-    }
-    return nullptr;
-}
-
-int64_t
-OptionValueProperties::GetPropertyAtIndexAsSInt64 (const ExecutionContext *exe_ctx, uint32_t idx, int64_t fail_value) const
-{
-    const Property *property = GetPropertyAtIndex (exe_ctx, false, idx);
-    if (property)
-    {
-        OptionValue *value = property->GetValue().get();
-        if (value)
-            return value->GetSInt64Value(fail_value);
-    }
-    return fail_value;
-}
-
-bool
-OptionValueProperties::SetPropertyAtIndexAsSInt64 (const ExecutionContext *exe_ctx, uint32_t idx, int64_t new_value)
-{
-    const Property *property = GetPropertyAtIndex (exe_ctx, true, idx);
-    if (property)
-    {
-        OptionValue *value = property->GetValue().get();
-        if (value)
-            return value->SetSInt64Value(new_value);
-    }
-    return false;
-}
-
-const char *
-OptionValueProperties::GetPropertyAtIndexAsString (const ExecutionContext *exe_ctx, uint32_t idx, const char *fail_value) const
-{
-    const Property *property = GetPropertyAtIndex (exe_ctx, false, idx);
-    if (property)
-    {
-        OptionValue *value = property->GetValue().get();
-        if (value)
-            return value->GetStringValue(fail_value);
-    }
-    return fail_value;
-}
-
-bool
-OptionValueProperties::SetPropertyAtIndexAsString (const ExecutionContext *exe_ctx, uint32_t idx, const char *new_value)
-{
-    const Property *property = GetPropertyAtIndex (exe_ctx, true, idx);
-    if (property)
-    {
-        OptionValue *value = property->GetValue().get();
-        if (value)
-            return value->SetStringValue(new_value);
-    }
-    return false;
-}
-
-OptionValueString *
-OptionValueProperties::GetPropertyAtIndexAsOptionValueString (const ExecutionContext *exe_ctx, bool will_modify, uint32_t idx) const
-{
-    OptionValueSP value_sp(GetPropertyValueAtIndex (exe_ctx, will_modify, idx));
-    if (value_sp)
-        return value_sp->GetAsString();
-    return nullptr;
-}
-
-
-uint64_t
-OptionValueProperties::GetPropertyAtIndexAsUInt64 (const ExecutionContext *exe_ctx, uint32_t idx, uint64_t fail_value) const
-{
-    const Property *property = GetPropertyAtIndex (exe_ctx, false, idx);
-    if (property)
-    {
-        OptionValue *value = property->GetValue().get();
-        if (value)
-            return value->GetUInt64Value(fail_value);
-    }
-    return fail_value;
-}
-
-bool
-OptionValueProperties::SetPropertyAtIndexAsUInt64 (const ExecutionContext *exe_ctx, uint32_t idx, uint64_t new_value)
-{
-    const Property *property = GetPropertyAtIndex (exe_ctx, true, idx);
-    if (property)
-    {
-        OptionValue *value = property->GetValue().get();
-        if (value)
-            return value->SetUInt64Value(new_value);
-    }
-    return false;
-}
-
-bool
-OptionValueProperties::Clear ()
-{
-    const size_t num_properties = m_properties.size();
-    for (size_t i=0; i<num_properties; ++i)
-        m_properties[i].GetValue()->Clear();
-    return true;
-}
-
-
-Error
-OptionValueProperties::SetValueFromString (llvm::StringRef value, VarSetOperationType op)
-{
-    Error error;
-    
-//    Args args(value_cstr);
-//    const size_t argc = args.GetArgumentCount();
-    switch (op)
-    {
-        case eVarSetOperationClear:
-            Clear ();
-            break;
-            
-        case eVarSetOperationReplace:
-        case eVarSetOperationAssign:
-        case eVarSetOperationRemove:
-        case eVarSetOperationInsertBefore:
-        case eVarSetOperationInsertAfter:
-        case eVarSetOperationAppend:
-        case eVarSetOperationInvalid:
-            error = OptionValue::SetValueFromString (value, op);
-            break;
-    }
-    
-    return error;
-}
-
-void
-OptionValueProperties::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask)
-{
-    const size_t num_properties = m_properties.size();
-    for (size_t i=0; i<num_properties; ++i)
-    {
-        const Property *property = GetPropertyAtIndex(exe_ctx, false, i);
-        if (property)
-        {
-            OptionValue *option_value = property->GetValue().get();
-            assert (option_value);
-            const bool transparent_value = option_value->ValueIsTransparent ();
-            property->Dump (exe_ctx,
-                            strm,
-                            dump_mask);
-            if (!transparent_value)
-                strm.EOL();
+OptionValueProperties::GetPropertyAtIndexAsOptionValueRegex(
+    const ExecutionContext *exe_ctx, uint32_t idx) const {
+  const Property *property = GetPropertyAtIndex(exe_ctx, false, idx);
+  if (property) {
+    OptionValue *value = property->GetValue().get();
+    if (value)
+      return value->GetRegexValue();
+  }
+  return nullptr;
+}
+
+OptionValueSInt64 *OptionValueProperties::GetPropertyAtIndexAsOptionValueSInt64(
+    const ExecutionContext *exe_ctx, uint32_t idx) const {
+  const Property *property = GetPropertyAtIndex(exe_ctx, false, idx);
+  if (property) {
+    OptionValue *value = property->GetValue().get();
+    if (value)
+      return value->GetAsSInt64();
+  }
+  return nullptr;
+}
+
+int64_t OptionValueProperties::GetPropertyAtIndexAsSInt64(
+    const ExecutionContext *exe_ctx, uint32_t idx, int64_t fail_value) const {
+  const Property *property = GetPropertyAtIndex(exe_ctx, false, idx);
+  if (property) {
+    OptionValue *value = property->GetValue().get();
+    if (value)
+      return value->GetSInt64Value(fail_value);
+  }
+  return fail_value;
+}
+
+bool OptionValueProperties::SetPropertyAtIndexAsSInt64(
+    const ExecutionContext *exe_ctx, uint32_t idx, int64_t new_value) {
+  const Property *property = GetPropertyAtIndex(exe_ctx, true, idx);
+  if (property) {
+    OptionValue *value = property->GetValue().get();
+    if (value)
+      return value->SetSInt64Value(new_value);
+  }
+  return false;
+}
+
+const char *OptionValueProperties::GetPropertyAtIndexAsString(
+    const ExecutionContext *exe_ctx, uint32_t idx,
+    const char *fail_value) const {
+  const Property *property = GetPropertyAtIndex(exe_ctx, false, idx);
+  if (property) {
+    OptionValue *value = property->GetValue().get();
+    if (value)
+      return value->GetStringValue(fail_value);
+  }
+  return fail_value;
+}
+
+bool OptionValueProperties::SetPropertyAtIndexAsString(
+    const ExecutionContext *exe_ctx, uint32_t idx, const char *new_value) {
+  const Property *property = GetPropertyAtIndex(exe_ctx, true, idx);
+  if (property) {
+    OptionValue *value = property->GetValue().get();
+    if (value)
+      return value->SetStringValue(new_value);
+  }
+  return false;
+}
+
+OptionValueString *OptionValueProperties::GetPropertyAtIndexAsOptionValueString(
+    const ExecutionContext *exe_ctx, bool will_modify, uint32_t idx) const {
+  OptionValueSP value_sp(GetPropertyValueAtIndex(exe_ctx, will_modify, idx));
+  if (value_sp)
+    return value_sp->GetAsString();
+  return nullptr;
+}
+
+uint64_t OptionValueProperties::GetPropertyAtIndexAsUInt64(
+    const ExecutionContext *exe_ctx, uint32_t idx, uint64_t fail_value) const {
+  const Property *property = GetPropertyAtIndex(exe_ctx, false, idx);
+  if (property) {
+    OptionValue *value = property->GetValue().get();
+    if (value)
+      return value->GetUInt64Value(fail_value);
+  }
+  return fail_value;
+}
+
+bool OptionValueProperties::SetPropertyAtIndexAsUInt64(
+    const ExecutionContext *exe_ctx, uint32_t idx, uint64_t new_value) {
+  const Property *property = GetPropertyAtIndex(exe_ctx, true, idx);
+  if (property) {
+    OptionValue *value = property->GetValue().get();
+    if (value)
+      return value->SetUInt64Value(new_value);
+  }
+  return false;
+}
+
+bool OptionValueProperties::Clear() {
+  const size_t num_properties = m_properties.size();
+  for (size_t i = 0; i < num_properties; ++i)
+    m_properties[i].GetValue()->Clear();
+  return true;
+}
+
+Error OptionValueProperties::SetValueFromString(llvm::StringRef value,
+                                                VarSetOperationType op) {
+  Error error;
+
+  //    Args args(value_cstr);
+  //    const size_t argc = args.GetArgumentCount();
+  switch (op) {
+  case eVarSetOperationClear:
+    Clear();
+    break;
+
+  case eVarSetOperationReplace:
+  case eVarSetOperationAssign:
+  case eVarSetOperationRemove:
+  case eVarSetOperationInsertBefore:
+  case eVarSetOperationInsertAfter:
+  case eVarSetOperationAppend:
+  case eVarSetOperationInvalid:
+    error = OptionValue::SetValueFromString(value, op);
+    break;
+  }
+
+  return error;
+}
+
+void OptionValueProperties::DumpValue(const ExecutionContext *exe_ctx,
+                                      Stream &strm, uint32_t dump_mask) {
+  const size_t num_properties = m_properties.size();
+  for (size_t i = 0; i < num_properties; ++i) {
+    const Property *property = GetPropertyAtIndex(exe_ctx, false, i);
+    if (property) {
+      OptionValue *option_value = property->GetValue().get();
+      assert(option_value);
+      const bool transparent_value = option_value->ValueIsTransparent();
+      property->Dump(exe_ctx, strm, dump_mask);
+      if (!transparent_value)
+        strm.EOL();
+    }
+  }
+}
+
+Error OptionValueProperties::DumpPropertyValue(const ExecutionContext *exe_ctx,
+                                               Stream &strm,
+                                               const char *property_path,
+                                               uint32_t dump_mask) {
+  Error error;
+  const bool will_modify = false;
+  lldb::OptionValueSP value_sp(
+      GetSubValue(exe_ctx, property_path, will_modify, error));
+  if (value_sp) {
+    if (!value_sp->ValueIsTransparent()) {
+      if (dump_mask & eDumpOptionName)
+        strm.PutCString(property_path);
+      if (dump_mask & ~eDumpOptionName)
+        strm.PutChar(' ');
+    }
+    value_sp->DumpValue(exe_ctx, strm, dump_mask);
+  }
+  return error;
+}
+
+lldb::OptionValueSP OptionValueProperties::DeepCopy() const {
+  assert(!"this shouldn't happen");
+  return lldb::OptionValueSP();
+}
+
+const Property *OptionValueProperties::GetPropertyAtPath(
+    const ExecutionContext *exe_ctx, bool will_modify, const char *name) const {
+  const Property *property = nullptr;
+  if (name && name[0]) {
+    const char *sub_name = nullptr;
+    ConstString key;
+    size_t key_len = ::strcspn(name, ".[{");
+
+    if (name[key_len]) {
+      key.SetCStringWithLength(name, key_len);
+      sub_name = name + key_len;
+    } else
+      key.SetCString(name);
+
+    property = GetProperty(exe_ctx, will_modify, key);
+    if (sub_name && property) {
+      if (sub_name[0] == '.') {
+        OptionValueProperties *sub_properties =
+            property->GetValue()->GetAsProperties();
+        if (sub_properties)
+          return sub_properties->GetPropertyAtPath(exe_ctx, will_modify,
+                                                   sub_name + 1);
+      }
+      property = nullptr;
+    }
+  }
+  return property;
+}
+
+void OptionValueProperties::DumpAllDescriptions(CommandInterpreter &interpreter,
+                                                Stream &strm) const {
+  size_t max_name_len = 0;
+  const size_t num_properties = m_properties.size();
+  for (size_t i = 0; i < num_properties; ++i) {
+    const Property *property = ProtectedGetPropertyAtIndex(i);
+    if (property)
+      max_name_len =
+          std::max<size_t>(property->GetName().GetLength(), max_name_len);
+  }
+  for (size_t i = 0; i < num_properties; ++i) {
+    const Property *property = ProtectedGetPropertyAtIndex(i);
+    if (property)
+      property->DumpDescription(interpreter, strm, max_name_len, false);
+  }
+}
+
+void OptionValueProperties::Apropos(
+    const char *keyword,
+    std::vector<const Property *> &matching_properties) const {
+  const size_t num_properties = m_properties.size();
+  StreamString strm;
+  for (size_t i = 0; i < num_properties; ++i) {
+    const Property *property = ProtectedGetPropertyAtIndex(i);
+    if (property) {
+      const OptionValueProperties *properties =
+          property->GetValue()->GetAsProperties();
+      if (properties) {
+        properties->Apropos(keyword, matching_properties);
+      } else {
+        bool match = false;
+        const char *name = property->GetName().GetCString();
+        if (name && ::strcasestr(name, keyword))
+          match = true;
+        else {
+          const char *desc = property->GetDescription();
+          if (desc && ::strcasestr(desc, keyword))
+            match = true;
         }
-    }
-}
-
-Error
-OptionValueProperties::DumpPropertyValue (const ExecutionContext *exe_ctx,
-                                          Stream &strm,
-                                          const char *property_path,
-                                          uint32_t dump_mask)
-{
-    Error error;
-    const bool will_modify = false;
-    lldb::OptionValueSP value_sp (GetSubValue (exe_ctx, property_path, will_modify, error));
-    if (value_sp)
-    {
-        if (!value_sp->ValueIsTransparent ())
-        {
-            if (dump_mask & eDumpOptionName)
-                strm.PutCString (property_path);
-            if (dump_mask & ~eDumpOptionName)
-                strm.PutChar (' ');
-        }
-        value_sp->DumpValue (exe_ctx, strm, dump_mask);
-    }
-    return error;
-}
-
-lldb::OptionValueSP
-OptionValueProperties::DeepCopy () const
-{
-    assert(!"this shouldn't happen");
-    return lldb::OptionValueSP();
-}
-
-const Property *
-OptionValueProperties::GetPropertyAtPath (const ExecutionContext *exe_ctx,
-                                          bool will_modify,
-                                          const char *name) const
-{
-    const Property *property = nullptr;
-    if (name && name[0])
-    {
-        const char *sub_name = nullptr;
-        ConstString key;
-        size_t key_len = ::strcspn (name, ".[{");
-        
-        if (name[key_len])
-        {
-            key.SetCStringWithLength (name, key_len);
-            sub_name = name + key_len;
-        }
-        else
-            key.SetCString (name);
-        
-        property = GetProperty (exe_ctx, will_modify, key);
-        if (sub_name && property)
-        {
-            if (sub_name[0] == '.')
-            {
-                OptionValueProperties *sub_properties = property->GetValue()->GetAsProperties();
-                if (sub_properties)
-                    return sub_properties->GetPropertyAtPath(exe_ctx, will_modify, sub_name + 1);
-            }
-            property = nullptr;
-        }
-    }
-    return property;
-}
-
-void
-OptionValueProperties::DumpAllDescriptions (CommandInterpreter &interpreter,
-                                            Stream &strm) const
-{
-    size_t max_name_len = 0;
-    const size_t num_properties = m_properties.size();
-    for (size_t i=0; i<num_properties; ++i)
-    {
-        const Property *property = ProtectedGetPropertyAtIndex(i);
-        if (property)
-            max_name_len = std::max<size_t>(property->GetName().GetLength(), max_name_len);
-    }
-    for (size_t i=0; i<num_properties; ++i)
-    {
-        const Property *property = ProtectedGetPropertyAtIndex(i);
-        if (property)
-            property->DumpDescription (interpreter, strm, max_name_len, false);
-    }
-}
-
-void
-OptionValueProperties::Apropos (const char *keyword, std::vector<const Property *> &matching_properties) const
-{
-    const size_t num_properties = m_properties.size();
-    StreamString strm;
-    for (size_t i=0; i<num_properties; ++i)
-    {
-        const Property *property = ProtectedGetPropertyAtIndex(i);
-        if (property)
-        {
-            const OptionValueProperties *properties = property->GetValue()->GetAsProperties();
-            if (properties)
-            {
-                properties->Apropos (keyword, matching_properties);
-            }
-            else
-            {
-                bool match = false;
-                const char *name = property->GetName().GetCString();
-                if (name && ::strcasestr(name, keyword))
-                    match = true;
-                else
-                {
-                    const char *desc = property->GetDescription();
-                    if (desc && ::strcasestr(desc, keyword))
-                        match = true;
-                }
-                if (match)
-                {
-                    matching_properties.push_back (property);
-                }
-            }
+        if (match) {
+          matching_properties.push_back(property);
         }
+      }
     }
+  }
 }
 
 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();
+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/trunk/source/Interpreter/OptionValueRegex.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/OptionValueRegex.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/OptionValueRegex.cpp (original)
+++ lldb/trunk/source/Interpreter/OptionValueRegex.cpp Tue Sep  6 15:57:50 2016
@@ -18,71 +18,57 @@
 using namespace lldb;
 using namespace lldb_private;
 
-void
-OptionValueRegex::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask)
-{
+void OptionValueRegex::DumpValue(const ExecutionContext *exe_ctx, Stream &strm,
+                                 uint32_t dump_mask) {
+  if (dump_mask & eDumpOptionType)
+    strm.Printf("(%s)", GetTypeAsCString());
+  if (dump_mask & eDumpOptionValue) {
     if (dump_mask & eDumpOptionType)
-        strm.Printf ("(%s)", GetTypeAsCString ());
-    if (dump_mask & eDumpOptionValue)
-    {
-        if (dump_mask & eDumpOptionType)
-            strm.PutCString (" = ");
-        if (m_regex.IsValid())
-        {
-            const char *regex_text = m_regex.GetText();
-            if (regex_text && regex_text[0])
-                strm.Printf ("%s", regex_text);
-        }
-        else
-        {
-            
-        }
+      strm.PutCString(" = ");
+    if (m_regex.IsValid()) {
+      const char *regex_text = m_regex.GetText();
+      if (regex_text && regex_text[0])
+        strm.Printf("%s", regex_text);
+    } else {
     }
+  }
 }
 
-Error
-OptionValueRegex::SetValueFromString (llvm::StringRef value,
-                                        VarSetOperationType op)
-{
-    Error error;
-    switch (op)
-    {
-    case eVarSetOperationInvalid:
-    case eVarSetOperationInsertBefore:
-    case eVarSetOperationInsertAfter:
-    case eVarSetOperationRemove:
-    case eVarSetOperationAppend:
-        error = OptionValue::SetValueFromString (value, op);
-        break;
-
-    case eVarSetOperationClear:
-        Clear();
-        NotifyValueChanged();
-        break;
-
-    case eVarSetOperationReplace:
-    case eVarSetOperationAssign:
-        if (m_regex.Compile (value.str().c_str()))
-        {
-            m_value_was_set = true;
-            NotifyValueChanged();
-        }
-        else
-        {
-            char regex_error[1024];
-            if (m_regex.GetErrorAsCString(regex_error, sizeof(regex_error)))
-                error.SetErrorString (regex_error);
-            else
-                error.SetErrorStringWithFormat ("regex error %u", m_regex.GetErrorCode());
-        }
-        break;
+Error OptionValueRegex::SetValueFromString(llvm::StringRef value,
+                                           VarSetOperationType op) {
+  Error error;
+  switch (op) {
+  case eVarSetOperationInvalid:
+  case eVarSetOperationInsertBefore:
+  case eVarSetOperationInsertAfter:
+  case eVarSetOperationRemove:
+  case eVarSetOperationAppend:
+    error = OptionValue::SetValueFromString(value, op);
+    break;
+
+  case eVarSetOperationClear:
+    Clear();
+    NotifyValueChanged();
+    break;
+
+  case eVarSetOperationReplace:
+  case eVarSetOperationAssign:
+    if (m_regex.Compile(value.str().c_str())) {
+      m_value_was_set = true;
+      NotifyValueChanged();
+    } else {
+      char regex_error[1024];
+      if (m_regex.GetErrorAsCString(regex_error, sizeof(regex_error)))
+        error.SetErrorString(regex_error);
+      else
+        error.SetErrorStringWithFormat("regex error %u",
+                                       m_regex.GetErrorCode());
     }
-    return error;
+    break;
+  }
+  return error;
 }
 
-
-lldb::OptionValueSP
-OptionValueRegex::DeepCopy () const
-{
-    return OptionValueSP(new OptionValueRegex(m_regex.GetText()));
+lldb::OptionValueSP OptionValueRegex::DeepCopy() const {
+  return OptionValueSP(new OptionValueRegex(m_regex.GetText()));
 }

Modified: lldb/trunk/source/Interpreter/OptionValueSInt64.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/OptionValueSInt64.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/OptionValueSInt64.cpp (original)
+++ lldb/trunk/source/Interpreter/OptionValueSInt64.cpp Tue Sep  6 15:57:50 2016
@@ -19,74 +19,62 @@
 using namespace lldb;
 using namespace lldb_private;
 
-void
-OptionValueSInt64::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask)
-{
-    //printf ("%p: DumpValue (exe_ctx=%p, strm, mask) m_current_value = %" PRIi64 "\n", this, exe_ctx, m_current_value);
+void OptionValueSInt64::DumpValue(const ExecutionContext *exe_ctx, Stream &strm,
+                                  uint32_t dump_mask) {
+  // printf ("%p: DumpValue (exe_ctx=%p, strm, mask) m_current_value = %" PRIi64
+  // "\n", this, exe_ctx, m_current_value);
+  if (dump_mask & eDumpOptionType)
+    strm.Printf("(%s)", GetTypeAsCString());
+  //    if (dump_mask & eDumpOptionName)
+  //        DumpQualifiedName (strm);
+  if (dump_mask & eDumpOptionValue) {
     if (dump_mask & eDumpOptionType)
-        strm.Printf ("(%s)", GetTypeAsCString ());
-//    if (dump_mask & eDumpOptionName)
-//        DumpQualifiedName (strm);
-    if (dump_mask & eDumpOptionValue)
-    {
-        if (dump_mask & eDumpOptionType)
-            strm.PutCString (" = ");
-        strm.Printf ("%" PRIi64, m_current_value);
-    }
+      strm.PutCString(" = ");
+    strm.Printf("%" PRIi64, m_current_value);
+  }
 }
 
-Error
-OptionValueSInt64::SetValueFromString (llvm::StringRef value_ref, VarSetOperationType op)
-{
-    Error error;
-    switch (op)
-    {
-        case eVarSetOperationClear:
-            Clear();
-            NotifyValueChanged();
-            break;
-            
-        case eVarSetOperationReplace:
-        case eVarSetOperationAssign:
-            {
-                bool success = false;
-                std::string value_str = value_ref.trim().str();
-                int64_t value = StringConvert::ToSInt64 (value_str.c_str(), 0, 0, &success);
-                if (success)
-                {
-                    if (value >= m_min_value && value <= m_max_value)
-                    {
-                        m_value_was_set = true;
-                        m_current_value = value;
-                        NotifyValueChanged();
-                    }
-                    else
-                        error.SetErrorStringWithFormat ("%" PRIi64 " is out of range, valid values must be between %" PRIi64 " and %" PRIi64 ".",
-                                                        value,
-                                                        m_min_value,
-                                                        m_max_value);
-                }
-                else
-                {
-                    error.SetErrorStringWithFormat ("invalid int64_t string value: '%s'",
-                            value_ref.str().c_str());
-                }
-            }
-            break;
-            
-        case eVarSetOperationInsertBefore:
-        case eVarSetOperationInsertAfter:
-        case eVarSetOperationRemove:
-        case eVarSetOperationAppend:
-        case eVarSetOperationInvalid:
-            error = OptionValue::SetValueFromString (value_ref, op);
-            break;
+Error OptionValueSInt64::SetValueFromString(llvm::StringRef value_ref,
+                                            VarSetOperationType op) {
+  Error error;
+  switch (op) {
+  case eVarSetOperationClear:
+    Clear();
+    NotifyValueChanged();
+    break;
+
+  case eVarSetOperationReplace:
+  case eVarSetOperationAssign: {
+    bool success = false;
+    std::string value_str = value_ref.trim().str();
+    int64_t value = StringConvert::ToSInt64(value_str.c_str(), 0, 0, &success);
+    if (success) {
+      if (value >= m_min_value && value <= m_max_value) {
+        m_value_was_set = true;
+        m_current_value = value;
+        NotifyValueChanged();
+      } else
+        error.SetErrorStringWithFormat(
+            "%" PRIi64 " is out of range, valid values must be between %" PRIi64
+            " and %" PRIi64 ".",
+            value, m_min_value, m_max_value);
+    } else {
+      error.SetErrorStringWithFormat("invalid int64_t string value: '%s'",
+                                     value_ref.str().c_str());
     }
-    return error;
+  } break;
+
+  case eVarSetOperationInsertBefore:
+  case eVarSetOperationInsertAfter:
+  case eVarSetOperationRemove:
+  case eVarSetOperationAppend:
+  case eVarSetOperationInvalid:
+    error = OptionValue::SetValueFromString(value_ref, op);
+    break;
+  }
+  return error;
 }
 
-lldb::OptionValueSP
-OptionValueSInt64::DeepCopy () const
-{
-    return OptionValueSP(new OptionValueSInt64(*this));
+lldb::OptionValueSP OptionValueSInt64::DeepCopy() const {
+  return OptionValueSP(new OptionValueSInt64(*this));
 }

Modified: lldb/trunk/source/Interpreter/OptionValueString.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/OptionValueString.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/OptionValueString.cpp (original)
+++ lldb/trunk/source/Interpreter/OptionValueString.cpp Tue Sep  6 15:57:50 2016
@@ -1,4 +1,5 @@
-//===-- OptionValueString.cpp ------------------------------------*- C++ -*-===//
+//===-- OptionValueString.cpp ------------------------------------*- C++
+//-*-===//
 //
 //                     The LLVM Compiler Infrastructure
 //
@@ -19,171 +20,136 @@
 using namespace lldb;
 using namespace lldb_private;
 
-void
-OptionValueString::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask)
-{
+void OptionValueString::DumpValue(const ExecutionContext *exe_ctx, Stream &strm,
+                                  uint32_t dump_mask) {
+  if (dump_mask & eDumpOptionType)
+    strm.Printf("(%s)", GetTypeAsCString());
+  if (dump_mask & eDumpOptionValue) {
     if (dump_mask & eDumpOptionType)
-        strm.Printf ("(%s)", GetTypeAsCString ());
-    if (dump_mask & eDumpOptionValue)
-    {
-        if (dump_mask & eDumpOptionType)
-            strm.PutCString (" = ");
-        if (!m_current_value.empty() || m_value_was_set)
-        {
-            if (m_options.Test (eOptionEncodeCharacterEscapeSequences))
-            {
-                std::string expanded_escape_value;
-                Args::ExpandEscapedCharacters(m_current_value.c_str(), expanded_escape_value);
-                if (dump_mask & eDumpOptionRaw)
-                    strm.Printf ("%s", expanded_escape_value.c_str());
-                else
-                    strm.Printf ("\"%s\"", expanded_escape_value.c_str());                
-            }
-            else
-            {
-                if (dump_mask & eDumpOptionRaw)
-                    strm.Printf ("%s", m_current_value.c_str());
-                else
-                    strm.Printf ("\"%s\"", m_current_value.c_str());
-            }
-        }
+      strm.PutCString(" = ");
+    if (!m_current_value.empty() || m_value_was_set) {
+      if (m_options.Test(eOptionEncodeCharacterEscapeSequences)) {
+        std::string expanded_escape_value;
+        Args::ExpandEscapedCharacters(m_current_value.c_str(),
+                                      expanded_escape_value);
+        if (dump_mask & eDumpOptionRaw)
+          strm.Printf("%s", expanded_escape_value.c_str());
+        else
+          strm.Printf("\"%s\"", expanded_escape_value.c_str());
+      } else {
+        if (dump_mask & eDumpOptionRaw)
+          strm.Printf("%s", m_current_value.c_str());
+        else
+          strm.Printf("\"%s\"", m_current_value.c_str());
+      }
     }
+  }
 }
 
-Error
-OptionValueString::SetValueFromString (llvm::StringRef value,
-                                        VarSetOperationType op)
-{
-    Error error;
-
-    std::string value_str = value.str();
-    value = value.trim();
-    if (value.size() > 0)
-    {
-        switch (value.front())
-        {
-        case '"':
-        case '\'':
-            {
-                if (value.size() <= 1 || value.back() != value.front())
-                {
-                    error.SetErrorString("mismatched quotes");
-                    return error;
-                }
-                value = value.drop_front().drop_back();
-            }
-            break;
-        }
-        value_str = value.str();
-    }
-
-    switch (op)
-    {
-    case eVarSetOperationInvalid:
-    case eVarSetOperationInsertBefore:
-    case eVarSetOperationInsertAfter:
-    case eVarSetOperationRemove:
-        if (m_validator)
-        {
-            error = m_validator(value_str.c_str(),m_validator_baton);
-            if (error.Fail())
-                return error;
-        }
-        error = OptionValue::SetValueFromString (value, op);
-        break;
-
-    case eVarSetOperationAppend:
-        {
-            std::string new_value(m_current_value);
-            if (value.size() > 0)
-            {
-                if (m_options.Test (eOptionEncodeCharacterEscapeSequences))
-                {
-                    std::string str;
-                    Args::EncodeEscapeSequences (value_str.c_str(), str);
-                    new_value.append(str);
-                }
-                else
-                    new_value.append(value);
-            }
-            if (m_validator)
-            {
-                error = m_validator(new_value.c_str(),m_validator_baton);
-                if (error.Fail())
-                    return error;
-            }
-            m_current_value.assign(new_value);
-            NotifyValueChanged();
-        }
-        break;
-
-    case eVarSetOperationClear:
-        Clear ();
-        NotifyValueChanged();
-        break;
-
-    case eVarSetOperationReplace:
-    case eVarSetOperationAssign:
-        if (m_validator)
-        {
-            error = m_validator(value_str.c_str(), m_validator_baton);
-            if (error.Fail())
-                return error;
-        }
-        m_value_was_set = true;
-        if (m_options.Test (eOptionEncodeCharacterEscapeSequences))
-        {
-            Args::EncodeEscapeSequences (value_str.c_str(), m_current_value);
-        }
-        else
-        {
-            SetCurrentValue (value_str.c_str());
-        }
-        NotifyValueChanged();
-        break;
+Error OptionValueString::SetValueFromString(llvm::StringRef value,
+                                            VarSetOperationType op) {
+  Error error;
+
+  std::string value_str = value.str();
+  value = value.trim();
+  if (value.size() > 0) {
+    switch (value.front()) {
+    case '"':
+    case '\'': {
+      if (value.size() <= 1 || value.back() != value.front()) {
+        error.SetErrorString("mismatched quotes");
+        return error;
+      }
+      value = value.drop_front().drop_back();
+    } break;
     }
-    return error;
-}
+    value_str = value.str();
+  }
 
+  switch (op) {
+  case eVarSetOperationInvalid:
+  case eVarSetOperationInsertBefore:
+  case eVarSetOperationInsertAfter:
+  case eVarSetOperationRemove:
+    if (m_validator) {
+      error = m_validator(value_str.c_str(), m_validator_baton);
+      if (error.Fail())
+        return error;
+    }
+    error = OptionValue::SetValueFromString(value, op);
+    break;
 
-lldb::OptionValueSP
-OptionValueString::DeepCopy () const
-{
-    return OptionValueSP(new OptionValueString(*this));
+  case eVarSetOperationAppend: {
+    std::string new_value(m_current_value);
+    if (value.size() > 0) {
+      if (m_options.Test(eOptionEncodeCharacterEscapeSequences)) {
+        std::string str;
+        Args::EncodeEscapeSequences(value_str.c_str(), str);
+        new_value.append(str);
+      } else
+        new_value.append(value);
+    }
+    if (m_validator) {
+      error = m_validator(new_value.c_str(), m_validator_baton);
+      if (error.Fail())
+        return error;
+    }
+    m_current_value.assign(new_value);
+    NotifyValueChanged();
+  } break;
+
+  case eVarSetOperationClear:
+    Clear();
+    NotifyValueChanged();
+    break;
+
+  case eVarSetOperationReplace:
+  case eVarSetOperationAssign:
+    if (m_validator) {
+      error = m_validator(value_str.c_str(), m_validator_baton);
+      if (error.Fail())
+        return error;
+    }
+    m_value_was_set = true;
+    if (m_options.Test(eOptionEncodeCharacterEscapeSequences)) {
+      Args::EncodeEscapeSequences(value_str.c_str(), m_current_value);
+    } else {
+      SetCurrentValue(value_str.c_str());
+    }
+    NotifyValueChanged();
+    break;
+  }
+  return error;
 }
 
-Error
-OptionValueString::SetCurrentValue (const char *value)
-{
-    if (m_validator)
-    {
-        Error error(m_validator(value,m_validator_baton));
-        if (error.Fail())
-            return error;
-    }
-    if (value && value[0])
-        m_current_value.assign (value);
-    else
-        m_current_value.clear();
-    return Error();
+lldb::OptionValueSP OptionValueString::DeepCopy() const {
+  return OptionValueSP(new OptionValueString(*this));
 }
 
-Error
-OptionValueString::AppendToCurrentValue (const char *value)
-{
-    if (value && value[0])
-    {
-        if (m_validator)
-        {
-            std::string new_value(m_current_value);
-            new_value.append(value);
-            Error error(m_validator(value,m_validator_baton));
-            if (error.Fail())
-                return error;
-            m_current_value.assign(new_value);
-        }
-        else
-            m_current_value.append (value);
-    }
-    return Error();
+Error OptionValueString::SetCurrentValue(const char *value) {
+  if (m_validator) {
+    Error error(m_validator(value, m_validator_baton));
+    if (error.Fail())
+      return error;
+  }
+  if (value && value[0])
+    m_current_value.assign(value);
+  else
+    m_current_value.clear();
+  return Error();
+}
+
+Error OptionValueString::AppendToCurrentValue(const char *value) {
+  if (value && value[0]) {
+    if (m_validator) {
+      std::string new_value(m_current_value);
+      new_value.append(value);
+      Error error(m_validator(value, m_validator_baton));
+      if (error.Fail())
+        return error;
+      m_current_value.assign(new_value);
+    } else
+      m_current_value.append(value);
+  }
+  return Error();
 }

Modified: lldb/trunk/source/Interpreter/OptionValueUInt64.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/OptionValueUInt64.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/OptionValueUInt64.cpp (original)
+++ lldb/trunk/source/Interpreter/OptionValueUInt64.cpp Tue Sep  6 15:57:50 2016
@@ -1,4 +1,5 @@
-//===-- OptionValueUInt64.cpp ------------------------------------*- C++ -*-===//
+//===-- OptionValueUInt64.cpp ------------------------------------*- C++
+//-*-===//
 //
 //                     The LLVM Compiler Infrastructure
 //
@@ -19,74 +20,61 @@
 using namespace lldb;
 using namespace lldb_private;
 
-lldb::OptionValueSP
-OptionValueUInt64::Create (const char *value_cstr, Error &error)
-{
-    lldb::OptionValueSP value_sp (new OptionValueUInt64());
-    error = value_sp->SetValueFromString (value_cstr);
-    if (error.Fail())
-        value_sp.reset();
-    return value_sp;
+lldb::OptionValueSP OptionValueUInt64::Create(const char *value_cstr,
+                                              Error &error) {
+  lldb::OptionValueSP value_sp(new OptionValueUInt64());
+  error = value_sp->SetValueFromString(value_cstr);
+  if (error.Fail())
+    value_sp.reset();
+  return value_sp;
 }
 
-
-void
-OptionValueUInt64::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask)
-{
+void OptionValueUInt64::DumpValue(const ExecutionContext *exe_ctx, Stream &strm,
+                                  uint32_t dump_mask) {
+  if (dump_mask & eDumpOptionType)
+    strm.Printf("(%s)", GetTypeAsCString());
+  if (dump_mask & eDumpOptionValue) {
     if (dump_mask & eDumpOptionType)
-        strm.Printf ("(%s)", GetTypeAsCString ());
-    if (dump_mask & eDumpOptionValue)
-    {
-        if (dump_mask & eDumpOptionType)
-            strm.PutCString (" = ");
-        strm.Printf ("%" PRIu64, m_current_value);
-    }
+      strm.PutCString(" = ");
+    strm.Printf("%" PRIu64, m_current_value);
+  }
 }
 
-Error
-OptionValueUInt64::SetValueFromString (llvm::StringRef value_ref, VarSetOperationType op)
-{
-    Error error;
-    switch (op)
-    {
-        case eVarSetOperationClear:
-            Clear ();
-            NotifyValueChanged();
-            break;
-            
-        case eVarSetOperationReplace:
-        case eVarSetOperationAssign:
-        {
-            bool success = false;
-            std::string value_str = value_ref.trim().str();
-            uint64_t value = StringConvert::ToUInt64 (value_str.c_str(), 0, 0, &success);
-            if (success)
-            {
-                m_value_was_set = true;
-                m_current_value = value;
-                NotifyValueChanged();
-            }
-            else
-            {
-                error.SetErrorStringWithFormat ("invalid uint64_t string value: '%s'", value_str.c_str());
-            }
-        }
-            break;
-            
-        case eVarSetOperationInsertBefore:
-        case eVarSetOperationInsertAfter:
-        case eVarSetOperationRemove:
-        case eVarSetOperationAppend:
-        case eVarSetOperationInvalid:
-            error = OptionValue::SetValueFromString (value_ref, op);
-            break;
+Error OptionValueUInt64::SetValueFromString(llvm::StringRef value_ref,
+                                            VarSetOperationType op) {
+  Error error;
+  switch (op) {
+  case eVarSetOperationClear:
+    Clear();
+    NotifyValueChanged();
+    break;
+
+  case eVarSetOperationReplace:
+  case eVarSetOperationAssign: {
+    bool success = false;
+    std::string value_str = value_ref.trim().str();
+    uint64_t value = StringConvert::ToUInt64(value_str.c_str(), 0, 0, &success);
+    if (success) {
+      m_value_was_set = true;
+      m_current_value = value;
+      NotifyValueChanged();
+    } else {
+      error.SetErrorStringWithFormat("invalid uint64_t string value: '%s'",
+                                     value_str.c_str());
     }
-    return error;
-}
+  } break;
 
-lldb::OptionValueSP
-OptionValueUInt64::DeepCopy () const
-{
-    return OptionValueSP(new OptionValueUInt64(*this));
+  case eVarSetOperationInsertBefore:
+  case eVarSetOperationInsertAfter:
+  case eVarSetOperationRemove:
+  case eVarSetOperationAppend:
+  case eVarSetOperationInvalid:
+    error = OptionValue::SetValueFromString(value_ref, op);
+    break;
+  }
+  return error;
 }
 
+lldb::OptionValueSP OptionValueUInt64::DeepCopy() const {
+  return OptionValueSP(new OptionValueUInt64(*this));
+}

Modified: lldb/trunk/source/Interpreter/OptionValueUUID.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/OptionValueUUID.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/OptionValueUUID.cpp (original)
+++ lldb/trunk/source/Interpreter/OptionValueUUID.cpp Tue Sep  6 15:57:50 2016
@@ -21,105 +21,87 @@
 using namespace lldb;
 using namespace lldb_private;
 
-void
-OptionValueUUID::DumpValue (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask)
-{
+void OptionValueUUID::DumpValue(const ExecutionContext *exe_ctx, Stream &strm,
+                                uint32_t dump_mask) {
+  if (dump_mask & eDumpOptionType)
+    strm.Printf("(%s)", GetTypeAsCString());
+  if (dump_mask & eDumpOptionValue) {
     if (dump_mask & eDumpOptionType)
-        strm.Printf ("(%s)", GetTypeAsCString ());
-    if (dump_mask & eDumpOptionValue)
-    {
-        if (dump_mask & eDumpOptionType)
-            strm.PutCString (" = ");
-        m_uuid.Dump (&strm);
-    }
+      strm.PutCString(" = ");
+    m_uuid.Dump(&strm);
+  }
 }
 
-Error
-OptionValueUUID::SetValueFromString (llvm::StringRef value,
-                                      VarSetOperationType op)
-{
-    Error error;
-    switch (op)
-    {
-        case eVarSetOperationClear:
-            Clear();
-            NotifyValueChanged();
-            break;
-            
-        case eVarSetOperationReplace:
-        case eVarSetOperationAssign:
-            {
-                if (m_uuid.SetFromCString(value.str().c_str()) == 0)
-                    error.SetErrorStringWithFormat ("invalid uuid string value '%s'", value.str().c_str());
-                else
-                {
-                    m_value_was_set = true;
-                    NotifyValueChanged();
-                }
-            }
-            break;
-            
-        case eVarSetOperationInsertBefore:
-        case eVarSetOperationInsertAfter:
-        case eVarSetOperationRemove:
-        case eVarSetOperationAppend:
-        case eVarSetOperationInvalid:
-            error = OptionValue::SetValueFromString (value, op);
-            break;
+Error OptionValueUUID::SetValueFromString(llvm::StringRef value,
+                                          VarSetOperationType op) {
+  Error error;
+  switch (op) {
+  case eVarSetOperationClear:
+    Clear();
+    NotifyValueChanged();
+    break;
+
+  case eVarSetOperationReplace:
+  case eVarSetOperationAssign: {
+    if (m_uuid.SetFromCString(value.str().c_str()) == 0)
+      error.SetErrorStringWithFormat("invalid uuid string value '%s'",
+                                     value.str().c_str());
+    else {
+      m_value_was_set = true;
+      NotifyValueChanged();
     }
-    return error;
+  } break;
+
+  case eVarSetOperationInsertBefore:
+  case eVarSetOperationInsertAfter:
+  case eVarSetOperationRemove:
+  case eVarSetOperationAppend:
+  case eVarSetOperationInvalid:
+    error = OptionValue::SetValueFromString(value, op);
+    break;
+  }
+  return error;
 }
 
-lldb::OptionValueSP
-OptionValueUUID::DeepCopy () const
-{
-    return OptionValueSP(new OptionValueUUID(*this));
+lldb::OptionValueSP OptionValueUUID::DeepCopy() const {
+  return OptionValueSP(new OptionValueUUID(*this));
 }
 
-size_t
-OptionValueUUID::AutoComplete (CommandInterpreter &interpreter,
-                               const char *s,
-                               int match_start_point,
-                               int max_return_elements,
-                               bool &word_complete,
-                               StringList &matches)
-{
-    word_complete = false;
-    matches.Clear();
-    ExecutionContext exe_ctx(interpreter.GetExecutionContext());
-    Target *target = exe_ctx.GetTargetPtr();
-    if (target)
-    {
-        const size_t num_modules = target->GetImages().GetSize();
-        if (num_modules > 0)
-        {
-            UUID::ValueType uuid_bytes;
-            const size_t num_bytes_decoded = UUID::DecodeUUIDBytesFromCString(s, uuid_bytes, nullptr);
-            for (size_t i=0; i<num_modules; ++i)
-            {
-                ModuleSP module_sp (target->GetImages().GetModuleAtIndex(i));
-                if (module_sp)
-                {
-                    const UUID &module_uuid = module_sp->GetUUID();
-                    if (module_uuid.IsValid())
-                    {
-                        bool add_uuid = false;
-                        if (num_bytes_decoded == 0)
-                            add_uuid = true;
-                        else
-                            add_uuid = ::memcmp(module_uuid.GetBytes(), uuid_bytes, num_bytes_decoded) == 0;
-                        if (add_uuid)
-                        {
-                            std::string uuid_str;
-                            uuid_str = module_uuid.GetAsString();
-                            if (!uuid_str.empty())
-                                matches.AppendString(uuid_str.c_str());
-                        }
-                    }
-                }
+size_t OptionValueUUID::AutoComplete(CommandInterpreter &interpreter,
+                                     const char *s, int match_start_point,
+                                     int max_return_elements,
+                                     bool &word_complete, StringList &matches) {
+  word_complete = false;
+  matches.Clear();
+  ExecutionContext exe_ctx(interpreter.GetExecutionContext());
+  Target *target = exe_ctx.GetTargetPtr();
+  if (target) {
+    const size_t num_modules = target->GetImages().GetSize();
+    if (num_modules > 0) {
+      UUID::ValueType uuid_bytes;
+      const size_t num_bytes_decoded =
+          UUID::DecodeUUIDBytesFromCString(s, uuid_bytes, nullptr);
+      for (size_t i = 0; i < num_modules; ++i) {
+        ModuleSP module_sp(target->GetImages().GetModuleAtIndex(i));
+        if (module_sp) {
+          const UUID &module_uuid = module_sp->GetUUID();
+          if (module_uuid.IsValid()) {
+            bool add_uuid = false;
+            if (num_bytes_decoded == 0)
+              add_uuid = true;
+            else
+              add_uuid = ::memcmp(module_uuid.GetBytes(), uuid_bytes,
+                                  num_bytes_decoded) == 0;
+            if (add_uuid) {
+              std::string uuid_str;
+              uuid_str = module_uuid.GetAsString();
+              if (!uuid_str.empty())
+                matches.AppendString(uuid_str.c_str());
             }
+          }
         }
+      }
     }
-    return matches.GetSize();
+  }
+  return matches.GetSize();
 }
-

Modified: lldb/trunk/source/Interpreter/Options.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/Options.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/Options.cpp (original)
+++ lldb/trunk/source/Interpreter/Options.cpp Tue Sep  6 15:57:50 2016
@@ -18,11 +18,11 @@
 
 // Other libraries and framework includes
 // Project includes
-#include "lldb/Interpreter/CommandObject.h"
-#include "lldb/Interpreter/CommandReturnObject.h"
+#include "lldb/Core/StreamString.h"
 #include "lldb/Interpreter/CommandCompletions.h"
 #include "lldb/Interpreter/CommandInterpreter.h"
-#include "lldb/Core/StreamString.h"
+#include "lldb/Interpreter/CommandObject.h"
+#include "lldb/Interpreter/CommandReturnObject.h"
 #include "lldb/Target/Target.h"
 
 using namespace lldb;
@@ -31,1086 +31,938 @@ using namespace lldb_private;
 //-------------------------------------------------------------------------
 // Options
 //-------------------------------------------------------------------------
-Options::Options () :
-    m_getopt_table ()
-{
-    BuildValidOptionSets();
-}
+Options::Options() : m_getopt_table() { BuildValidOptionSets(); }
 
-Options::~Options ()
-{
-}
+Options::~Options() {}
 
-void
-Options::NotifyOptionParsingStarting(ExecutionContext *execution_context)
-{
-    m_seen_options.clear();
-    // Let the subclass reset its option values
-    OptionParsingStarting(execution_context);
+void Options::NotifyOptionParsingStarting(ExecutionContext *execution_context) {
+  m_seen_options.clear();
+  // Let the subclass reset its option values
+  OptionParsingStarting(execution_context);
 }
 
-Error
-Options::NotifyOptionParsingFinished(ExecutionContext *execution_context)
-{
-    return OptionParsingFinished(execution_context);
+Error Options::NotifyOptionParsingFinished(
+    ExecutionContext *execution_context) {
+  return OptionParsingFinished(execution_context);
 }
 
-void
-Options::OptionSeen (int option_idx)
-{
-    m_seen_options.insert (option_idx);
-}
+void Options::OptionSeen(int option_idx) { m_seen_options.insert(option_idx); }
 
 // Returns true is set_a is a subset of set_b;  Otherwise returns false.
 
-bool
-Options::IsASubset (const OptionSet& set_a, const OptionSet& set_b)
-{
-    bool is_a_subset = true;
-    OptionSet::const_iterator pos_a;
-    OptionSet::const_iterator pos_b;
-
-    // set_a is a subset of set_b if every member of set_a is also a member of set_b
-
-    for (pos_a = set_a.begin(); pos_a != set_a.end() && is_a_subset; ++pos_a)
-    {
-        pos_b = set_b.find(*pos_a);
-        if (pos_b == set_b.end())
-            is_a_subset = false;
+bool Options::IsASubset(const OptionSet &set_a, const OptionSet &set_b) {
+  bool is_a_subset = true;
+  OptionSet::const_iterator pos_a;
+  OptionSet::const_iterator pos_b;
+
+  // set_a is a subset of set_b if every member of set_a is also a member of
+  // set_b
+
+  for (pos_a = set_a.begin(); pos_a != set_a.end() && is_a_subset; ++pos_a) {
+    pos_b = set_b.find(*pos_a);
+    if (pos_b == set_b.end())
+      is_a_subset = false;
+  }
+
+  return is_a_subset;
+}
+
+// Returns the set difference set_a - set_b, i.e. { x | ElementOf (x, set_a) &&
+// !ElementOf (x, set_b) }
+
+size_t Options::OptionsSetDiff(const OptionSet &set_a, const OptionSet &set_b,
+                               OptionSet &diffs) {
+  size_t num_diffs = 0;
+  OptionSet::const_iterator pos_a;
+  OptionSet::const_iterator pos_b;
+
+  for (pos_a = set_a.begin(); pos_a != set_a.end(); ++pos_a) {
+    pos_b = set_b.find(*pos_a);
+    if (pos_b == set_b.end()) {
+      ++num_diffs;
+      diffs.insert(*pos_a);
+    }
+  }
+
+  return num_diffs;
+}
+
+// Returns the union of set_a and set_b.  Does not put duplicate members into
+// the union.
+
+void Options::OptionsSetUnion(const OptionSet &set_a, const OptionSet &set_b,
+                              OptionSet &union_set) {
+  OptionSet::const_iterator pos;
+  OptionSet::iterator pos_union;
+
+  // Put all the elements of set_a into the union.
+
+  for (pos = set_a.begin(); pos != set_a.end(); ++pos)
+    union_set.insert(*pos);
+
+  // Put all the elements of set_b that are not already there into the union.
+  for (pos = set_b.begin(); pos != set_b.end(); ++pos) {
+    pos_union = union_set.find(*pos);
+    if (pos_union == union_set.end())
+      union_set.insert(*pos);
+  }
+}
+
+bool Options::VerifyOptions(CommandReturnObject &result) {
+  bool options_are_valid = false;
+
+  int num_levels = GetRequiredOptions().size();
+  if (num_levels) {
+    for (int i = 0; i < num_levels && !options_are_valid; ++i) {
+      // This is the correct set of options if:  1). m_seen_options contains all
+      // of m_required_options[i]
+      // (i.e. all the required options at this level are a subset of
+      // m_seen_options); AND
+      // 2). { m_seen_options - m_required_options[i] is a subset of
+      // m_options_options[i] (i.e. all the rest of
+      // m_seen_options are in the set of optional options at this level.
+
+      // Check to see if all of m_required_options[i] are a subset of
+      // m_seen_options
+      if (IsASubset(GetRequiredOptions()[i], m_seen_options)) {
+        // Construct the set difference: remaining_options = {m_seen_options} -
+        // {m_required_options[i]}
+        OptionSet remaining_options;
+        OptionsSetDiff(m_seen_options, GetRequiredOptions()[i],
+                       remaining_options);
+        // Check to see if remaining_options is a subset of
+        // m_optional_options[i]
+        if (IsASubset(remaining_options, GetOptionalOptions()[i]))
+          options_are_valid = true;
+      }
     }
+  } else {
+    options_are_valid = true;
+  }
+
+  if (options_are_valid) {
+    result.SetStatus(eReturnStatusSuccessFinishNoResult);
+  } else {
+    result.AppendError("invalid combination of options for the given command");
+    result.SetStatus(eReturnStatusFailed);
+  }
 
-    return is_a_subset;
+  return options_are_valid;
 }
 
-// Returns the set difference set_a - set_b, i.e. { x | ElementOf (x, set_a) && !ElementOf (x, set_b) }
+// This is called in the Options constructor, though we could call it lazily if
+// that ends up being
+// a performance problem.
 
-size_t
-Options::OptionsSetDiff (const OptionSet& set_a, const OptionSet& set_b, OptionSet& diffs)
-{
-    size_t num_diffs = 0;
-    OptionSet::const_iterator pos_a;
-    OptionSet::const_iterator pos_b;
-
-    for (pos_a = set_a.begin(); pos_a != set_a.end(); ++pos_a)
-    {
-        pos_b = set_b.find(*pos_a);
-        if (pos_b == set_b.end())
-        {
-            ++num_diffs;
-            diffs.insert(*pos_a);
+void Options::BuildValidOptionSets() {
+  // Check to see if we already did this.
+  if (m_required_options.size() != 0)
+    return;
+
+  // Check to see if there are any options.
+  int num_options = NumCommandOptions();
+  if (num_options == 0)
+    return;
+
+  const OptionDefinition *opt_defs = GetDefinitions();
+  m_required_options.resize(1);
+  m_optional_options.resize(1);
+
+  // First count the number of option sets we've got.  Ignore
+  // LLDB_ALL_OPTION_SETS...
+
+  uint32_t num_option_sets = 0;
+
+  for (int i = 0; i < num_options; i++) {
+    uint32_t this_usage_mask = opt_defs[i].usage_mask;
+    if (this_usage_mask == LLDB_OPT_SET_ALL) {
+      if (num_option_sets == 0)
+        num_option_sets = 1;
+    } else {
+      for (uint32_t j = 0; j < LLDB_MAX_NUM_OPTION_SETS; j++) {
+        if (this_usage_mask & (1 << j)) {
+          if (num_option_sets <= j)
+            num_option_sets = j + 1;
         }
+      }
     }
+  }
 
-    return num_diffs;
-}
-
-// Returns the union of set_a and set_b.  Does not put duplicate members into the union.
-
-void
-Options::OptionsSetUnion (const OptionSet &set_a, const OptionSet &set_b, OptionSet &union_set)
-{
-    OptionSet::const_iterator pos;
-    OptionSet::iterator pos_union;
-
-    // Put all the elements of set_a into the union.
-
-    for (pos = set_a.begin(); pos != set_a.end(); ++pos)
-        union_set.insert(*pos);
-
-    // Put all the elements of set_b that are not already there into the union.
-    for (pos = set_b.begin(); pos != set_b.end(); ++pos)
-    {
-        pos_union = union_set.find(*pos);
-        if (pos_union == union_set.end())
-            union_set.insert(*pos);
-    }
-}
-
-bool
-Options::VerifyOptions (CommandReturnObject &result)
-{
-    bool options_are_valid = false;
-
-    int num_levels = GetRequiredOptions().size();
-    if (num_levels)
-    {
-        for (int i = 0; i < num_levels && !options_are_valid; ++i)
-        {
-            // This is the correct set of options if:  1). m_seen_options contains all of m_required_options[i]
-            // (i.e. all the required options at this level are a subset of m_seen_options); AND
-            // 2). { m_seen_options - m_required_options[i] is a subset of m_options_options[i] (i.e. all the rest of
-            // m_seen_options are in the set of optional options at this level.
-
-            // Check to see if all of m_required_options[i] are a subset of m_seen_options
-            if (IsASubset (GetRequiredOptions()[i], m_seen_options))
-            {
-                // Construct the set difference: remaining_options = {m_seen_options} - {m_required_options[i]}
-                OptionSet remaining_options;
-                OptionsSetDiff (m_seen_options, GetRequiredOptions()[i], remaining_options);
-                // Check to see if remaining_options is a subset of m_optional_options[i]
-                if (IsASubset (remaining_options, GetOptionalOptions()[i]))
-                    options_are_valid = true;
-            }
+  if (num_option_sets > 0) {
+    m_required_options.resize(num_option_sets);
+    m_optional_options.resize(num_option_sets);
+
+    for (int i = 0; i < num_options; ++i) {
+      for (uint32_t j = 0; j < num_option_sets; j++) {
+        if (opt_defs[i].usage_mask & 1 << j) {
+          if (opt_defs[i].required)
+            m_required_options[j].insert(opt_defs[i].short_option);
+          else
+            m_optional_options[j].insert(opt_defs[i].short_option);
         }
+      }
     }
-    else
-    {
-        options_are_valid = true;
-    }
+  }
+}
 
-    if (options_are_valid)
-    {
-        result.SetStatus (eReturnStatusSuccessFinishNoResult);
-    }
-    else
-    {
-        result.AppendError ("invalid combination of options for the given command");
-        result.SetStatus (eReturnStatusFailed);
-    }
+uint32_t Options::NumCommandOptions() {
+  const OptionDefinition *opt_defs = GetDefinitions();
+  if (opt_defs == nullptr)
+    return 0;
 
-    return options_are_valid;
-}
+  int i = 0;
 
-// This is called in the Options constructor, though we could call it lazily if that ends up being
-// a performance problem.
+  if (opt_defs != nullptr) {
+    while (opt_defs[i].long_option != nullptr)
+      ++i;
+  }
 
-void
-Options::BuildValidOptionSets ()
-{
-    // Check to see if we already did this.
-    if (m_required_options.size() != 0)
-        return;
+  return i;
+}
 
+Option *Options::GetLongOptions() {
+  // Check to see if this has already been done.
+  if (m_getopt_table.empty()) {
     // Check to see if there are any options.
-    int num_options = NumCommandOptions ();
+    const uint32_t num_options = NumCommandOptions();
     if (num_options == 0)
-        return;
+      return nullptr;
 
+    uint32_t i;
     const OptionDefinition *opt_defs = GetDefinitions();
-    m_required_options.resize(1);
-    m_optional_options.resize(1);
-    
-    // First count the number of option sets we've got.  Ignore LLDB_ALL_OPTION_SETS...
-    
-    uint32_t num_option_sets = 0;
-    
-    for (int i = 0; i < num_options; i++)
-    {
-        uint32_t this_usage_mask = opt_defs[i].usage_mask;
-        if (this_usage_mask == LLDB_OPT_SET_ALL)
-        {
-            if (num_option_sets == 0)
-                num_option_sets = 1;
-        }
-        else
-        {
-            for (uint32_t j = 0; j < LLDB_MAX_NUM_OPTION_SETS; j++)
-            {
-                if (this_usage_mask & (1 << j))
-                {
-                    if (num_option_sets <= j)
-                        num_option_sets = j + 1;
-                }
-            }
-        }
-    }
 
-    if (num_option_sets > 0)
-    {
-        m_required_options.resize(num_option_sets);
-        m_optional_options.resize(num_option_sets);
-        
-        for (int i = 0; i < num_options; ++i)
-        {
-            for (uint32_t j = 0; j < num_option_sets; j++)
-            {
-                if (opt_defs[i].usage_mask & 1 << j)
-                {
-                    if (opt_defs[i].required)
-                        m_required_options[j].insert(opt_defs[i].short_option);
-                    else
-                        m_optional_options[j].insert(opt_defs[i].short_option);
-                }
-            }
-        }
-    }
-}
+    std::map<int, uint32_t> option_seen;
 
-uint32_t
-Options::NumCommandOptions ()
-{
-    const OptionDefinition *opt_defs = GetDefinitions ();
-    if (opt_defs == nullptr)
-        return 0;
-        
-    int i = 0;
-
-    if (opt_defs != nullptr)
-    {
-        while (opt_defs[i].long_option != nullptr)
-            ++i;
+    m_getopt_table.resize(num_options + 1);
+    for (i = 0; i < num_options; ++i) {
+      const int short_opt = opt_defs[i].short_option;
+
+      m_getopt_table[i].definition = &opt_defs[i];
+      m_getopt_table[i].flag = nullptr;
+      m_getopt_table[i].val = short_opt;
+
+      if (option_seen.find(short_opt) == option_seen.end()) {
+        option_seen[short_opt] = i;
+      } else if (short_opt) {
+        m_getopt_table[i].val = 0;
+        std::map<int, uint32_t>::const_iterator pos =
+            option_seen.find(short_opt);
+        StreamString strm;
+        if (isprint8(short_opt))
+          Host::SystemLog(Host::eSystemLogError,
+                          "option[%u] --%s has a short option -%c that "
+                          "conflicts with option[%u] --%s, short option won't "
+                          "be used for --%s\n",
+                          i, opt_defs[i].long_option, short_opt, pos->second,
+                          m_getopt_table[pos->second].definition->long_option,
+                          opt_defs[i].long_option);
+        else
+          Host::SystemLog(Host::eSystemLogError,
+                          "option[%u] --%s has a short option 0x%x that "
+                          "conflicts with option[%u] --%s, short option won't "
+                          "be used for --%s\n",
+                          i, opt_defs[i].long_option, short_opt, pos->second,
+                          m_getopt_table[pos->second].definition->long_option,
+                          opt_defs[i].long_option);
+      }
     }
 
-    return i;
-}
-
-Option *
-Options::GetLongOptions ()
-{
-    // Check to see if this has already been done.
-    if (m_getopt_table.empty())
-    {
-        // Check to see if there are any options.
-        const uint32_t num_options = NumCommandOptions();
-        if (num_options == 0)
-            return nullptr;
-
-        uint32_t i;
-        const OptionDefinition *opt_defs = GetDefinitions();
-
-        std::map<int, uint32_t> option_seen;
-
-        m_getopt_table.resize(num_options + 1);
-        for (i = 0; i < num_options; ++i)
-        {
-            const int short_opt = opt_defs[i].short_option;
-
-            m_getopt_table[i].definition = &opt_defs[i];
-            m_getopt_table[i].flag    = nullptr;
-            m_getopt_table[i].val     = short_opt;
-
-            if (option_seen.find(short_opt) == option_seen.end())
-            {
-                option_seen[short_opt] = i;
-            }
-            else if (short_opt)
-            {
-                m_getopt_table[i].val = 0;
-                std::map<int, uint32_t>::const_iterator pos = option_seen.find(short_opt);
-                StreamString strm;
-                if (isprint8(short_opt))
-                    Host::SystemLog (Host::eSystemLogError, "option[%u] --%s has a short option -%c that conflicts with option[%u] --%s, short option won't be used for --%s\n",
-                                i,
-                                opt_defs[i].long_option,
-                                short_opt,
-                                pos->second,
-                                m_getopt_table[pos->second].definition->long_option,
-                                opt_defs[i].long_option);
-                else
-                    Host::SystemLog (Host::eSystemLogError, "option[%u] --%s has a short option 0x%x that conflicts with option[%u] --%s, short option won't be used for --%s\n",
-                                i,
-                                opt_defs[i].long_option,
-                                short_opt,
-                                pos->second,
-                                m_getopt_table[pos->second].definition->long_option,
-                                opt_defs[i].long_option);
-            }
-        }
-
-        //getopt_long_only requires a NULL final entry in the table:
+    // getopt_long_only requires a NULL final entry in the table:
 
-        m_getopt_table[i].definition    = nullptr;
-        m_getopt_table[i].flag          = nullptr;
-        m_getopt_table[i].val           = 0;
-    }
+    m_getopt_table[i].definition = nullptr;
+    m_getopt_table[i].flag = nullptr;
+    m_getopt_table[i].val = 0;
+  }
 
-    if (m_getopt_table.empty())
-        return nullptr;
+  if (m_getopt_table.empty())
+    return nullptr;
 
-    return &m_getopt_table.front();
+  return &m_getopt_table.front();
 }
 
-
-// This function takes INDENT, which tells how many spaces to output at the front of each line; SPACES, which is
-// a string containing 80 spaces; and TEXT, which is the text that is to be output.   It outputs the text, on
-// multiple lines if necessary, to RESULT, with INDENT spaces at the front of each line.  It breaks lines on spaces,
-// tabs or newlines, shortening the line if necessary to not break in the middle of a word.  It assumes that each
+// This function takes INDENT, which tells how many spaces to output at the
+// front of each line; SPACES, which is
+// a string containing 80 spaces; and TEXT, which is the text that is to be
+// output.   It outputs the text, on
+// multiple lines if necessary, to RESULT, with INDENT spaces at the front of
+// each line.  It breaks lines on spaces,
+// tabs or newlines, shortening the line if necessary to not break in the middle
+// of a word.  It assumes that each
 // output line should contain a maximum of OUTPUT_MAX_COLUMNS characters.
 
+void Options::OutputFormattedUsageText(Stream &strm,
+                                       const OptionDefinition &option_def,
+                                       uint32_t output_max_columns) {
+  std::string actual_text;
+  if (option_def.validator) {
+    const char *condition = option_def.validator->ShortConditionString();
+    if (condition) {
+      actual_text = "[";
+      actual_text.append(condition);
+      actual_text.append("] ");
+    }
+  }
+  actual_text.append(option_def.usage_text);
+
+  // Will it all fit on one line?
+
+  if (static_cast<uint32_t>(actual_text.length() + strm.GetIndentLevel()) <
+      output_max_columns) {
+    // Output it as a single line.
+    strm.Indent(actual_text.c_str());
+    strm.EOL();
+  } else {
+    // We need to break it up into multiple lines.
+
+    int text_width = output_max_columns - strm.GetIndentLevel() - 1;
+    int start = 0;
+    int end = start;
+    int final_end = actual_text.length();
+    int sub_len;
+
+    while (end < final_end) {
+      // Don't start the 'text' on a space, since we're already outputting the
+      // indentation.
+      while ((start < final_end) && (actual_text[start] == ' '))
+        start++;
+
+      end = start + text_width;
+      if (end > final_end)
+        end = final_end;
+      else {
+        // If we're not at the end of the text, make sure we break the line on
+        // white space.
+        while (end > start && actual_text[end] != ' ' &&
+               actual_text[end] != '\t' && actual_text[end] != '\n')
+          end--;
+      }
 
-void
-Options::OutputFormattedUsageText
-(
-    Stream &strm,
-    const OptionDefinition &option_def,
-    uint32_t output_max_columns
-)
-{
-    std::string actual_text;
-    if (option_def.validator)
-    {
-        const char *condition = option_def.validator->ShortConditionString();
-        if (condition)
-        {
-            actual_text = "[";
-            actual_text.append(condition);
-            actual_text.append("] ");
-        }
-    }
-    actual_text.append(option_def.usage_text);
-
-    // Will it all fit on one line?
-
-    if (static_cast<uint32_t>(actual_text.length() + strm.GetIndentLevel()) < output_max_columns)
-    {
-        // Output it as a single line.
-        strm.Indent (actual_text.c_str());
-        strm.EOL();
-    }
-    else
-    {
-        // We need to break it up into multiple lines.
-
-        int text_width = output_max_columns - strm.GetIndentLevel() - 1;
-        int start = 0;
-        int end = start;
-        int final_end = actual_text.length();
-        int sub_len;
-
-        while (end < final_end)
-        {
-            // Don't start the 'text' on a space, since we're already outputting the indentation.
-            while ((start < final_end) && (actual_text[start] == ' '))
-                start++;
-
-            end = start + text_width;
-            if (end > final_end)
-                end = final_end;
-            else
-            {
-                // If we're not at the end of the text, make sure we break the line on white space.
-                while (end > start
-                       && actual_text[end] != ' ' && actual_text[end] != '\t' && actual_text[end] != '\n')
-                    end--;
-            }
-
-            sub_len = end - start;
-            if (start != 0)
-                strm.EOL();
-            strm.Indent();
-            assert (start < final_end);
-            assert (start + sub_len <= final_end);
-            strm.Write(actual_text.c_str() + start, sub_len);
-            start = end + 1;
-        }
+      sub_len = end - start;
+      if (start != 0)
         strm.EOL();
+      strm.Indent();
+      assert(start < final_end);
+      assert(start + sub_len <= final_end);
+      strm.Write(actual_text.c_str() + start, sub_len);
+      start = end + 1;
     }
+    strm.EOL();
+  }
 }
 
-bool
-Options::SupportsLongOption (const char *long_option)
-{
-    if (long_option && long_option[0])
-    {
-        const OptionDefinition *opt_defs = GetDefinitions ();
-        if (opt_defs)
-        {
-            const char *long_option_name = long_option;
-            if (long_option[0] == '-' && long_option[1] == '-')
-                long_option_name += 2;
-
-            for (uint32_t i = 0; opt_defs[i].long_option; ++i)
-            {
-                if (strcmp(opt_defs[i].long_option, long_option_name) == 0)
-                    return true;
-            }
-        }
+bool Options::SupportsLongOption(const char *long_option) {
+  if (long_option && long_option[0]) {
+    const OptionDefinition *opt_defs = GetDefinitions();
+    if (opt_defs) {
+      const char *long_option_name = long_option;
+      if (long_option[0] == '-' && long_option[1] == '-')
+        long_option_name += 2;
+
+      for (uint32_t i = 0; opt_defs[i].long_option; ++i) {
+        if (strcmp(opt_defs[i].long_option, long_option_name) == 0)
+          return true;
+      }
     }
-    return false;
+  }
+  return false;
 }
 
-enum OptionDisplayType
-{
-    eDisplayBestOption,
-    eDisplayShortOption,
-    eDisplayLongOption
+enum OptionDisplayType {
+  eDisplayBestOption,
+  eDisplayShortOption,
+  eDisplayLongOption
 };
 
-static bool
-PrintOption (const OptionDefinition &opt_def,
-             OptionDisplayType display_type,
-             const char *header,
-             const char *footer,
-             bool show_optional,
-             Stream &strm)
-{
-    const bool has_short_option = isprint8(opt_def.short_option) != 0;
-
-    if (display_type == eDisplayShortOption && !has_short_option)
-        return false;
-
-    if (header && header[0])
-        strm.PutCString(header);
-    
-    if (show_optional && !opt_def.required)
-    strm.PutChar('[');
-    const bool show_short_option = has_short_option && display_type != eDisplayLongOption;
-    if (show_short_option)
-        strm.Printf ("-%c", opt_def.short_option);
-    else
-        strm.Printf ("--%s", opt_def.long_option);
-    switch (opt_def.option_has_arg)
-    {
-        case OptionParser::eNoArgument:
-            break;
-        case OptionParser::eRequiredArgument:
-            strm.Printf (" <%s>", CommandObject::GetArgumentName (opt_def.argument_type));
-            break;
-            
-        case OptionParser::eOptionalArgument:
-            strm.Printf ("%s[<%s>]",
-                         show_short_option ? "" : "=",
-                         CommandObject::GetArgumentName (opt_def.argument_type));
-            break;
-    }
-    if (show_optional && !opt_def.required)
-        strm.PutChar(']');
-    if (footer && footer[0])
-        strm.PutCString(footer);
-    return true;
-}
-
-void
-Options::GenerateOptionUsage
-(
-    Stream &strm,
-    CommandObject *cmd,
-    uint32_t screen_width
-)
-{
-    const bool only_print_args = cmd->IsDashDashCommand();
-
-    const OptionDefinition *opt_defs = GetDefinitions();
-    const uint32_t save_indent_level = strm.GetIndentLevel();
-    const char *name;
-
-    StreamString arguments_str;
-
-    if (cmd)
-    {
-        name = cmd->GetCommandName();
-        cmd->GetFormattedCommandArguments (arguments_str);
-    }
-    else
-        name = "";
-
-    strm.PutCString ("\nCommand Options Usage:\n");
+static bool PrintOption(const OptionDefinition &opt_def,
+                        OptionDisplayType display_type, const char *header,
+                        const char *footer, bool show_optional, Stream &strm) {
+  const bool has_short_option = isprint8(opt_def.short_option) != 0;
 
-    strm.IndentMore(2);
-
-    // First, show each usage level set of options, e.g. <cmd> [options-for-level-0]
-    //                                                   <cmd> [options-for-level-1]
-    //                                                   etc.
-
-    const uint32_t num_options = NumCommandOptions();
-    if (num_options == 0)
-        return;
-        
-    uint32_t num_option_sets = GetRequiredOptions().size();
-    
-    uint32_t i;
-    
-    if (!only_print_args)
-    {
-        for (uint32_t opt_set = 0; opt_set < num_option_sets; ++opt_set)
-        {
-            uint32_t opt_set_mask;
-            
-            opt_set_mask = 1 << opt_set;
-            if (opt_set > 0)
-                strm.Printf ("\n");
-            strm.Indent (name);
-
-            // Different option sets may require different args.
-            StreamString args_str;
-            if (cmd)
-                cmd->GetFormattedCommandArguments(args_str, opt_set_mask);
-
-            // First go through and print all options that take no arguments as
-            // a single string. If a command has "-a" "-b" and "-c", this will show
-            // up as [-abc]
-
-            std::set<int> options;
-            std::set<int>::const_iterator options_pos, options_end;
-            for (i = 0; i < num_options; ++i)
-            {
-                if (opt_defs[i].usage_mask & opt_set_mask && isprint8(opt_defs[i].short_option))
-                {
-                    // Add current option to the end of out_stream.
-
-                    if (opt_defs[i].required == true && 
-                        opt_defs[i].option_has_arg == OptionParser::eNoArgument)
-                    {
-                        options.insert (opt_defs[i].short_option);
-                    }
-                }
-            }
+  if (display_type == eDisplayShortOption && !has_short_option)
+    return false;
 
-            if (options.empty() == false)
-            {
-                // We have some required options with no arguments
-                strm.PutCString(" -");
-                for (i=0; i<2; ++i)            
-                    for (options_pos = options.begin(), options_end = options.end();
-                         options_pos != options_end;
-                         ++options_pos)
-                    {
-                        if (i==0 && ::islower (*options_pos))
-                            continue;
-                        if (i==1 && ::isupper (*options_pos))
-                            continue;
-                        strm << (char)*options_pos;
-                    }
-            }
+  if (header && header[0])
+    strm.PutCString(header);
 
-            for (i = 0, options.clear(); i < num_options; ++i)
-            {
-                if (opt_defs[i].usage_mask & opt_set_mask && isprint8(opt_defs[i].short_option))
-                {
-                    // Add current option to the end of out_stream.
-
-                    if (opt_defs[i].required == false &&
-                        opt_defs[i].option_has_arg == OptionParser::eNoArgument)
-                    {
-                        options.insert (opt_defs[i].short_option);
-                    }
-                }
-            }
-
-            if (options.empty() == false)
-            {
-                // We have some required options with no arguments
-                strm.PutCString(" [-");
-                for (i=0; i<2; ++i)            
-                    for (options_pos = options.begin(), options_end = options.end();
-                         options_pos != options_end;
-                         ++options_pos)
-                    {
-                        if (i==0 && ::islower (*options_pos))
-                            continue;
-                        if (i==1 && ::isupper (*options_pos))
-                            continue;
-                        strm << (char)*options_pos;
-                    }
-                strm.PutChar(']');
-            }
+  if (show_optional && !opt_def.required)
+    strm.PutChar('[');
+  const bool show_short_option =
+      has_short_option && display_type != eDisplayLongOption;
+  if (show_short_option)
+    strm.Printf("-%c", opt_def.short_option);
+  else
+    strm.Printf("--%s", opt_def.long_option);
+  switch (opt_def.option_has_arg) {
+  case OptionParser::eNoArgument:
+    break;
+  case OptionParser::eRequiredArgument:
+    strm.Printf(" <%s>", CommandObject::GetArgumentName(opt_def.argument_type));
+    break;
+
+  case OptionParser::eOptionalArgument:
+    strm.Printf("%s[<%s>]", show_short_option ? "" : "=",
+                CommandObject::GetArgumentName(opt_def.argument_type));
+    break;
+  }
+  if (show_optional && !opt_def.required)
+    strm.PutChar(']');
+  if (footer && footer[0])
+    strm.PutCString(footer);
+  return true;
+}
+
+void Options::GenerateOptionUsage(Stream &strm, CommandObject *cmd,
+                                  uint32_t screen_width) {
+  const bool only_print_args = cmd->IsDashDashCommand();
+
+  const OptionDefinition *opt_defs = GetDefinitions();
+  const uint32_t save_indent_level = strm.GetIndentLevel();
+  const char *name;
+
+  StreamString arguments_str;
+
+  if (cmd) {
+    name = cmd->GetCommandName();
+    cmd->GetFormattedCommandArguments(arguments_str);
+  } else
+    name = "";
+
+  strm.PutCString("\nCommand Options Usage:\n");
+
+  strm.IndentMore(2);
+
+  // First, show each usage level set of options, e.g. <cmd>
+  // [options-for-level-0]
+  //                                                   <cmd>
+  //                                                   [options-for-level-1]
+  //                                                   etc.
+
+  const uint32_t num_options = NumCommandOptions();
+  if (num_options == 0)
+    return;
+
+  uint32_t num_option_sets = GetRequiredOptions().size();
+
+  uint32_t i;
+
+  if (!only_print_args) {
+    for (uint32_t opt_set = 0; opt_set < num_option_sets; ++opt_set) {
+      uint32_t opt_set_mask;
+
+      opt_set_mask = 1 << opt_set;
+      if (opt_set > 0)
+        strm.Printf("\n");
+      strm.Indent(name);
+
+      // Different option sets may require different args.
+      StreamString args_str;
+      if (cmd)
+        cmd->GetFormattedCommandArguments(args_str, opt_set_mask);
+
+      // First go through and print all options that take no arguments as
+      // a single string. If a command has "-a" "-b" and "-c", this will show
+      // up as [-abc]
+
+      std::set<int> options;
+      std::set<int>::const_iterator options_pos, options_end;
+      for (i = 0; i < num_options; ++i) {
+        if (opt_defs[i].usage_mask & opt_set_mask &&
+            isprint8(opt_defs[i].short_option)) {
+          // Add current option to the end of out_stream.
+
+          if (opt_defs[i].required == true &&
+              opt_defs[i].option_has_arg == OptionParser::eNoArgument) {
+            options.insert(opt_defs[i].short_option);
+          }
+        }
+      }
 
-            // First go through and print the required options (list them up front).
-            
-            for (i = 0; i < num_options; ++i)
-            {
-                if (opt_defs[i].usage_mask & opt_set_mask && isprint8(opt_defs[i].short_option))
-                {
-                    if (opt_defs[i].required && opt_defs[i].option_has_arg != OptionParser::eNoArgument)
-                        PrintOption (opt_defs[i], eDisplayBestOption, " ", nullptr, true, strm);
-                }
-            }
+      if (options.empty() == false) {
+        // We have some required options with no arguments
+        strm.PutCString(" -");
+        for (i = 0; i < 2; ++i)
+          for (options_pos = options.begin(), options_end = options.end();
+               options_pos != options_end; ++options_pos) {
+            if (i == 0 && ::islower(*options_pos))
+              continue;
+            if (i == 1 && ::isupper(*options_pos))
+              continue;
+            strm << (char)*options_pos;
+          }
+      }
 
-            // Now go through again, and this time only print the optional options.
+      for (i = 0, options.clear(); i < num_options; ++i) {
+        if (opt_defs[i].usage_mask & opt_set_mask &&
+            isprint8(opt_defs[i].short_option)) {
+          // Add current option to the end of out_stream.
+
+          if (opt_defs[i].required == false &&
+              opt_defs[i].option_has_arg == OptionParser::eNoArgument) {
+            options.insert(opt_defs[i].short_option);
+          }
+        }
+      }
 
-            for (i = 0; i < num_options; ++i)
-            {
-                if (opt_defs[i].usage_mask & opt_set_mask)
-                {
-                    // Add current option to the end of out_stream.
+      if (options.empty() == false) {
+        // We have some required options with no arguments
+        strm.PutCString(" [-");
+        for (i = 0; i < 2; ++i)
+          for (options_pos = options.begin(), options_end = options.end();
+               options_pos != options_end; ++options_pos) {
+            if (i == 0 && ::islower(*options_pos))
+              continue;
+            if (i == 1 && ::isupper(*options_pos))
+              continue;
+            strm << (char)*options_pos;
+          }
+        strm.PutChar(']');
+      }
 
-                    if (!opt_defs[i].required && opt_defs[i].option_has_arg != OptionParser::eNoArgument)
-                        PrintOption (opt_defs[i], eDisplayBestOption, " ", nullptr, true, strm);
-                }
-            }
-            
-            if (args_str.GetSize() > 0)
-            {
-                if (cmd->WantsRawCommandString() && !only_print_args)
-                    strm.Printf(" --");
-                
-                strm.Printf (" %s", args_str.GetData());
-                if (only_print_args)
-                    break;
-            }
-        }
-    }
-    
-    if (cmd &&
-        (only_print_args || cmd->WantsRawCommandString()) &&
-        arguments_str.GetSize() > 0)
-    {        
-        if (!only_print_args) strm.PutChar('\n');
-        strm.Indent(name);
-        strm.Printf(" %s", arguments_str.GetData());
-    }
-    
-    strm.Printf ("\n\n");
+      // First go through and print the required options (list them up front).
 
-    if (!only_print_args)
-    {
-        // Now print out all the detailed information about the various options:  long form, short form and help text:
-        //   -short <argument> ( --long_name <argument> )
-        //   help text
-
-        // This variable is used to keep track of which options' info we've printed out, because some options can be in
-        // more than one usage level, but we only want to print the long form of its information once.
-
-        std::multimap<int, uint32_t> options_seen;
-        strm.IndentMore (5);
-
-        // Put the unique command options in a vector & sort it, so we can output them alphabetically (by short_option)
-        // when writing out detailed help for each option.
-
-        for (i = 0; i < num_options; ++i)
-            options_seen.insert(std::make_pair(opt_defs[i].short_option, i));
-
-        // Go through the unique'd and alphabetically sorted vector of options, find the table entry for each option
-        // and write out the detailed help information for that option.
-
-        bool first_option_printed = false;;
-
-        for (auto pos : options_seen)
-        {
-            i = pos.second;
-            //Print out the help information for this option.
-
-            // Put a newline separation between arguments
-            if (first_option_printed)
-                strm.EOL();
-            else
-                first_option_printed = true;
-            
-            CommandArgumentType arg_type = opt_defs[i].argument_type;
-            
-            StreamString arg_name_str;
-            arg_name_str.Printf ("<%s>", CommandObject::GetArgumentName (arg_type));
-
-            strm.Indent ();
-            if (opt_defs[i].short_option && isprint8(opt_defs[i].short_option))
-            {
-                PrintOption (opt_defs[i], eDisplayShortOption, nullptr, nullptr, false, strm);
-                PrintOption (opt_defs[i], eDisplayLongOption, " ( ", " )", false, strm);
-            }
-            else
-            {
-                // Short option is not printable, just print long option
-                PrintOption (opt_defs[i], eDisplayLongOption, nullptr, nullptr, false, strm);
-            }
-            strm.EOL();
-            
-            strm.IndentMore (5);
-            
-            if (opt_defs[i].usage_text)
-                OutputFormattedUsageText (strm,
-                                          opt_defs[i],
-                                          screen_width);
-            if (opt_defs[i].enum_values != nullptr)
-            {
-                strm.Indent ();
-                strm.Printf("Values: ");
-                for (int k = 0; opt_defs[i].enum_values[k].string_value != nullptr; k++)
-                {
-                    if (k == 0)
-                        strm.Printf("%s", opt_defs[i].enum_values[k].string_value);
-                    else
-                        strm.Printf(" | %s", opt_defs[i].enum_values[k].string_value);
-                }
-                strm.EOL();
-            }
-            strm.IndentLess (5);
+      for (i = 0; i < num_options; ++i) {
+        if (opt_defs[i].usage_mask & opt_set_mask &&
+            isprint8(opt_defs[i].short_option)) {
+          if (opt_defs[i].required &&
+              opt_defs[i].option_has_arg != OptionParser::eNoArgument)
+            PrintOption(opt_defs[i], eDisplayBestOption, " ", nullptr, true,
+                        strm);
         }
-    }
+      }
 
-    // Restore the indent level
-    strm.SetIndentLevel (save_indent_level);
-}
+      // Now go through again, and this time only print the optional options.
 
-// This function is called when we have been given a potentially incomplete set of
-// options, such as when an alias has been defined (more options might be added at
-// at the time the alias is invoked).  We need to verify that the options in the set
-// m_seen_options are all part of a set that may be used together, but m_seen_options
-// may be missing some of the "required" options.
+      for (i = 0; i < num_options; ++i) {
+        if (opt_defs[i].usage_mask & opt_set_mask) {
+          // Add current option to the end of out_stream.
+
+          if (!opt_defs[i].required &&
+              opt_defs[i].option_has_arg != OptionParser::eNoArgument)
+            PrintOption(opt_defs[i], eDisplayBestOption, " ", nullptr, true,
+                        strm);
+        }
+      }
 
-bool
-Options::VerifyPartialOptions (CommandReturnObject &result)
-{
-    bool options_are_valid = false;
-
-    int num_levels = GetRequiredOptions().size();
-    if (num_levels)
-      {
-        for (int i = 0; i < num_levels && !options_are_valid; ++i)
-          {
-            // In this case we are treating all options as optional rather than required.
-            // Therefore a set of options is correct if m_seen_options is a subset of the
-            // union of m_required_options and m_optional_options.
-            OptionSet union_set;
-            OptionsSetUnion (GetRequiredOptions()[i], GetOptionalOptions()[i], union_set);
-            if (IsASubset (m_seen_options, union_set))
-                options_are_valid = true;
-          }
+      if (args_str.GetSize() > 0) {
+        if (cmd->WantsRawCommandString() && !only_print_args)
+          strm.Printf(" --");
+
+        strm.Printf(" %s", args_str.GetData());
+        if (only_print_args)
+          break;
       }
+    }
+  }
 
-    return options_are_valid;
-}
+  if (cmd && (only_print_args || cmd->WantsRawCommandString()) &&
+      arguments_str.GetSize() > 0) {
+    if (!only_print_args)
+      strm.PutChar('\n');
+    strm.Indent(name);
+    strm.Printf(" %s", arguments_str.GetData());
+  }
+
+  strm.Printf("\n\n");
+
+  if (!only_print_args) {
+    // Now print out all the detailed information about the various options:
+    // long form, short form and help text:
+    //   -short <argument> ( --long_name <argument> )
+    //   help text
+
+    // This variable is used to keep track of which options' info we've printed
+    // out, because some options can be in
+    // more than one usage level, but we only want to print the long form of its
+    // information once.
+
+    std::multimap<int, uint32_t> options_seen;
+    strm.IndentMore(5);
+
+    // Put the unique command options in a vector & sort it, so we can output
+    // them alphabetically (by short_option)
+    // when writing out detailed help for each option.
+
+    for (i = 0; i < num_options; ++i)
+      options_seen.insert(std::make_pair(opt_defs[i].short_option, i));
+
+    // Go through the unique'd and alphabetically sorted vector of options, find
+    // the table entry for each option
+    // and write out the detailed help information for that option.
+
+    bool first_option_printed = false;
+    ;
+
+    for (auto pos : options_seen) {
+      i = pos.second;
+      // Print out the help information for this option.
 
-bool
-Options::HandleOptionCompletion
-(
-    Args &input,
-    OptionElementVector &opt_element_vector,
-    int cursor_index,
-    int char_pos,
-    int match_start_point,
-    int max_return_elements,
-    CommandInterpreter &interpreter,
-    bool &word_complete,
-    lldb_private::StringList &matches
-)
-{
-    word_complete = true;
-    
-    // For now we just scan the completions to see if the cursor position is in
-    // an option or its argument.  Otherwise we'll call HandleArgumentCompletion.
-    // In the future we can use completion to validate options as well if we want.
+      // Put a newline separation between arguments
+      if (first_option_printed)
+        strm.EOL();
+      else
+        first_option_printed = true;
 
-    const OptionDefinition *opt_defs = GetDefinitions();
+      CommandArgumentType arg_type = opt_defs[i].argument_type;
 
-    std::string cur_opt_std_str (input.GetArgumentAtIndex(cursor_index));
-    cur_opt_std_str.erase(char_pos);
-    const char *cur_opt_str = cur_opt_std_str.c_str();
-
-    for (size_t i = 0; i < opt_element_vector.size(); i++)
-    {
-        int opt_pos = opt_element_vector[i].opt_pos;
-        int opt_arg_pos = opt_element_vector[i].opt_arg_pos;
-        int opt_defs_index = opt_element_vector[i].opt_defs_index;
-        if (opt_pos == cursor_index)
-        {
-            // We're completing the option itself.
-
-            if (opt_defs_index == OptionArgElement::eBareDash)
-            {
-                // We're completing a bare dash.  That means all options are open.
-                // FIXME: We should scan the other options provided and only complete options
-                // within the option group they belong to.
-                char opt_str[3] = {'-', 'a', '\0'};
-                
-                for (int j = 0 ; opt_defs[j].short_option != 0 ; j++)
-                {   
-                    opt_str[1] = opt_defs[j].short_option;
-                    matches.AppendString (opt_str);
-                }
-                return true;
-            }
-            else if (opt_defs_index == OptionArgElement::eBareDoubleDash)
-            {
-                std::string full_name ("--");
-                for (int j = 0 ; opt_defs[j].short_option != 0 ; j++)
-                {   
-                    full_name.erase(full_name.begin() + 2, full_name.end());
-                    full_name.append (opt_defs[j].long_option);
-                    matches.AppendString (full_name.c_str());
-                }
-                return true;
-            }
-            else if (opt_defs_index != OptionArgElement::eUnrecognizedArg)
-            {
-                // We recognized it, if it an incomplete long option, complete it anyway (getopt_long_only is
-                // happy with shortest unique string, but it's still a nice thing to do.)  Otherwise return
-                // The string so the upper level code will know this is a full match and add the " ".
-                if (cur_opt_str && strlen (cur_opt_str) > 2
-                    && cur_opt_str[0] == '-' && cur_opt_str[1] == '-'
-                    && strcmp (opt_defs[opt_defs_index].long_option, cur_opt_str) != 0)
-                {
-                        std::string full_name ("--");
-                        full_name.append (opt_defs[opt_defs_index].long_option);
-                        matches.AppendString(full_name.c_str());
-                        return true;
-                }
-                else
-                {
-                    matches.AppendString(input.GetArgumentAtIndex(cursor_index));
-                    return true;
-                }
-            }
-            else
-            {
-                // FIXME - not handling wrong options yet:
-                // Check to see if they are writing a long option & complete it.
-                // I think we will only get in here if the long option table has two elements
-                // that are not unique up to this point.  getopt_long_only does shortest unique match
-                // for long options already.
-
-                if (cur_opt_str && strlen (cur_opt_str) > 2
-                    && cur_opt_str[0] == '-' && cur_opt_str[1] == '-')
-                {
-                    for (int j = 0 ; opt_defs[j].short_option != 0 ; j++)
-                    {
-                        if (strstr(opt_defs[j].long_option, cur_opt_str + 2) == opt_defs[j].long_option)
-                        {
-                            std::string full_name ("--");
-                            full_name.append (opt_defs[j].long_option);
-                            // The options definitions table has duplicates because of the
-                            // way the grouping information is stored, so only add once.
-                            bool duplicate = false;
-                            for (size_t k = 0; k < matches.GetSize(); k++)
-                            {
-                                if (matches.GetStringAtIndex(k) == full_name)
-                                {
-                                    duplicate = true;
-                                    break;
-                                }
-                            }
-                            if (!duplicate)
-                                matches.AppendString(full_name.c_str());
-                        }
-                    }
-                }
-                return true;
-            }
+      StreamString arg_name_str;
+      arg_name_str.Printf("<%s>", CommandObject::GetArgumentName(arg_type));
 
+      strm.Indent();
+      if (opt_defs[i].short_option && isprint8(opt_defs[i].short_option)) {
+        PrintOption(opt_defs[i], eDisplayShortOption, nullptr, nullptr, false,
+                    strm);
+        PrintOption(opt_defs[i], eDisplayLongOption, " ( ", " )", false, strm);
+      } else {
+        // Short option is not printable, just print long option
+        PrintOption(opt_defs[i], eDisplayLongOption, nullptr, nullptr, false,
+                    strm);
+      }
+      strm.EOL();
 
-        }
-        else if (opt_arg_pos == cursor_index)
-        {
-            // Okay the cursor is on the completion of an argument.
-            // See if it has a completion, otherwise return no matches.
-
-            if (opt_defs_index != -1)
-            {
-                HandleOptionArgumentCompletion (input,
-                                                cursor_index,
-                                                strlen (input.GetArgumentAtIndex(cursor_index)),
-                                                opt_element_vector,
-                                                i,
-                                                match_start_point,
-                                                max_return_elements,
-                                                interpreter,
-                                                word_complete,
-                                                matches);
-                return true;
-            }
-            else
-            {
-                // No completion callback means no completions...
-                return true;
-            }
+      strm.IndentMore(5);
 
+      if (opt_defs[i].usage_text)
+        OutputFormattedUsageText(strm, opt_defs[i], screen_width);
+      if (opt_defs[i].enum_values != nullptr) {
+        strm.Indent();
+        strm.Printf("Values: ");
+        for (int k = 0; opt_defs[i].enum_values[k].string_value != nullptr;
+             k++) {
+          if (k == 0)
+            strm.Printf("%s", opt_defs[i].enum_values[k].string_value);
+          else
+            strm.Printf(" | %s", opt_defs[i].enum_values[k].string_value);
         }
-        else
-        {
-            // Not the last element, keep going.
-            continue;
-        }
+        strm.EOL();
+      }
+      strm.IndentLess(5);
     }
-    return false;
-}
+  }
 
-bool
-Options::HandleOptionArgumentCompletion
-(
-    Args &input,
-    int cursor_index,
-    int char_pos,
-    OptionElementVector &opt_element_vector,
-    int opt_element_index,
-    int match_start_point,
-    int max_return_elements,
-    CommandInterpreter &interpreter,
-    bool &word_complete,
-    lldb_private::StringList &matches
-)
-{
-    const OptionDefinition *opt_defs = GetDefinitions();
-    std::unique_ptr<SearchFilter> filter_ap;
+  // Restore the indent level
+  strm.SetIndentLevel(save_indent_level);
+}
 
-    int opt_arg_pos = opt_element_vector[opt_element_index].opt_arg_pos;
-    int opt_defs_index = opt_element_vector[opt_element_index].opt_defs_index;
-    
-    // See if this is an enumeration type option, and if so complete it here:
-    
-    OptionEnumValueElement *enum_values = opt_defs[opt_defs_index].enum_values;
-    if (enum_values != nullptr)
-    {
-        bool return_value = false;
-        std::string match_string(input.GetArgumentAtIndex (opt_arg_pos), input.GetArgumentAtIndex (opt_arg_pos) + char_pos);
-        for (int i = 0; enum_values[i].string_value != nullptr; i++)
-        {
-            if (strstr(enum_values[i].string_value, match_string.c_str()) == enum_values[i].string_value)
-            {
-                matches.AppendString (enum_values[i].string_value);
-                return_value = true;
-            }
-        }
-        return return_value;
-    }
+// This function is called when we have been given a potentially incomplete set
+// of
+// options, such as when an alias has been defined (more options might be added
+// at
+// at the time the alias is invoked).  We need to verify that the options in the
+// set
+// m_seen_options are all part of a set that may be used together, but
+// m_seen_options
+// may be missing some of the "required" options.
 
-    // If this is a source file or symbol type completion, and  there is a
-    // -shlib option somewhere in the supplied arguments, then make a search filter
-    // for that shared library.
-    // FIXME: Do we want to also have an "OptionType" so we don't have to match string names?
-
-    uint32_t completion_mask = opt_defs[opt_defs_index].completion_type;
-    
-    if (completion_mask == 0)
-    {
-        lldb::CommandArgumentType option_arg_type = opt_defs[opt_defs_index].argument_type;
-        if (option_arg_type != eArgTypeNone)
-        {
-            const CommandObject::ArgumentTableEntry *arg_entry = CommandObject::FindArgumentDataByType (opt_defs[opt_defs_index].argument_type);
-            if (arg_entry)
-                completion_mask = arg_entry->completion_type;
-        }
-    }
+bool Options::VerifyPartialOptions(CommandReturnObject &result) {
+  bool options_are_valid = false;
 
-    if (completion_mask & CommandCompletions::eSourceFileCompletion
-        || completion_mask & CommandCompletions::eSymbolCompletion)
-    {
-        for (size_t i = 0; i < opt_element_vector.size(); i++)
-        {
-            int cur_defs_index = opt_element_vector[i].opt_defs_index;
-            
-            // trying to use <0 indices will definitely cause problems
-            if (cur_defs_index == OptionArgElement::eUnrecognizedArg ||
-                cur_defs_index == OptionArgElement::eBareDash ||
-                cur_defs_index == OptionArgElement::eBareDoubleDash)
-                continue;
-            
-            int cur_arg_pos    = opt_element_vector[i].opt_arg_pos;
-            const char *cur_opt_name = opt_defs[cur_defs_index].long_option;
-
-            // If this is the "shlib" option and there was an argument provided,
-            // restrict it to that shared library.
-            if (cur_opt_name && strcmp(cur_opt_name, "shlib") == 0 && cur_arg_pos != -1)
-            {
-                const char *module_name = input.GetArgumentAtIndex(cur_arg_pos);
-                if (module_name)
-                {
-                    FileSpec module_spec(module_name, false);
-                    lldb::TargetSP target_sp = interpreter.GetDebugger().GetSelectedTarget();
-                    // Search filters require a target...
-                    if (target_sp)
-                        filter_ap.reset (new SearchFilterByModule (target_sp, module_spec));
-                }
-                break;
-            }
-        }
+  int num_levels = GetRequiredOptions().size();
+  if (num_levels) {
+    for (int i = 0; i < num_levels && !options_are_valid; ++i) {
+      // In this case we are treating all options as optional rather than
+      // required.
+      // Therefore a set of options is correct if m_seen_options is a subset of
+      // the
+      // union of m_required_options and m_optional_options.
+      OptionSet union_set;
+      OptionsSetUnion(GetRequiredOptions()[i], GetOptionalOptions()[i],
+                      union_set);
+      if (IsASubset(m_seen_options, union_set))
+        options_are_valid = true;
     }
+  }
 
-    return CommandCompletions::InvokeCommonCompletionCallbacks (interpreter,
-                                                                completion_mask,
-                                                                input.GetArgumentAtIndex (opt_arg_pos),
-                                                                match_start_point,
-                                                                max_return_elements,
-                                                                filter_ap.get(),
-                                                                word_complete,
-                                                                matches);
-    
+  return options_are_valid;
 }
 
+bool Options::HandleOptionCompletion(
+    Args &input, OptionElementVector &opt_element_vector, int cursor_index,
+    int char_pos, int match_start_point, int max_return_elements,
+    CommandInterpreter &interpreter, bool &word_complete,
+    lldb_private::StringList &matches) {
+  word_complete = true;
+
+  // For now we just scan the completions to see if the cursor position is in
+  // an option or its argument.  Otherwise we'll call HandleArgumentCompletion.
+  // In the future we can use completion to validate options as well if we want.
+
+  const OptionDefinition *opt_defs = GetDefinitions();
+
+  std::string cur_opt_std_str(input.GetArgumentAtIndex(cursor_index));
+  cur_opt_std_str.erase(char_pos);
+  const char *cur_opt_str = cur_opt_std_str.c_str();
+
+  for (size_t i = 0; i < opt_element_vector.size(); i++) {
+    int opt_pos = opt_element_vector[i].opt_pos;
+    int opt_arg_pos = opt_element_vector[i].opt_arg_pos;
+    int opt_defs_index = opt_element_vector[i].opt_defs_index;
+    if (opt_pos == cursor_index) {
+      // We're completing the option itself.
+
+      if (opt_defs_index == OptionArgElement::eBareDash) {
+        // We're completing a bare dash.  That means all options are open.
+        // FIXME: We should scan the other options provided and only complete
+        // options
+        // within the option group they belong to.
+        char opt_str[3] = {'-', 'a', '\0'};
+
+        for (int j = 0; opt_defs[j].short_option != 0; j++) {
+          opt_str[1] = opt_defs[j].short_option;
+          matches.AppendString(opt_str);
+        }
+        return true;
+      } else if (opt_defs_index == OptionArgElement::eBareDoubleDash) {
+        std::string full_name("--");
+        for (int j = 0; opt_defs[j].short_option != 0; j++) {
+          full_name.erase(full_name.begin() + 2, full_name.end());
+          full_name.append(opt_defs[j].long_option);
+          matches.AppendString(full_name.c_str());
+        }
+        return true;
+      } else if (opt_defs_index != OptionArgElement::eUnrecognizedArg) {
+        // We recognized it, if it an incomplete long option, complete it anyway
+        // (getopt_long_only is
+        // happy with shortest unique string, but it's still a nice thing to
+        // do.)  Otherwise return
+        // The string so the upper level code will know this is a full match and
+        // add the " ".
+        if (cur_opt_str && strlen(cur_opt_str) > 2 && cur_opt_str[0] == '-' &&
+            cur_opt_str[1] == '-' &&
+            strcmp(opt_defs[opt_defs_index].long_option, cur_opt_str) != 0) {
+          std::string full_name("--");
+          full_name.append(opt_defs[opt_defs_index].long_option);
+          matches.AppendString(full_name.c_str());
+          return true;
+        } else {
+          matches.AppendString(input.GetArgumentAtIndex(cursor_index));
+          return true;
+        }
+      } else {
+        // FIXME - not handling wrong options yet:
+        // Check to see if they are writing a long option & complete it.
+        // I think we will only get in here if the long option table has two
+        // elements
+        // that are not unique up to this point.  getopt_long_only does shortest
+        // unique match
+        // for long options already.
+
+        if (cur_opt_str && strlen(cur_opt_str) > 2 && cur_opt_str[0] == '-' &&
+            cur_opt_str[1] == '-') {
+          for (int j = 0; opt_defs[j].short_option != 0; j++) {
+            if (strstr(opt_defs[j].long_option, cur_opt_str + 2) ==
+                opt_defs[j].long_option) {
+              std::string full_name("--");
+              full_name.append(opt_defs[j].long_option);
+              // The options definitions table has duplicates because of the
+              // way the grouping information is stored, so only add once.
+              bool duplicate = false;
+              for (size_t k = 0; k < matches.GetSize(); k++) {
+                if (matches.GetStringAtIndex(k) == full_name) {
+                  duplicate = true;
+                  break;
+                }
+              }
+              if (!duplicate)
+                matches.AppendString(full_name.c_str());
+            }
+          }
+        }
+        return true;
+      }
 
-void
-OptionGroupOptions::Append (OptionGroup* group)
-{
-    const OptionDefinition* group_option_defs = group->GetDefinitions ();
-    const uint32_t group_option_count = group->GetNumDefinitions();
-    for (uint32_t i=0; i<group_option_count; ++i)
-    {
-        m_option_infos.push_back (OptionInfo (group, i));
-        m_option_defs.push_back (group_option_defs[i]);
-    }
-}
+    } else if (opt_arg_pos == cursor_index) {
+      // Okay the cursor is on the completion of an argument.
+      // See if it has a completion, otherwise return no matches.
+
+      if (opt_defs_index != -1) {
+        HandleOptionArgumentCompletion(
+            input, cursor_index, strlen(input.GetArgumentAtIndex(cursor_index)),
+            opt_element_vector, i, match_start_point, max_return_elements,
+            interpreter, word_complete, matches);
+        return true;
+      } else {
+        // No completion callback means no completions...
+        return true;
+      }
 
-const OptionGroup*
-OptionGroupOptions::GetGroupWithOption (char short_opt)
-{
-    for (uint32_t i = 0; i < m_option_defs.size(); i++)
-    {
-        OptionDefinition opt_def = m_option_defs[i];
-        if (opt_def.short_option == short_opt)
-            return m_option_infos[i].option_group;
+    } else {
+      // Not the last element, keep going.
+      continue;
+    }
+  }
+  return false;
+}
+
+bool Options::HandleOptionArgumentCompletion(
+    Args &input, int cursor_index, int char_pos,
+    OptionElementVector &opt_element_vector, int opt_element_index,
+    int match_start_point, int max_return_elements,
+    CommandInterpreter &interpreter, bool &word_complete,
+    lldb_private::StringList &matches) {
+  const OptionDefinition *opt_defs = GetDefinitions();
+  std::unique_ptr<SearchFilter> filter_ap;
+
+  int opt_arg_pos = opt_element_vector[opt_element_index].opt_arg_pos;
+  int opt_defs_index = opt_element_vector[opt_element_index].opt_defs_index;
+
+  // See if this is an enumeration type option, and if so complete it here:
+
+  OptionEnumValueElement *enum_values = opt_defs[opt_defs_index].enum_values;
+  if (enum_values != nullptr) {
+    bool return_value = false;
+    std::string match_string(input.GetArgumentAtIndex(opt_arg_pos),
+                             input.GetArgumentAtIndex(opt_arg_pos) + char_pos);
+    for (int i = 0; enum_values[i].string_value != nullptr; i++) {
+      if (strstr(enum_values[i].string_value, match_string.c_str()) ==
+          enum_values[i].string_value) {
+        matches.AppendString(enum_values[i].string_value);
+        return_value = true;
+      }
     }
-    return nullptr;
-}
+    return return_value;
+  }
 
-void
-OptionGroupOptions::Append (OptionGroup* group, 
-                            uint32_t src_mask, 
-                            uint32_t dst_mask)
-{
-    const OptionDefinition* group_option_defs = group->GetDefinitions ();
-    const uint32_t group_option_count = group->GetNumDefinitions();
-    for (uint32_t i=0; i<group_option_count; ++i)
-    {
-        if (group_option_defs[i].usage_mask & src_mask)
-        {
-            m_option_infos.push_back (OptionInfo (group, i));
-            m_option_defs.push_back (group_option_defs[i]);
-            m_option_defs.back().usage_mask = dst_mask;
+  // If this is a source file or symbol type completion, and  there is a
+  // -shlib option somewhere in the supplied arguments, then make a search
+  // filter
+  // for that shared library.
+  // FIXME: Do we want to also have an "OptionType" so we don't have to match
+  // string names?
+
+  uint32_t completion_mask = opt_defs[opt_defs_index].completion_type;
+
+  if (completion_mask == 0) {
+    lldb::CommandArgumentType option_arg_type =
+        opt_defs[opt_defs_index].argument_type;
+    if (option_arg_type != eArgTypeNone) {
+      const CommandObject::ArgumentTableEntry *arg_entry =
+          CommandObject::FindArgumentDataByType(
+              opt_defs[opt_defs_index].argument_type);
+      if (arg_entry)
+        completion_mask = arg_entry->completion_type;
+    }
+  }
+
+  if (completion_mask & CommandCompletions::eSourceFileCompletion ||
+      completion_mask & CommandCompletions::eSymbolCompletion) {
+    for (size_t i = 0; i < opt_element_vector.size(); i++) {
+      int cur_defs_index = opt_element_vector[i].opt_defs_index;
+
+      // trying to use <0 indices will definitely cause problems
+      if (cur_defs_index == OptionArgElement::eUnrecognizedArg ||
+          cur_defs_index == OptionArgElement::eBareDash ||
+          cur_defs_index == OptionArgElement::eBareDoubleDash)
+        continue;
+
+      int cur_arg_pos = opt_element_vector[i].opt_arg_pos;
+      const char *cur_opt_name = opt_defs[cur_defs_index].long_option;
+
+      // If this is the "shlib" option and there was an argument provided,
+      // restrict it to that shared library.
+      if (cur_opt_name && strcmp(cur_opt_name, "shlib") == 0 &&
+          cur_arg_pos != -1) {
+        const char *module_name = input.GetArgumentAtIndex(cur_arg_pos);
+        if (module_name) {
+          FileSpec module_spec(module_name, false);
+          lldb::TargetSP target_sp =
+              interpreter.GetDebugger().GetSelectedTarget();
+          // Search filters require a target...
+          if (target_sp)
+            filter_ap.reset(new SearchFilterByModule(target_sp, module_spec));
         }
+        break;
+      }
     }
-}
+  }
 
-void
-OptionGroupOptions::Finalize ()
-{
-    m_did_finalize = true;
-    OptionDefinition empty_option_def = { 0, false, nullptr, 0, 0, nullptr, nullptr, 0, eArgTypeNone, nullptr };
-    m_option_defs.push_back (empty_option_def);
-}
-
-Error
-OptionGroupOptions::SetOptionValue (uint32_t option_idx,  
-                                    const char *option_value,
-                                    ExecutionContext *execution_context)
-{
-    // After calling OptionGroupOptions::Append(...), you must finalize the groups
-    // by calling OptionGroupOptions::Finlize()
-    assert (m_did_finalize);
-    assert (m_option_infos.size() + 1 == m_option_defs.size());
-    Error error;
-    if (option_idx < m_option_infos.size())
-    {
-        error = m_option_infos[option_idx].option_group->SetOptionValue (m_option_infos[option_idx].option_index,
-                                                                         option_value,
-                                                                         execution_context);
-        
-    }
-    else
-    {
-        error.SetErrorString ("invalid option index"); // Shouldn't happen...
-    }
-    return error;
-}
-
-void
-OptionGroupOptions::OptionParsingStarting (ExecutionContext *execution_context)
-{
-    std::set<OptionGroup*> group_set;
-    OptionInfos::iterator pos, end = m_option_infos.end();
-    for (pos = m_option_infos.begin(); pos != end; ++pos)
-    {
-        OptionGroup* group = pos->option_group;
-        if (group_set.find(group) == group_set.end())
-        {
-            group->OptionParsingStarting(execution_context);
-            group_set.insert(group);
-        }
-    }
-}
-Error
-OptionGroupOptions::OptionParsingFinished (ExecutionContext *execution_context)
-{
-    std::set<OptionGroup*> group_set;
-    Error error;
-    OptionInfos::iterator pos, end = m_option_infos.end();
-    for (pos = m_option_infos.begin(); pos != end; ++pos)
-    {
-        OptionGroup* group = pos->option_group;
-        if (group_set.find(group) == group_set.end())
-        {
-            error = group->OptionParsingFinished (execution_context);
-            group_set.insert(group);
-            if (error.Fail())
-                return error;
-        }
+  return CommandCompletions::InvokeCommonCompletionCallbacks(
+      interpreter, completion_mask, input.GetArgumentAtIndex(opt_arg_pos),
+      match_start_point, max_return_elements, filter_ap.get(), word_complete,
+      matches);
+}
+
+void OptionGroupOptions::Append(OptionGroup *group) {
+  const OptionDefinition *group_option_defs = group->GetDefinitions();
+  const uint32_t group_option_count = group->GetNumDefinitions();
+  for (uint32_t i = 0; i < group_option_count; ++i) {
+    m_option_infos.push_back(OptionInfo(group, i));
+    m_option_defs.push_back(group_option_defs[i]);
+  }
+}
+
+const OptionGroup *OptionGroupOptions::GetGroupWithOption(char short_opt) {
+  for (uint32_t i = 0; i < m_option_defs.size(); i++) {
+    OptionDefinition opt_def = m_option_defs[i];
+    if (opt_def.short_option == short_opt)
+      return m_option_infos[i].option_group;
+  }
+  return nullptr;
+}
+
+void OptionGroupOptions::Append(OptionGroup *group, uint32_t src_mask,
+                                uint32_t dst_mask) {
+  const OptionDefinition *group_option_defs = group->GetDefinitions();
+  const uint32_t group_option_count = group->GetNumDefinitions();
+  for (uint32_t i = 0; i < group_option_count; ++i) {
+    if (group_option_defs[i].usage_mask & src_mask) {
+      m_option_infos.push_back(OptionInfo(group, i));
+      m_option_defs.push_back(group_option_defs[i]);
+      m_option_defs.back().usage_mask = dst_mask;
+    }
+  }
+}
+
+void OptionGroupOptions::Finalize() {
+  m_did_finalize = true;
+  OptionDefinition empty_option_def = {
+      0, false, nullptr, 0, 0, nullptr, nullptr, 0, eArgTypeNone, nullptr};
+  m_option_defs.push_back(empty_option_def);
+}
+
+Error OptionGroupOptions::SetOptionValue(uint32_t option_idx,
+                                         const char *option_value,
+                                         ExecutionContext *execution_context) {
+  // After calling OptionGroupOptions::Append(...), you must finalize the groups
+  // by calling OptionGroupOptions::Finlize()
+  assert(m_did_finalize);
+  assert(m_option_infos.size() + 1 == m_option_defs.size());
+  Error error;
+  if (option_idx < m_option_infos.size()) {
+    error = m_option_infos[option_idx].option_group->SetOptionValue(
+        m_option_infos[option_idx].option_index, option_value,
+        execution_context);
+
+  } else {
+    error.SetErrorString("invalid option index"); // Shouldn't happen...
+  }
+  return error;
+}
+
+void OptionGroupOptions::OptionParsingStarting(
+    ExecutionContext *execution_context) {
+  std::set<OptionGroup *> group_set;
+  OptionInfos::iterator pos, end = m_option_infos.end();
+  for (pos = m_option_infos.begin(); pos != end; ++pos) {
+    OptionGroup *group = pos->option_group;
+    if (group_set.find(group) == group_set.end()) {
+      group->OptionParsingStarting(execution_context);
+      group_set.insert(group);
+    }
+  }
+}
+Error OptionGroupOptions::OptionParsingFinished(
+    ExecutionContext *execution_context) {
+  std::set<OptionGroup *> group_set;
+  Error error;
+  OptionInfos::iterator pos, end = m_option_infos.end();
+  for (pos = m_option_infos.begin(); pos != end; ++pos) {
+    OptionGroup *group = pos->option_group;
+    if (group_set.find(group) == group_set.end()) {
+      error = group->OptionParsingFinished(execution_context);
+      group_set.insert(group);
+      if (error.Fail())
+        return error;
     }
-    return error;
+  }
+  return error;
 }

Modified: lldb/trunk/source/Interpreter/Property.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/Property.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/Property.cpp (original)
+++ lldb/trunk/source/Interpreter/Property.cpp Tue Sep  6 15:57:50 2016
@@ -22,289 +22,280 @@
 using namespace lldb;
 using namespace lldb_private;
 
-Property::Property (const PropertyDefinition &definition) :
-    m_name (definition.name),
-    m_description (definition.description),
-    m_value_sp (),
-    m_is_global (definition.global)
-{
-    switch (definition.type)
+Property::Property(const PropertyDefinition &definition)
+    : m_name(definition.name), m_description(definition.description),
+      m_value_sp(), m_is_global(definition.global) {
+  switch (definition.type) {
+  case OptionValue::eTypeInvalid:
+  case OptionValue::eTypeProperties:
+    break;
+  case OptionValue::eTypeArch:
+    // "definition.default_uint_value" is not used
+    // "definition.default_cstr_value" as a string value that represents the
+    // default string value for the architecture/triple
+    m_value_sp.reset(new OptionValueArch(definition.default_cstr_value));
+    break;
+
+  case OptionValue::eTypeArgs:
+    // "definition.default_uint_value" is always a OptionValue::Type
+    m_value_sp.reset(new OptionValueArgs());
+    break;
+
+  case OptionValue::eTypeArray:
+    // "definition.default_uint_value" is always a OptionValue::Type
+    m_value_sp.reset(new OptionValueArray(OptionValue::ConvertTypeToMask(
+        (OptionValue::Type)definition.default_uint_value)));
+    break;
+
+  case OptionValue::eTypeBoolean:
+    // "definition.default_uint_value" is the default boolean value if
+    // "definition.default_cstr_value" is NULL, otherwise interpret
+    // "definition.default_cstr_value" as a string value that represents the
+    // default
+    // value.
+    if (definition.default_cstr_value)
+      m_value_sp.reset(new OptionValueBoolean(Args::StringToBoolean(
+          definition.default_cstr_value, false, nullptr)));
+    else
+      m_value_sp.reset(
+          new OptionValueBoolean(definition.default_uint_value != 0));
+    break;
+
+  case OptionValue::eTypeChar:
+    m_value_sp.reset(new OptionValueChar(
+        Args::StringToChar(definition.default_cstr_value, '\0', nullptr)));
+    break;
+
+  case OptionValue::eTypeDictionary:
+    // "definition.default_uint_value" is always a OptionValue::Type
+    m_value_sp.reset(new OptionValueDictionary(OptionValue::ConvertTypeToMask(
+        (OptionValue::Type)definition.default_uint_value)));
+    break;
+
+  case OptionValue::eTypeEnum:
+    // "definition.default_uint_value" is the default enumeration value if
+    // "definition.default_cstr_value" is NULL, otherwise interpret
+    // "definition.default_cstr_value" as a string value that represents the
+    // default
+    // value.
     {
-        case OptionValue::eTypeInvalid:
-        case OptionValue::eTypeProperties:
-            break;
-        case OptionValue::eTypeArch:
-            // "definition.default_uint_value" is not used
-            // "definition.default_cstr_value" as a string value that represents the default string value for the architecture/triple
-            m_value_sp.reset (new OptionValueArch(definition.default_cstr_value));
-            break;
-            
-        case OptionValue::eTypeArgs:
-            // "definition.default_uint_value" is always a OptionValue::Type
-            m_value_sp.reset (new OptionValueArgs());
-            break;
-            
-        case OptionValue::eTypeArray:
-            // "definition.default_uint_value" is always a OptionValue::Type
-            m_value_sp.reset (new OptionValueArray(OptionValue::ConvertTypeToMask((OptionValue::Type)definition.default_uint_value)));
-            break;
-            
-        case OptionValue::eTypeBoolean:
-            // "definition.default_uint_value" is the default boolean value if
-            // "definition.default_cstr_value" is NULL, otherwise interpret
-            // "definition.default_cstr_value" as a string value that represents the default
-            // value.
-            if (definition.default_cstr_value)
-                m_value_sp.reset (new OptionValueBoolean(Args::StringToBoolean (definition.default_cstr_value, false, nullptr)));
-            else
-                m_value_sp.reset (new OptionValueBoolean(definition.default_uint_value != 0));
-            break;
-
-        case OptionValue::eTypeChar:
-            m_value_sp.reset(new OptionValueChar(Args::StringToChar(definition.default_cstr_value, '\0', nullptr)));
-            break;
-
-        case OptionValue::eTypeDictionary:
-            // "definition.default_uint_value" is always a OptionValue::Type
-            m_value_sp.reset (new OptionValueDictionary(OptionValue::ConvertTypeToMask((OptionValue::Type)definition.default_uint_value)));
-            break;
-            
-        case OptionValue::eTypeEnum:
-            // "definition.default_uint_value" is the default enumeration value if
-            // "definition.default_cstr_value" is NULL, otherwise interpret
-            // "definition.default_cstr_value" as a string value that represents the default
-            // value.
-        {
-            OptionValueEnumeration *enum_value = new OptionValueEnumeration(definition.enum_values, definition.default_uint_value);
-            m_value_sp.reset (enum_value);
-            if (definition.default_cstr_value)
-            {
-                if (enum_value->SetValueFromString(definition.default_cstr_value).Success())
-                {
-                    enum_value->SetDefaultValue(enum_value->GetCurrentValue());
-                    // Call Clear() since we don't want the value to appear as
-                    // having been set since we called SetValueFromString() above.
-                    // Clear will set the current value to the default and clear
-                    // the boolean that says that the value has been set.
-                    enum_value->Clear();
-                }
-            }
+      OptionValueEnumeration *enum_value = new OptionValueEnumeration(
+          definition.enum_values, definition.default_uint_value);
+      m_value_sp.reset(enum_value);
+      if (definition.default_cstr_value) {
+        if (enum_value->SetValueFromString(definition.default_cstr_value)
+                .Success()) {
+          enum_value->SetDefaultValue(enum_value->GetCurrentValue());
+          // Call Clear() since we don't want the value to appear as
+          // having been set since we called SetValueFromString() above.
+          // Clear will set the current value to the default and clear
+          // the boolean that says that the value has been set.
+          enum_value->Clear();
         }
-            break;
-            
-        case OptionValue::eTypeFileSpec:
-        {
-            // "definition.default_uint_value" represents if the "definition.default_cstr_value" should
-            // be resolved or not
-            const bool resolve = definition.default_uint_value != 0;
-            m_value_sp.reset (new OptionValueFileSpec(FileSpec(definition.default_cstr_value, resolve), resolve));
-            break;
-        }
-            
-        case OptionValue::eTypeFileSpecList:
-            // "definition.default_uint_value" is not used for a OptionValue::eTypeFileSpecList
-            m_value_sp.reset (new OptionValueFileSpecList());
-            break;
-            
-        case OptionValue::eTypeFormat:
-            // "definition.default_uint_value" is the default format enumeration value if
-            // "definition.default_cstr_value" is NULL, otherwise interpret
-            // "definition.default_cstr_value" as a string value that represents the default
-            // value.
-            {
-                Format new_format = eFormatInvalid;
-                if (definition.default_cstr_value)
-                    Args::StringToFormat (definition.default_cstr_value, new_format, nullptr);
-                else
-                    new_format = (Format)definition.default_uint_value;
-                m_value_sp.reset (new OptionValueFormat(new_format));
-            }
-            break;
-            
-        case OptionValue::eTypeLanguage:
-            // "definition.default_uint_value" is the default language enumeration value if
-            // "definition.default_cstr_value" is NULL, otherwise interpret
-            // "definition.default_cstr_value" as a string value that represents the default
-            // value.
-        {
-            LanguageType new_lang = eLanguageTypeUnknown;
-            if (definition.default_cstr_value)
-                Language::GetLanguageTypeFromString(definition.default_cstr_value);
-            else
-                new_lang = (LanguageType)definition.default_uint_value;
-            m_value_sp.reset (new OptionValueLanguage(new_lang));
-        }
-            break;
-            
-        case OptionValue::eTypeFormatEntity:
-            // "definition.default_cstr_value" as a string value that represents the default
-            m_value_sp.reset (new OptionValueFormatEntity(definition.default_cstr_value));
-            break;
-
-        case OptionValue::eTypePathMap:
-            // "definition.default_uint_value" tells us if notifications should occur for
-            // path mappings
-            m_value_sp.reset (new OptionValuePathMappings(definition.default_uint_value != 0));
-            break;
-            
-        case OptionValue::eTypeRegex:
-            // "definition.default_uint_value" is used to the regular expression flags
-            // "definition.default_cstr_value" the default regular expression value
-            // value.
-            m_value_sp.reset (new OptionValueRegex(definition.default_cstr_value));
-            break;
-            
-        case OptionValue::eTypeSInt64:
-            // "definition.default_uint_value" is the default integer value if
-            // "definition.default_cstr_value" is NULL, otherwise interpret
-            // "definition.default_cstr_value" as a string value that represents the default
-            // value.
-            m_value_sp.reset (new OptionValueSInt64(definition.default_cstr_value ? StringConvert::ToSInt64 (definition.default_cstr_value) : definition.default_uint_value));
-            break;
-            
-        case OptionValue::eTypeUInt64:
-            // "definition.default_uint_value" is the default unsigned integer value if
-            // "definition.default_cstr_value" is NULL, otherwise interpret
-            // "definition.default_cstr_value" as a string value that represents the default
-            // value.
-            m_value_sp.reset (new OptionValueUInt64(definition.default_cstr_value ? StringConvert::ToUInt64 (definition.default_cstr_value) : definition.default_uint_value));
-            break;
-            
-        case OptionValue::eTypeUUID:
-            // "definition.default_uint_value" is not used for a OptionValue::eTypeUUID
-            // "definition.default_cstr_value" can contain a default UUID value
-            {
-                UUID uuid;
-                if (definition.default_cstr_value)
-                    uuid.SetFromCString (definition.default_cstr_value);
-                m_value_sp.reset (new OptionValueUUID(uuid));
-            }
-            break;
-            
-        case OptionValue::eTypeString:
-            // "definition.default_uint_value" can contain the string option flags OR'ed together
-            // "definition.default_cstr_value" can contain a default string value
-            {
-                OptionValueString *string_value = new OptionValueString(definition.default_cstr_value);
-                if (definition.default_uint_value != 0)
-                    string_value->GetOptions().Reset(definition.default_uint_value);
-                m_value_sp.reset (string_value);
-            }
-            break;
+      }
     }
-}
+    break;
 
-Property::Property (const ConstString &name,
-                    const ConstString &desc,
-                    bool is_global,
-                    const lldb::OptionValueSP &value_sp) :
-    m_name (name),
-    m_description (desc),
-    m_value_sp (value_sp),
-    m_is_global (is_global)
-{
-}
+  case OptionValue::eTypeFileSpec: {
+    // "definition.default_uint_value" represents if the
+    // "definition.default_cstr_value" should
+    // be resolved or not
+    const bool resolve = definition.default_uint_value != 0;
+    m_value_sp.reset(new OptionValueFileSpec(
+        FileSpec(definition.default_cstr_value, resolve), resolve));
+    break;
+  }
+
+  case OptionValue::eTypeFileSpecList:
+    // "definition.default_uint_value" is not used for a
+    // OptionValue::eTypeFileSpecList
+    m_value_sp.reset(new OptionValueFileSpecList());
+    break;
+
+  case OptionValue::eTypeFormat:
+    // "definition.default_uint_value" is the default format enumeration value
+    // if
+    // "definition.default_cstr_value" is NULL, otherwise interpret
+    // "definition.default_cstr_value" as a string value that represents the
+    // default
+    // value.
+    {
+      Format new_format = eFormatInvalid;
+      if (definition.default_cstr_value)
+        Args::StringToFormat(definition.default_cstr_value, new_format,
+                             nullptr);
+      else
+        new_format = (Format)definition.default_uint_value;
+      m_value_sp.reset(new OptionValueFormat(new_format));
+    }
+    break;
 
-bool
-Property::DumpQualifiedName(Stream &strm) const
-{
-    if (m_name)
+  case OptionValue::eTypeLanguage:
+    // "definition.default_uint_value" is the default language enumeration value
+    // if
+    // "definition.default_cstr_value" is NULL, otherwise interpret
+    // "definition.default_cstr_value" as a string value that represents the
+    // default
+    // value.
     {
-        if (m_value_sp->DumpQualifiedName(strm))
-            strm.PutChar('.');
-        strm << m_name;
-        return true;
+      LanguageType new_lang = eLanguageTypeUnknown;
+      if (definition.default_cstr_value)
+        Language::GetLanguageTypeFromString(definition.default_cstr_value);
+      else
+        new_lang = (LanguageType)definition.default_uint_value;
+      m_value_sp.reset(new OptionValueLanguage(new_lang));
     }
-    return false;
-}
+    break;
 
+  case OptionValue::eTypeFormatEntity:
+    // "definition.default_cstr_value" as a string value that represents the
+    // default
+    m_value_sp.reset(
+        new OptionValueFormatEntity(definition.default_cstr_value));
+    break;
+
+  case OptionValue::eTypePathMap:
+    // "definition.default_uint_value" tells us if notifications should occur
+    // for
+    // path mappings
+    m_value_sp.reset(
+        new OptionValuePathMappings(definition.default_uint_value != 0));
+    break;
+
+  case OptionValue::eTypeRegex:
+    // "definition.default_uint_value" is used to the regular expression flags
+    // "definition.default_cstr_value" the default regular expression value
+    // value.
+    m_value_sp.reset(new OptionValueRegex(definition.default_cstr_value));
+    break;
+
+  case OptionValue::eTypeSInt64:
+    // "definition.default_uint_value" is the default integer value if
+    // "definition.default_cstr_value" is NULL, otherwise interpret
+    // "definition.default_cstr_value" as a string value that represents the
+    // default
+    // value.
+    m_value_sp.reset(new OptionValueSInt64(
+        definition.default_cstr_value
+            ? StringConvert::ToSInt64(definition.default_cstr_value)
+            : definition.default_uint_value));
+    break;
+
+  case OptionValue::eTypeUInt64:
+    // "definition.default_uint_value" is the default unsigned integer value if
+    // "definition.default_cstr_value" is NULL, otherwise interpret
+    // "definition.default_cstr_value" as a string value that represents the
+    // default
+    // value.
+    m_value_sp.reset(new OptionValueUInt64(
+        definition.default_cstr_value
+            ? StringConvert::ToUInt64(definition.default_cstr_value)
+            : definition.default_uint_value));
+    break;
+
+  case OptionValue::eTypeUUID:
+    // "definition.default_uint_value" is not used for a OptionValue::eTypeUUID
+    // "definition.default_cstr_value" can contain a default UUID value
+    {
+      UUID uuid;
+      if (definition.default_cstr_value)
+        uuid.SetFromCString(definition.default_cstr_value);
+      m_value_sp.reset(new OptionValueUUID(uuid));
+    }
+    break;
 
-void
-Property::Dump (const ExecutionContext *exe_ctx, Stream &strm, uint32_t dump_mask) const
-{
-    if (m_value_sp)
+  case OptionValue::eTypeString:
+    // "definition.default_uint_value" can contain the string option flags OR'ed
+    // together
+    // "definition.default_cstr_value" can contain a default string value
     {
-        const bool dump_desc = dump_mask & OptionValue::eDumpOptionDescription;
-        const bool transparent = m_value_sp->ValueIsTransparent ();
-        if (dump_desc || !transparent)
-        {
-            if ((dump_mask & OptionValue::eDumpOptionName) && m_name)
-            {
-                DumpQualifiedName(strm);
-                if (dump_mask & ~OptionValue::eDumpOptionName)
-                    strm.PutChar(' ');
-            }
-        }
-        if (dump_desc)
-        {
-            const char *desc = GetDescription();
-            if (desc)
-                strm.Printf ("-- %s", desc);
-            
-            if (transparent && (dump_mask == (OptionValue::eDumpOptionName | OptionValue::eDumpOptionDescription)))
-                strm.EOL();
-        }
-        m_value_sp->DumpValue(exe_ctx, strm, dump_mask);
+      OptionValueString *string_value =
+          new OptionValueString(definition.default_cstr_value);
+      if (definition.default_uint_value != 0)
+        string_value->GetOptions().Reset(definition.default_uint_value);
+      m_value_sp.reset(string_value);
     }
+    break;
+  }
 }
 
+Property::Property(const ConstString &name, const ConstString &desc,
+                   bool is_global, const lldb::OptionValueSP &value_sp)
+    : m_name(name), m_description(desc), m_value_sp(value_sp),
+      m_is_global(is_global) {}
+
+bool Property::DumpQualifiedName(Stream &strm) const {
+  if (m_name) {
+    if (m_value_sp->DumpQualifiedName(strm))
+      strm.PutChar('.');
+    strm << m_name;
+    return true;
+  }
+  return false;
+}
 
-void
-Property::DumpDescription (CommandInterpreter &interpreter,
-                           Stream &strm,
-                           uint32_t output_width,
-                           bool display_qualified_name) const
-{
-    if (m_value_sp)
-    {
-        const char *desc = GetDescription();
+void Property::Dump(const ExecutionContext *exe_ctx, Stream &strm,
+                    uint32_t dump_mask) const {
+  if (m_value_sp) {
+    const bool dump_desc = dump_mask & OptionValue::eDumpOptionDescription;
+    const bool transparent = m_value_sp->ValueIsTransparent();
+    if (dump_desc || !transparent) {
+      if ((dump_mask & OptionValue::eDumpOptionName) && m_name) {
+        DumpQualifiedName(strm);
+        if (dump_mask & ~OptionValue::eDumpOptionName)
+          strm.PutChar(' ');
+      }
+    }
+    if (dump_desc) {
+      const char *desc = GetDescription();
+      if (desc)
+        strm.Printf("-- %s", desc);
+
+      if (transparent && (dump_mask == (OptionValue::eDumpOptionName |
+                                        OptionValue::eDumpOptionDescription)))
+        strm.EOL();
+    }
+    m_value_sp->DumpValue(exe_ctx, strm, dump_mask);
+  }
+}
 
-        if (desc)
-        {
+void Property::DumpDescription(CommandInterpreter &interpreter, Stream &strm,
+                               uint32_t output_width,
+                               bool display_qualified_name) const {
+  if (m_value_sp) {
+    const char *desc = GetDescription();
+
+    if (desc) {
+      StreamString qualified_name;
+      const OptionValueProperties *sub_properties =
+          m_value_sp->GetAsProperties();
+      if (sub_properties) {
+        strm.EOL();
+
+        if (m_value_sp->DumpQualifiedName(qualified_name))
+          strm.Printf("'%s' variables:\n\n",
+                      qualified_name.GetString().c_str());
+        sub_properties->DumpAllDescriptions(interpreter, strm);
+      } else {
+        if (desc) {
+          if (display_qualified_name) {
             StreamString qualified_name;
-            const OptionValueProperties *sub_properties = m_value_sp->GetAsProperties();
-            if (sub_properties)
-            {
-                strm.EOL();
-                
-                if (m_value_sp->DumpQualifiedName(qualified_name))
-                    strm.Printf("'%s' variables:\n\n", qualified_name.GetString().c_str());
-                sub_properties->DumpAllDescriptions(interpreter, strm);
-            }
-            else
-            {
-                if (desc)
-                {
-                    if (display_qualified_name)
-                    {
-                        StreamString qualified_name;
-                        DumpQualifiedName(qualified_name);
-                        interpreter.OutputFormattedHelpText (strm,
-                                                             qualified_name.GetString().c_str(),
-                                                             "--",
-                                                             desc,
-                                                             output_width);
-                    }
-                    else
-                    {
-                        interpreter.OutputFormattedHelpText (strm,
-                                                             m_name.GetCString(),
-                                                             "--",
-                                                             desc,
-                                                             output_width);
-                    }
-                }
-            }
+            DumpQualifiedName(qualified_name);
+            interpreter.OutputFormattedHelpText(
+                strm, qualified_name.GetString().c_str(), "--", desc,
+                output_width);
+          } else {
+            interpreter.OutputFormattedHelpText(strm, m_name.GetCString(), "--",
+                                                desc, output_width);
+          }
         }
+      }
     }
+  }
 }
 
-
-void
-Property::SetValueChangedCallback (OptionValueChangedCallback callback, void *baton)
-{
-    if (m_value_sp)
-        m_value_sp->SetValueChangedCallback (callback, baton);
+void Property::SetValueChangedCallback(OptionValueChangedCallback callback,
+                                       void *baton) {
+  if (m_value_sp)
+    m_value_sp->SetValueChangedCallback(callback, baton);
 }
-
-

Modified: lldb/trunk/source/Interpreter/ScriptInterpreter.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/ScriptInterpreter.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/ScriptInterpreter.cpp (original)
+++ lldb/trunk/source/Interpreter/ScriptInterpreter.cpp Tue Sep  6 15:57:50 2016
@@ -9,9 +9,9 @@
 
 #include "lldb/Interpreter/ScriptInterpreter.h"
 
-#include <string>
-#include <stdlib.h>
 #include <stdio.h>
+#include <stdlib.h>
+#include <string>
 
 #include "lldb/Core/Error.h"
 #include "lldb/Core/Stream.h"
@@ -22,88 +22,68 @@
 using namespace lldb;
 using namespace lldb_private;
 
-ScriptInterpreter::ScriptInterpreter (CommandInterpreter &interpreter, lldb::ScriptLanguage script_lang) :
-    m_interpreter (interpreter),
-    m_script_lang (script_lang)
-{
+ScriptInterpreter::ScriptInterpreter(CommandInterpreter &interpreter,
+                                     lldb::ScriptLanguage script_lang)
+    : m_interpreter(interpreter), m_script_lang(script_lang) {}
+
+ScriptInterpreter::~ScriptInterpreter() {}
+
+CommandInterpreter &ScriptInterpreter::GetCommandInterpreter() {
+  return m_interpreter;
+}
+
+void ScriptInterpreter::CollectDataForBreakpointCommandCallback(
+    std::vector<BreakpointOptions *> &bp_options_vec,
+    CommandReturnObject &result) {
+  result.SetStatus(eReturnStatusFailed);
+  result.AppendError(
+      "ScriptInterpreter::GetScriptCommands(StringList &) is not implemented.");
 }
 
-ScriptInterpreter::~ScriptInterpreter ()
-{
+void ScriptInterpreter::CollectDataForWatchpointCommandCallback(
+    WatchpointOptions *bp_options, CommandReturnObject &result) {
+  result.SetStatus(eReturnStatusFailed);
+  result.AppendError(
+      "ScriptInterpreter::GetScriptCommands(StringList &) is not implemented.");
 }
 
-CommandInterpreter &
-ScriptInterpreter::GetCommandInterpreter ()
-{
-    return m_interpreter;
+std::string ScriptInterpreter::LanguageToString(lldb::ScriptLanguage language) {
+  std::string return_value;
+
+  switch (language) {
+  case eScriptLanguageNone:
+    return_value = "None";
+    break;
+  case eScriptLanguagePython:
+    return_value = "Python";
+    break;
+  }
+
+  return return_value;
+}
+
+Error ScriptInterpreter::SetBreakpointCommandCallback(
+    std::vector<BreakpointOptions *> &bp_options_vec,
+    const char *callback_text) {
+  Error return_error;
+  for (BreakpointOptions *bp_options : bp_options_vec) {
+    return_error = SetBreakpointCommandCallback(bp_options, callback_text);
+    if (return_error.Success())
+      break;
+  }
+  return return_error;
 }
 
-void 
-ScriptInterpreter::CollectDataForBreakpointCommandCallback 
-(
+void ScriptInterpreter::SetBreakpointCommandCallbackFunction(
     std::vector<BreakpointOptions *> &bp_options_vec,
-    CommandReturnObject &result
-)
-{
-    result.SetStatus (eReturnStatusFailed);
-    result.AppendError ("ScriptInterpreter::GetScriptCommands(StringList &) is not implemented.");
-}
-
-void 
-ScriptInterpreter::CollectDataForWatchpointCommandCallback 
-(
-    WatchpointOptions *bp_options,
-    CommandReturnObject &result
-)
-{
-    result.SetStatus (eReturnStatusFailed);
-    result.AppendError ("ScriptInterpreter::GetScriptCommands(StringList &) is not implemented.");
-}
-
-std::string
-ScriptInterpreter::LanguageToString (lldb::ScriptLanguage language)
-{
-    std::string return_value;
-
-    switch (language)
-    {
-        case eScriptLanguageNone:
-            return_value = "None";
-            break;
-        case eScriptLanguagePython:
-            return_value = "Python";
-            break;
-    }
-
-    return return_value;
-}
-
-Error
-ScriptInterpreter::SetBreakpointCommandCallback (std::vector<BreakpointOptions *> &bp_options_vec,
-                                                 const char *callback_text)
-{
-    Error return_error;
-    for (BreakpointOptions *bp_options : bp_options_vec)
-    {
-        return_error = SetBreakpointCommandCallback(bp_options, callback_text);
-        if (return_error.Success())
-            break;
-    }
-    return return_error;
-}
-
-void
-ScriptInterpreter::SetBreakpointCommandCallbackFunction (std::vector<BreakpointOptions *> &bp_options_vec,
-                                                         const char *function_name)
-{
-    for (BreakpointOptions *bp_options : bp_options_vec)
-    {
-        SetBreakpointCommandCallbackFunction(bp_options, function_name);
-    }
+    const char *function_name) {
+  for (BreakpointOptions *bp_options : bp_options_vec) {
+    SetBreakpointCommandCallbackFunction(bp_options, function_name);
+  }
 }
 
 std::unique_ptr<ScriptInterpreterLocker>
-ScriptInterpreter::AcquireInterpreterLock ()
-{
-    return std::unique_ptr<ScriptInterpreterLocker>(new ScriptInterpreterLocker());
+ScriptInterpreter::AcquireInterpreterLock() {
+  return std::unique_ptr<ScriptInterpreterLocker>(
+      new ScriptInterpreterLocker());
 }

Modified: lldb/trunk/source/Interpreter/embedded_interpreter.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/embedded_interpreter.py?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/embedded_interpreter.py (original)
+++ lldb/trunk/source/Interpreter/embedded_interpreter.py Tue Sep  6 15:57:50 2016
@@ -25,16 +25,21 @@ else:
 
 g_builtin_override_called = False
 
+
 class LLDBQuitter(object):
+
     def __init__(self, name):
         self.name = name
+
     def __repr__(self):
         self()
+
     def __call__(self, code=None):
         global g_builtin_override_called
         g_builtin_override_called = True
         raise SystemExit(-1)
 
+
 def setquit():
     '''Redefine builtin functions 'quit()' and 'exit()' to print a message and raise an EOFError exception.'''
     # This function will be called prior to each interactive
@@ -56,21 +61,25 @@ g_run_one_line_str = None
 
 def get_terminal_size(fd):
     try:
-        import fcntl, termios, struct
+        import fcntl
+        import termios
+        import struct
         hw = struct.unpack('hh', fcntl.ioctl(fd, termios.TIOCGWINSZ, '1234'))
     except:
-        hw = (0,0)
+        hw = (0, 0)
     return hw
 
+
 def readfunc_stdio(prompt):
     sys.stdout.write(prompt)
     return sys.stdin.readline().rstrip()
 
-def run_python_interpreter (local_dict):
+
+def run_python_interpreter(local_dict):
     # Pass in the dictionary, for continuity from one session to the next.
     setquit()
     try:
-        fd = sys.stdin.fileno();
+        fd = sys.stdin.fileno()
         interacted = False
         if get_terminal_size(fd)[1] == 0:
             try:
@@ -83,33 +92,42 @@ def run_python_interpreter (local_dict):
                     try:
                         termios.tcsetattr(fd, termios.TCSADRAIN, new)
                         interacted = True
-                        code.interact(banner="Python Interactive Interpreter. To exit, type 'quit()', 'exit()'.", readfunc=readfunc_stdio, local=local_dict)
+                        code.interact(
+                            banner="Python Interactive Interpreter. To exit, type 'quit()', 'exit()'.",
+                            readfunc=readfunc_stdio,
+                            local=local_dict)
                     finally:
                         termios.tcsetattr(fd, termios.TCSADRAIN, old)
             except:
                 pass
             # Don't need to turn off echoing
             if not interacted:
-                code.interact(banner="Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D.", readfunc=readfunc_stdio, local=local_dict)
+                code.interact(
+                    banner="Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D.",
+                    readfunc=readfunc_stdio,
+                    local=local_dict)
         else:
             # We have a real interactive terminal
-            code.interact(banner="Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D.", local=local_dict)
+            code.interact(
+                banner="Python Interactive Interpreter. To exit, type 'quit()', 'exit()' or Ctrl-D.",
+                local=local_dict)
     except SystemExit as e:
         global g_builtin_override_called
         if not g_builtin_override_called:
-            print('Script exited with %s' %(e))
+            print('Script exited with %s' % (e))
+
 
-def run_one_line (local_dict, input_string):
+def run_one_line(local_dict, input_string):
     global g_run_one_line_str
     setquit()
     try:
-        repl = code.InteractiveConsole(local_dict);
+        repl = code.InteractiveConsole(local_dict)
         if input_string:
-            repl.runsource (input_string)
+            repl.runsource(input_string)
         elif g_run_one_line_str:
-            repl.runsource (g_run_one_line_str)
+            repl.runsource(g_run_one_line_str)
 
     except SystemExit as e:
         global g_builtin_override_called
         if not g_builtin_override_called:
-            print('Script exited with %s' %(e))
+            print('Script exited with %s' % (e))

Modified: lldb/trunk/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp (original)
+++ lldb/trunk/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.cpp Tue Sep  6 15:57:50 2016
@@ -32,710 +32,1831 @@
 #include "lldb/Target/Target.h"
 #include "lldb/Target/Thread.h"
 
+#include "Plugins/Process/Utility/ARMDefines.h"
 #include "Utility/ARM_DWARF_Registers.h"
 #include "Utility/ARM_ehframe_Registers.h"
-#include "Plugins/Process/Utility/ARMDefines.h"
 
 using namespace lldb;
 using namespace lldb_private;
 
-static RegisterInfo g_register_infos[] =
-{
-    //  NAME       ALT       SZ OFF ENCODING         FORMAT          EH_FRAME                DWARF               GENERIC                     PROCESS PLUGIN          LLDB NATIVE
-    //  ========== =======   == === =============    ============    ======================= =================== =========================== ======================= ======================
-    {   "r0",      "arg1",    4, 0, eEncodingUint    , eFormatHex,   { ehframe_r0,           dwarf_r0,           LLDB_REGNUM_GENERIC_ARG1,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r1",      "arg2",    4, 0, eEncodingUint    , eFormatHex,   { ehframe_r1,           dwarf_r1,           LLDB_REGNUM_GENERIC_ARG2,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r2",      "arg3",    4, 0, eEncodingUint    , eFormatHex,   { ehframe_r2,           dwarf_r2,           LLDB_REGNUM_GENERIC_ARG3,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r3",      "arg4",    4, 0, eEncodingUint    , eFormatHex,   { ehframe_r3,           dwarf_r3,           LLDB_REGNUM_GENERIC_ARG4,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r4",      nullptr,   4, 0, eEncodingUint    , eFormatHex,   { ehframe_r4,           dwarf_r4,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r5",      nullptr,   4, 0, eEncodingUint    , eFormatHex,   { ehframe_r5,           dwarf_r5,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r6",      nullptr,   4, 0, eEncodingUint    , eFormatHex,   { ehframe_r6,           dwarf_r6,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r7",      nullptr,   4, 0, eEncodingUint    , eFormatHex,   { ehframe_r7,           dwarf_r7,           LLDB_REGNUM_GENERIC_FP,     LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r8",      nullptr,   4, 0, eEncodingUint    , eFormatHex,   { ehframe_r8,           dwarf_r8,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r9",      nullptr,   4, 0, eEncodingUint    , eFormatHex,   { ehframe_r9,           dwarf_r9,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r10",     nullptr,   4, 0, eEncodingUint    , eFormatHex,   { ehframe_r10,          dwarf_r10,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r11",     nullptr,   4, 0, eEncodingUint    , eFormatHex,   { ehframe_r11,          dwarf_r11,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r12",     nullptr,   4, 0, eEncodingUint    , eFormatHex,   { ehframe_r12,          dwarf_r12,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "sp",      "r13",     4, 0, eEncodingUint    , eFormatHex,   { ehframe_sp,           dwarf_sp,           LLDB_REGNUM_GENERIC_SP,     LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "lr",      "r14",     4, 0, eEncodingUint    , eFormatHex,   { ehframe_lr,           dwarf_lr,           LLDB_REGNUM_GENERIC_RA,     LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "pc",      "r15",     4, 0, eEncodingUint    , eFormatHex,   { ehframe_pc,           dwarf_pc,           LLDB_REGNUM_GENERIC_PC,     LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "cpsr",    "psr",     4, 0, eEncodingUint    , eFormatHex,   { ehframe_cpsr,         dwarf_cpsr,         LLDB_REGNUM_GENERIC_FLAGS,  LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s0",      nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s0,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s1",      nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s1,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s2",      nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s2,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s3",      nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s3,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s4",      nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s4,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s5",      nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s5,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s6",      nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s6,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s7",      nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s7,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s8",      nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s8,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s9",      nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s9,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s10",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s10,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s11",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s11,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s12",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s12,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s13",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s13,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s14",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s14,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s15",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s15,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s16",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s16,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s17",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s17,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s18",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s18,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s19",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s19,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s20",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s20,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s21",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s21,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s22",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s22,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s23",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s23,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s24",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s24,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s25",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s25,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s26",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s26,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s27",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s27,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s28",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s28,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s29",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s29,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s30",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s30,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s31",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s31,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "fpscr",   nullptr,   4, 0, eEncodingUint    , eFormatHex  , { LLDB_INVALID_REGNUM,  LLDB_INVALID_REGNUM,LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d0",      nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d0,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d1",      nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d1,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d2",      nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d2,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d3",      nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d3,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d4",      nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d4,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d5",      nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d5,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d6",      nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d6,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d7",      nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d7,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d8",      nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d8,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d9",      nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d9,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d10",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d10,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d11",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d11,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d12",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d12,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d13",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d13,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d14",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d14,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d15",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d15,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d16",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d16,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d17",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d17,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d18",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d18,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d19",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d19,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d20",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d20,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d21",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d21,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d22",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d22,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d23",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d23,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d24",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d24,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d25",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d25,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d26",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d26,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d27",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d27,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d28",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d28,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d29",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d29,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d30",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d30,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d31",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d31,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r8_usr",  nullptr,   4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r8_usr,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r9_usr",  nullptr,   4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r9_usr,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r10_usr", nullptr,   4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r10_usr,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r11_usr", nullptr,   4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r11_usr,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r12_usr", nullptr,   4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r12_usr,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r13_usr", "sp_usr",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r13_usr,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r14_usr", "lr_usr",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r14_usr,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r8_fiq",  nullptr,   4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r8_fiq,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r9_fiq",  nullptr,   4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r9_fiq,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r10_fiq", nullptr,   4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r10_fiq,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r11_fiq", nullptr,   4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r11_fiq,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r12_fiq", nullptr,   4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r12_fiq,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r13_fiq", "sp_fiq",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r13_fiq,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r14_fiq", "lr_fiq",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r14_fiq,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r13_irq", "sp_irq",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r13_irq,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r14_irq", "lr_irq",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r14_irq,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r13_abt", "sp_abt",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r13_abt,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r14_abt", "lr_abt",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r14_abt,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r13_und", "sp_und",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r13_und,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r14_und", "lr_und",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r14_und,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r13_svc", "sp_svc",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r13_svc,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r14_svc", "lr_svc",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r14_svc,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 }
-};
+static RegisterInfo g_register_infos[] = {
+    //  NAME       ALT       SZ OFF ENCODING         FORMAT          EH_FRAME
+    //  DWARF               GENERIC                     PROCESS PLUGIN
+    //  LLDB NATIVE
+    //  ========== =======   == === =============    ============
+    //  ======================= =================== ===========================
+    //  ======================= ======================
+    {"r0",
+     "arg1",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r0, dwarf_r0, LLDB_REGNUM_GENERIC_ARG1, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r1",
+     "arg2",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r1, dwarf_r1, LLDB_REGNUM_GENERIC_ARG2, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r2",
+     "arg3",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r2, dwarf_r2, LLDB_REGNUM_GENERIC_ARG3, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r3",
+     "arg4",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r3, dwarf_r3, LLDB_REGNUM_GENERIC_ARG4, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r4",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r4, dwarf_r4, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r5",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r5, dwarf_r5, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r6",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r6, dwarf_r6, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r7",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r7, dwarf_r7, LLDB_REGNUM_GENERIC_FP, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r8",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r8, dwarf_r8, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r9",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r9, dwarf_r9, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r10",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r10, dwarf_r10, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r11",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r11, dwarf_r11, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r12",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r12, dwarf_r12, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"sp",
+     "r13",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_sp, dwarf_sp, LLDB_REGNUM_GENERIC_SP, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"lr",
+     "r14",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_lr, dwarf_lr, LLDB_REGNUM_GENERIC_RA, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"pc",
+     "r15",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_pc, dwarf_pc, LLDB_REGNUM_GENERIC_PC, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"cpsr",
+     "psr",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_cpsr, dwarf_cpsr, LLDB_REGNUM_GENERIC_FLAGS, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s0",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s0, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s1",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s1, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s2",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s2, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s3",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s3, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s4",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s4, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s5",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s5, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s6",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s6, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s7",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s7, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s8",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s8, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s9",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s9, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s10",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s10, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s11",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s11, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s12",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s12, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s13",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s13, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s14",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s14, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s15",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s15, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s16",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s16, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s17",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s17, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s18",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s18, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s19",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s19, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s20",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s20, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s21",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s21, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s22",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s22, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s23",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s23, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s24",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s24, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s25",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s25, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s26",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s26, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s27",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s27, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s28",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s28, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s29",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s29, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s30",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s30, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s31",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s31, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"fpscr",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d0",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d0, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d1",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d1, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d2",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d2, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d3",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d3, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d4",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d4, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d5",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d5, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d6",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d6, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d7",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d7, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d8",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d8, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d9",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d9, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d10",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d10, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d11",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d11, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d12",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d12, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d13",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d13, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d14",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d14, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d15",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d15, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d16",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d16, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d17",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d17, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d18",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d18, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d19",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d19, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d20",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d20, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d21",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d21, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d22",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d22, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d23",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d23, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d24",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d24, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d25",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d25, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d26",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d26, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d27",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d27, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d28",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d28, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d29",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d29, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d30",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d30, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d31",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d31, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r8_usr",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r8_usr, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r9_usr",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r9_usr, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r10_usr",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r10_usr, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r11_usr",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r11_usr, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r12_usr",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r12_usr, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r13_usr",
+     "sp_usr",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r13_usr, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r14_usr",
+     "lr_usr",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r14_usr, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r8_fiq",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r8_fiq, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r9_fiq",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r9_fiq, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r10_fiq",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r10_fiq, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r11_fiq",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r11_fiq, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r12_fiq",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r12_fiq, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r13_fiq",
+     "sp_fiq",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r13_fiq, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r14_fiq",
+     "lr_fiq",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r14_fiq, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r13_irq",
+     "sp_irq",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r13_irq, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r14_irq",
+     "lr_irq",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r14_irq, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r13_abt",
+     "sp_abt",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r13_abt, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r14_abt",
+     "lr_abt",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r14_abt, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r13_und",
+     "sp_und",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r13_und, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r14_und",
+     "lr_und",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r14_und, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r13_svc",
+     "sp_svc",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r13_svc, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r14_svc",
+     "lr_svc",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r14_svc, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0}};
 
-static const uint32_t k_num_register_infos = llvm::array_lengthof(g_register_infos);
+static const uint32_t k_num_register_infos =
+    llvm::array_lengthof(g_register_infos);
 static bool g_register_info_names_constified = false;
 
 const lldb_private::RegisterInfo *
-ABIMacOSX_arm::GetRegisterInfoArray (uint32_t &count)
-{
-    // Make the C-string names and alt_names for the register infos into const 
-    // C-string values by having the ConstString unique the names in the global
-    // constant C-string pool.
-    if (!g_register_info_names_constified)
-    {
-        g_register_info_names_constified = true;
-        for (uint32_t i = 0; i < k_num_register_infos; ++i)
-        {
-            if (g_register_infos[i].name)
-                g_register_infos[i].name = ConstString(g_register_infos[i].name).GetCString();
-            if (g_register_infos[i].alt_name)
-                g_register_infos[i].alt_name = ConstString(g_register_infos[i].alt_name).GetCString();
-        }
+ABIMacOSX_arm::GetRegisterInfoArray(uint32_t &count) {
+  // Make the C-string names and alt_names for the register infos into const
+  // C-string values by having the ConstString unique the names in the global
+  // constant C-string pool.
+  if (!g_register_info_names_constified) {
+    g_register_info_names_constified = true;
+    for (uint32_t i = 0; i < k_num_register_infos; ++i) {
+      if (g_register_infos[i].name)
+        g_register_infos[i].name =
+            ConstString(g_register_infos[i].name).GetCString();
+      if (g_register_infos[i].alt_name)
+        g_register_infos[i].alt_name =
+            ConstString(g_register_infos[i].alt_name).GetCString();
     }
-    count = k_num_register_infos;
-    return g_register_infos;
+  }
+  count = k_num_register_infos;
+  return g_register_infos;
 }
 
-size_t
-ABIMacOSX_arm::GetRedZoneSize () const
-{
-    return 0;
-}
+size_t ABIMacOSX_arm::GetRedZoneSize() const { return 0; }
 
 //------------------------------------------------------------------
 // Static Functions
 //------------------------------------------------------------------
 
 ABISP
-ABIMacOSX_arm::CreateInstance (const ArchSpec &arch)
-{
-    static ABISP g_abi_sp;
-    const llvm::Triple::ArchType arch_type = arch.GetTriple().getArch();
-    const llvm::Triple::VendorType vendor_type = arch.GetTriple().getVendor();
-
-    if (vendor_type == llvm::Triple::Apple)
-    {
-        if ((arch_type == llvm::Triple::arm) ||
-            (arch_type == llvm::Triple::thumb))
-        {
-            if (!g_abi_sp)
-                g_abi_sp.reset (new ABIMacOSX_arm);
-            return g_abi_sp;
-        }
+ABIMacOSX_arm::CreateInstance(const ArchSpec &arch) {
+  static ABISP g_abi_sp;
+  const llvm::Triple::ArchType arch_type = arch.GetTriple().getArch();
+  const llvm::Triple::VendorType vendor_type = arch.GetTriple().getVendor();
+
+  if (vendor_type == llvm::Triple::Apple) {
+    if ((arch_type == llvm::Triple::arm) ||
+        (arch_type == llvm::Triple::thumb)) {
+      if (!g_abi_sp)
+        g_abi_sp.reset(new ABIMacOSX_arm);
+      return g_abi_sp;
     }
+  }
 
-    return ABISP();
+  return ABISP();
 }
 
-bool
-ABIMacOSX_arm::PrepareTrivialCall (Thread &thread, 
-                                   addr_t sp, 
-                                   addr_t function_addr, 
-                                   addr_t return_addr, 
-                                   llvm::ArrayRef<addr_t> args) const
-{
-    RegisterContext *reg_ctx = thread.GetRegisterContext().get();
-    if (!reg_ctx)
-        return false;    
-
-    const uint32_t pc_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC);
-    const uint32_t sp_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_SP);
-    const uint32_t ra_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_RA);
-
-    RegisterValue reg_value;
-
-    const char *reg_names[] = { "r0", "r1", "r2", "r3" };
-    
-    llvm::ArrayRef<addr_t>::iterator ai = args.begin(), ae = args.end();
-    
-    for (size_t i = 0; i < llvm::array_lengthof(reg_names); ++i)
-    {
-        if (ai == ae)
-            break;
-        
-        reg_value.SetUInt32(*ai);
-        if (!reg_ctx->WriteRegister(reg_ctx->GetRegisterInfoByName(reg_names[i]), reg_value))
-            return false;
-        
-        ++ai;
-    }
-    
-    if (ai != ae)
-    {
-        // Spill onto the stack
-        size_t num_stack_regs = ae - ai;
-        
-        sp -= (num_stack_regs * 4);
-        // Keep the stack 16 byte aligned
-        sp &= ~(16ull-1ull);
-        
-        // just using arg1 to get the right size
-        const RegisterInfo *reg_info = reg_ctx->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1);
-        
-        addr_t arg_pos = sp;
-        
-        for (; ai != ae; ++ai)
-        {
-            reg_value.SetUInt32(*ai);
-            if (reg_ctx->WriteRegisterValueToMemory(reg_info, arg_pos, reg_info->byte_size, reg_value).Fail())
-                return false;
-            arg_pos += reg_info->byte_size;
-        }
-    }
-    
-    TargetSP target_sp (thread.CalculateTarget());
-    Address so_addr;
-
-    // Figure out if our return address is ARM or Thumb by using the 
-    // Address::GetCallableLoadAddress(Target*) which will figure out the ARM
-    // thumb-ness and set the correct address bits for us.
-    so_addr.SetLoadAddress (return_addr, target_sp.get());
-    return_addr = so_addr.GetCallableLoadAddress (target_sp.get());
+bool ABIMacOSX_arm::PrepareTrivialCall(Thread &thread, addr_t sp,
+                                       addr_t function_addr, addr_t return_addr,
+                                       llvm::ArrayRef<addr_t> args) const {
+  RegisterContext *reg_ctx = thread.GetRegisterContext().get();
+  if (!reg_ctx)
+    return false;
 
-    // Set "lr" to the return address
-    if (!reg_ctx->WriteRegisterFromUnsigned (ra_reg_num, return_addr))
+  const uint32_t pc_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber(
+      eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC);
+  const uint32_t sp_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber(
+      eRegisterKindGeneric, LLDB_REGNUM_GENERIC_SP);
+  const uint32_t ra_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber(
+      eRegisterKindGeneric, LLDB_REGNUM_GENERIC_RA);
+
+  RegisterValue reg_value;
+
+  const char *reg_names[] = {"r0", "r1", "r2", "r3"};
+
+  llvm::ArrayRef<addr_t>::iterator ai = args.begin(), ae = args.end();
+
+  for (size_t i = 0; i < llvm::array_lengthof(reg_names); ++i) {
+    if (ai == ae)
+      break;
+
+    reg_value.SetUInt32(*ai);
+    if (!reg_ctx->WriteRegister(reg_ctx->GetRegisterInfoByName(reg_names[i]),
+                                reg_value))
+      return false;
+
+    ++ai;
+  }
+
+  if (ai != ae) {
+    // Spill onto the stack
+    size_t num_stack_regs = ae - ai;
+
+    sp -= (num_stack_regs * 4);
+    // Keep the stack 16 byte aligned
+    sp &= ~(16ull - 1ull);
+
+    // just using arg1 to get the right size
+    const RegisterInfo *reg_info = reg_ctx->GetRegisterInfo(
+        eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1);
+
+    addr_t arg_pos = sp;
+
+    for (; ai != ae; ++ai) {
+      reg_value.SetUInt32(*ai);
+      if (reg_ctx
+              ->WriteRegisterValueToMemory(reg_info, arg_pos,
+                                           reg_info->byte_size, reg_value)
+              .Fail())
         return false;
+      arg_pos += reg_info->byte_size;
+    }
+  }
 
-    // Set "sp" to the requested value
-    if (!reg_ctx->WriteRegisterFromUnsigned (sp_reg_num, sp))
-        return false;
-    
-    // If bit zero or 1 is set, this must be a thumb function, no need to figure
-    // this out from the symbols.
-    so_addr.SetLoadAddress (function_addr, target_sp.get());
-    function_addr = so_addr.GetCallableLoadAddress (target_sp.get());
-    
-    const RegisterInfo *cpsr_reg_info = reg_ctx->GetRegisterInfoByName("cpsr");
-    const uint32_t curr_cpsr = reg_ctx->ReadRegisterAsUnsigned(cpsr_reg_info, 0);
-
-    // Make a new CPSR and mask out any Thumb IT (if/then) bits
-    uint32_t new_cpsr = curr_cpsr & ~MASK_CPSR_IT_MASK;
-    // If bit zero or 1 is set, this must be thumb...
-    if (function_addr & 1ull)
-        new_cpsr |= MASK_CPSR_T;    // Set T bit in CPSR
-    else
-        new_cpsr &= ~MASK_CPSR_T;   // Clear T bit in CPSR
+  TargetSP target_sp(thread.CalculateTarget());
+  Address so_addr;
 
-    if (new_cpsr != curr_cpsr)
-    {
-        if (!reg_ctx->WriteRegisterFromUnsigned (cpsr_reg_info, new_cpsr))
-            return false;
-    }
+  // Figure out if our return address is ARM or Thumb by using the
+  // Address::GetCallableLoadAddress(Target*) which will figure out the ARM
+  // thumb-ness and set the correct address bits for us.
+  so_addr.SetLoadAddress(return_addr, target_sp.get());
+  return_addr = so_addr.GetCallableLoadAddress(target_sp.get());
 
-    function_addr &= ~1ull;   // clear bit zero since the CPSR will take care of the mode for us
-    
-    // Set "pc" to the address requested
-    if (!reg_ctx->WriteRegisterFromUnsigned (pc_reg_num, function_addr))
-        return false;
+  // Set "lr" to the return address
+  if (!reg_ctx->WriteRegisterFromUnsigned(ra_reg_num, return_addr))
+    return false;
+
+  // Set "sp" to the requested value
+  if (!reg_ctx->WriteRegisterFromUnsigned(sp_reg_num, sp))
+    return false;
+
+  // If bit zero or 1 is set, this must be a thumb function, no need to figure
+  // this out from the symbols.
+  so_addr.SetLoadAddress(function_addr, target_sp.get());
+  function_addr = so_addr.GetCallableLoadAddress(target_sp.get());
+
+  const RegisterInfo *cpsr_reg_info = reg_ctx->GetRegisterInfoByName("cpsr");
+  const uint32_t curr_cpsr = reg_ctx->ReadRegisterAsUnsigned(cpsr_reg_info, 0);
+
+  // Make a new CPSR and mask out any Thumb IT (if/then) bits
+  uint32_t new_cpsr = curr_cpsr & ~MASK_CPSR_IT_MASK;
+  // If bit zero or 1 is set, this must be thumb...
+  if (function_addr & 1ull)
+    new_cpsr |= MASK_CPSR_T; // Set T bit in CPSR
+  else
+    new_cpsr &= ~MASK_CPSR_T; // Clear T bit in CPSR
+
+  if (new_cpsr != curr_cpsr) {
+    if (!reg_ctx->WriteRegisterFromUnsigned(cpsr_reg_info, new_cpsr))
+      return false;
+  }
 
-    return true;
+  function_addr &=
+      ~1ull; // clear bit zero since the CPSR will take care of the mode for us
+
+  // Set "pc" to the address requested
+  if (!reg_ctx->WriteRegisterFromUnsigned(pc_reg_num, function_addr))
+    return false;
+
+  return true;
 }
 
-bool
-ABIMacOSX_arm::GetArgumentValues (Thread &thread,
-                                  ValueList &values) const
-{
-    uint32_t num_values = values.GetSize();
-
-    ExecutionContext exe_ctx (thread.shared_from_this());
-    // For now, assume that the types in the AST values come from the Target's 
-    // scratch AST.    
-    
-    // Extract the register context so we can read arguments from registers
-    
-    RegisterContext *reg_ctx = thread.GetRegisterContext().get();
-    
-    if (!reg_ctx)
+bool ABIMacOSX_arm::GetArgumentValues(Thread &thread, ValueList &values) const {
+  uint32_t num_values = values.GetSize();
+
+  ExecutionContext exe_ctx(thread.shared_from_this());
+  // For now, assume that the types in the AST values come from the Target's
+  // scratch AST.
+
+  // Extract the register context so we can read arguments from registers
+
+  RegisterContext *reg_ctx = thread.GetRegisterContext().get();
+
+  if (!reg_ctx)
+    return false;
+
+  addr_t sp = 0;
+
+  for (uint32_t value_idx = 0; value_idx < num_values; ++value_idx) {
+    // We currently only support extracting values with Clang QualTypes.
+    // Do we care about others?
+    Value *value = values.GetValueAtIndex(value_idx);
+
+    if (!value)
+      return false;
+
+    CompilerType compiler_type = value->GetCompilerType();
+    if (compiler_type) {
+      bool is_signed = false;
+      size_t bit_width = 0;
+      if (compiler_type.IsIntegerOrEnumerationType(is_signed)) {
+        bit_width = compiler_type.GetBitSize(&thread);
+      } else if (compiler_type.IsPointerOrReferenceType()) {
+        bit_width = compiler_type.GetBitSize(&thread);
+      } else {
+        // We only handle integer, pointer and reference types currently...
         return false;
-        
-    addr_t sp = 0;
+      }
 
-    for (uint32_t value_idx = 0; value_idx < num_values; ++value_idx)
-    {
-        // We currently only support extracting values with Clang QualTypes.
-        // Do we care about others?
-        Value *value = values.GetValueAtIndex(value_idx);
-        
-        if (!value)
-            return false;
-        
-        CompilerType compiler_type = value->GetCompilerType();
-        if (compiler_type)
-        {
-            bool is_signed = false;
-            size_t bit_width = 0;
-            if (compiler_type.IsIntegerOrEnumerationType (is_signed))
-            {
-                bit_width = compiler_type.GetBitSize(&thread);
+      if (bit_width <= (exe_ctx.GetProcessRef().GetAddressByteSize() * 8)) {
+        if (value_idx < 4) {
+          // Arguments 1-4 are in r0-r3...
+          const RegisterInfo *arg_reg_info = nullptr;
+          // Search by generic ID first, then fall back to by name
+          uint32_t arg_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber(
+              eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1 + value_idx);
+          if (arg_reg_num != LLDB_INVALID_REGNUM) {
+            arg_reg_info = reg_ctx->GetRegisterInfoAtIndex(arg_reg_num);
+          } else {
+            switch (value_idx) {
+            case 0:
+              arg_reg_info = reg_ctx->GetRegisterInfoByName("r0");
+              break;
+            case 1:
+              arg_reg_info = reg_ctx->GetRegisterInfoByName("r1");
+              break;
+            case 2:
+              arg_reg_info = reg_ctx->GetRegisterInfoByName("r2");
+              break;
+            case 3:
+              arg_reg_info = reg_ctx->GetRegisterInfoByName("r3");
+              break;
             }
-            else if (compiler_type.IsPointerOrReferenceType ())
-            {
-                bit_width = compiler_type.GetBitSize(&thread);
-            }
-            else
-            {
-                // We only handle integer, pointer and reference types currently...
+          }
+
+          if (arg_reg_info) {
+            RegisterValue reg_value;
+
+            if (reg_ctx->ReadRegister(arg_reg_info, reg_value)) {
+              if (is_signed)
+                reg_value.SignExtend(bit_width);
+              if (!reg_value.GetScalarValue(value->GetScalar()))
                 return false;
+              continue;
             }
-            
-            if (bit_width <= (exe_ctx.GetProcessRef().GetAddressByteSize() * 8))
-            {
-                if (value_idx < 4)
-                {
-                    // Arguments 1-4 are in r0-r3...
-                    const RegisterInfo *arg_reg_info = nullptr;
-                    // Search by generic ID first, then fall back to by name
-                    uint32_t arg_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1 + value_idx);
-                    if (arg_reg_num != LLDB_INVALID_REGNUM)
-                    {
-                        arg_reg_info = reg_ctx->GetRegisterInfoAtIndex(arg_reg_num);
-                    }
-                    else
-                    {
-                        switch (value_idx)
-                        {
-                            case 0: arg_reg_info = reg_ctx->GetRegisterInfoByName("r0"); break;
-                            case 1: arg_reg_info = reg_ctx->GetRegisterInfoByName("r1"); break;
-                            case 2: arg_reg_info = reg_ctx->GetRegisterInfoByName("r2"); break;
-                            case 3: arg_reg_info = reg_ctx->GetRegisterInfoByName("r3"); break;
-                        }
-                    }
-
-                    if (arg_reg_info)
-                    {
-                        RegisterValue reg_value;
-                        
-                        if (reg_ctx->ReadRegister(arg_reg_info, reg_value))
-                        {
-                            if (is_signed)
-                                reg_value.SignExtend(bit_width);
-                            if (!reg_value.GetScalarValue(value->GetScalar()))
-                                return false;
-                            continue;
-                        }
-                    }
-                    return false;
-                }
-                else
-                {
-                    if (sp == 0)
-                    {
-                        // Read the stack pointer if it already hasn't been read
-                        sp = reg_ctx->GetSP(0);
-                        if (sp == 0)
-                            return false;
-                    }
-
-                    // Arguments 5 on up are on the stack
-                    const uint32_t arg_byte_size = (bit_width + (8-1)) / 8;
-                    Error error;
-                    if (!exe_ctx.GetProcessRef().ReadScalarIntegerFromMemory(sp, arg_byte_size, is_signed, value->GetScalar(), error))
-                        return false;
+          }
+          return false;
+        } else {
+          if (sp == 0) {
+            // Read the stack pointer if it already hasn't been read
+            sp = reg_ctx->GetSP(0);
+            if (sp == 0)
+              return false;
+          }
+
+          // Arguments 5 on up are on the stack
+          const uint32_t arg_byte_size = (bit_width + (8 - 1)) / 8;
+          Error error;
+          if (!exe_ctx.GetProcessRef().ReadScalarIntegerFromMemory(
+                  sp, arg_byte_size, is_signed, value->GetScalar(), error))
+            return false;
 
-                    sp += arg_byte_size;
-                }
-            }
+          sp += arg_byte_size;
         }
+      }
     }
-    return true;
+  }
+  return true;
 }
 
-bool
-ABIMacOSX_arm::IsArmv7kProcess (Thread *thread) const
-{
-    bool is_armv7k = false;
-    if (thread)
-    {
-        ProcessSP process_sp (thread->GetProcess());
-        if (process_sp)
-        {
-            const ArchSpec &arch (process_sp->GetTarget().GetArchitecture());
-            const ArchSpec::Core system_core = arch.GetCore();
-            if (system_core == ArchSpec::eCore_arm_armv7k)
-            {
-                is_armv7k = true;
-            }
-        }
+bool ABIMacOSX_arm::IsArmv7kProcess(Thread *thread) const {
+  bool is_armv7k = false;
+  if (thread) {
+    ProcessSP process_sp(thread->GetProcess());
+    if (process_sp) {
+      const ArchSpec &arch(process_sp->GetTarget().GetArchitecture());
+      const ArchSpec::Core system_core = arch.GetCore();
+      if (system_core == ArchSpec::eCore_arm_armv7k) {
+        is_armv7k = true;
+      }
     }
-    return is_armv7k;
+  }
+  return is_armv7k;
 }
 
-ValueObjectSP
-ABIMacOSX_arm::GetReturnValueObjectImpl (Thread &thread,
-                                         lldb_private::CompilerType &compiler_type) const
-{
-    Value value;
-    ValueObjectSP return_valobj_sp;
-    
-    if (!compiler_type)
-        return return_valobj_sp;
+ValueObjectSP ABIMacOSX_arm::GetReturnValueObjectImpl(
+    Thread &thread, lldb_private::CompilerType &compiler_type) const {
+  Value value;
+  ValueObjectSP return_valobj_sp;
 
-    value.SetCompilerType (compiler_type);
-            
-    RegisterContext *reg_ctx = thread.GetRegisterContext().get();
-    if (!reg_ctx)
-        return return_valobj_sp;
-        
-    bool is_signed;
-    
-    // Get the pointer to the first stack argument so we have a place to start 
-    // when reading data
-    
-    const RegisterInfo *r0_reg_info = reg_ctx->GetRegisterInfoByName("r0", 0);
-    if (compiler_type.IsIntegerOrEnumerationType (is_signed))
-    {
-        size_t bit_width = compiler_type.GetBitSize(&thread);
-        
-        switch (bit_width)
+  if (!compiler_type)
+    return return_valobj_sp;
+
+  value.SetCompilerType(compiler_type);
+
+  RegisterContext *reg_ctx = thread.GetRegisterContext().get();
+  if (!reg_ctx)
+    return return_valobj_sp;
+
+  bool is_signed;
+
+  // Get the pointer to the first stack argument so we have a place to start
+  // when reading data
+
+  const RegisterInfo *r0_reg_info = reg_ctx->GetRegisterInfoByName("r0", 0);
+  if (compiler_type.IsIntegerOrEnumerationType(is_signed)) {
+    size_t bit_width = compiler_type.GetBitSize(&thread);
+
+    switch (bit_width) {
+    default:
+      return return_valobj_sp;
+    case 128:
+      if (IsArmv7kProcess(&thread)) {
+        // "A composite type not larger than 16 bytes is returned in r0-r3. The
+        // format is
+        // as if the result had been stored in memory at a word-aligned address
+        // and then
+        // loaded into r0-r3 with an ldm instruction"
         {
-            default:
-                return return_valobj_sp;
-            case 128:
-                if (IsArmv7kProcess (&thread))
-                {
-                    // "A composite type not larger than 16 bytes is returned in r0-r3. The format is
-                    // as if the result had been stored in memory at a word-aligned address and then
-                    // loaded into r0-r3 with an ldm instruction"
-                    {
-                        const RegisterInfo *r1_reg_info = reg_ctx->GetRegisterInfoByName("r1", 0);
-                        const RegisterInfo *r2_reg_info = reg_ctx->GetRegisterInfoByName("r2", 0);
-                        const RegisterInfo *r3_reg_info = reg_ctx->GetRegisterInfoByName("r3", 0);
-                        if (r1_reg_info && r2_reg_info && r3_reg_info)
-                        {
-                            const size_t byte_size = compiler_type.GetByteSize(&thread);
-                            ProcessSP process_sp (thread.GetProcess());
-                            if (byte_size <= r0_reg_info->byte_size + r1_reg_info->byte_size + r2_reg_info->byte_size + r3_reg_info->byte_size
-                                && process_sp)
-                            {
-                                std::unique_ptr<DataBufferHeap> heap_data_ap (new DataBufferHeap(byte_size, 0));
-                                const ByteOrder byte_order = process_sp->GetByteOrder();
-                                RegisterValue r0_reg_value;
-                                RegisterValue r1_reg_value;
-                                RegisterValue r2_reg_value;
-                                RegisterValue r3_reg_value;
-                                if (reg_ctx->ReadRegister(r0_reg_info, r0_reg_value)
-                                    && reg_ctx->ReadRegister(r1_reg_info, r1_reg_value)
-                                    && reg_ctx->ReadRegister(r2_reg_info, r2_reg_value)
-                                    && reg_ctx->ReadRegister(r3_reg_info, r3_reg_value))
-                                {
-                                    Error error;
-                                    if (r0_reg_value.GetAsMemoryData (r0_reg_info, heap_data_ap->GetBytes()+0, 4, byte_order, error)
-                                        && r1_reg_value.GetAsMemoryData (r1_reg_info, heap_data_ap->GetBytes()+4, 4, byte_order, error)
-                                        && r2_reg_value.GetAsMemoryData (r2_reg_info, heap_data_ap->GetBytes()+8, 4, byte_order, error)
-                                        && r3_reg_value.GetAsMemoryData (r3_reg_info, heap_data_ap->GetBytes()+12, 4, byte_order, error))
-                                    {
-                                        DataExtractor data (DataBufferSP (heap_data_ap.release()),
-                                                            byte_order,
-                                                            process_sp->GetAddressByteSize());
-                                        
-                                        return_valobj_sp = ValueObjectConstResult::Create (&thread,
-                                                                                        compiler_type,
-                                                                                        ConstString(""),
-                                                                                        data);
-                                        return return_valobj_sp;
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-                else
-                {
-                    return return_valobj_sp;
+          const RegisterInfo *r1_reg_info =
+              reg_ctx->GetRegisterInfoByName("r1", 0);
+          const RegisterInfo *r2_reg_info =
+              reg_ctx->GetRegisterInfoByName("r2", 0);
+          const RegisterInfo *r3_reg_info =
+              reg_ctx->GetRegisterInfoByName("r3", 0);
+          if (r1_reg_info && r2_reg_info && r3_reg_info) {
+            const size_t byte_size = compiler_type.GetByteSize(&thread);
+            ProcessSP process_sp(thread.GetProcess());
+            if (byte_size <= r0_reg_info->byte_size + r1_reg_info->byte_size +
+                                 r2_reg_info->byte_size +
+                                 r3_reg_info->byte_size &&
+                process_sp) {
+              std::unique_ptr<DataBufferHeap> heap_data_ap(
+                  new DataBufferHeap(byte_size, 0));
+              const ByteOrder byte_order = process_sp->GetByteOrder();
+              RegisterValue r0_reg_value;
+              RegisterValue r1_reg_value;
+              RegisterValue r2_reg_value;
+              RegisterValue r3_reg_value;
+              if (reg_ctx->ReadRegister(r0_reg_info, r0_reg_value) &&
+                  reg_ctx->ReadRegister(r1_reg_info, r1_reg_value) &&
+                  reg_ctx->ReadRegister(r2_reg_info, r2_reg_value) &&
+                  reg_ctx->ReadRegister(r3_reg_info, r3_reg_value)) {
+                Error error;
+                if (r0_reg_value.GetAsMemoryData(r0_reg_info,
+                                                 heap_data_ap->GetBytes() + 0,
+                                                 4, byte_order, error) &&
+                    r1_reg_value.GetAsMemoryData(r1_reg_info,
+                                                 heap_data_ap->GetBytes() + 4,
+                                                 4, byte_order, error) &&
+                    r2_reg_value.GetAsMemoryData(r2_reg_info,
+                                                 heap_data_ap->GetBytes() + 8,
+                                                 4, byte_order, error) &&
+                    r3_reg_value.GetAsMemoryData(r3_reg_info,
+                                                 heap_data_ap->GetBytes() + 12,
+                                                 4, byte_order, error)) {
+                  DataExtractor data(DataBufferSP(heap_data_ap.release()),
+                                     byte_order,
+                                     process_sp->GetAddressByteSize());
+
+                  return_valobj_sp = ValueObjectConstResult::Create(
+                      &thread, compiler_type, ConstString(""), data);
+                  return return_valobj_sp;
                 }
-                break;
-            case 64:
-            {
-                const RegisterInfo *r1_reg_info = reg_ctx->GetRegisterInfoByName("r1", 0);
-                uint64_t raw_value;
-                raw_value = reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX;
-                raw_value |= ((uint64_t)(reg_ctx->ReadRegisterAsUnsigned(r1_reg_info, 0) & UINT32_MAX)) << 32;
-                if (is_signed)
-                    value.GetScalar() = (int64_t)raw_value;
-                else
-                    value.GetScalar() = (uint64_t)raw_value;
+              }
             }
-                break;
-            case 32:
-                if (is_signed)
-                    value.GetScalar() = (int32_t)(reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX);
-                else
-                    value.GetScalar() = (uint32_t)(reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX);
-                break;
-            case 16:
-                if (is_signed)
-                    value.GetScalar() = (int16_t)(reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT16_MAX);
-                else
-                    value.GetScalar() = (uint16_t)(reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT16_MAX);
-                break;
-            case 8:
-                if (is_signed)
-                    value.GetScalar() = (int8_t)(reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT8_MAX);
-                else
-                    value.GetScalar() = (uint8_t)(reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT8_MAX);
-                break;
+          }
         }
-    }
-    else if (compiler_type.IsPointerType ())
-    {
-        uint32_t ptr = thread.GetRegisterContext()->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX;
-        value.GetScalar() = ptr;
-    }
-    else
-    {
-        // not handled yet
+      } else {
         return return_valobj_sp;
+      }
+      break;
+    case 64: {
+      const RegisterInfo *r1_reg_info = reg_ctx->GetRegisterInfoByName("r1", 0);
+      uint64_t raw_value;
+      raw_value = reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX;
+      raw_value |= ((uint64_t)(reg_ctx->ReadRegisterAsUnsigned(r1_reg_info, 0) &
+                               UINT32_MAX))
+                   << 32;
+      if (is_signed)
+        value.GetScalar() = (int64_t)raw_value;
+      else
+        value.GetScalar() = (uint64_t)raw_value;
+    } break;
+    case 32:
+      if (is_signed)
+        value.GetScalar() = (int32_t)(
+            reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX);
+      else
+        value.GetScalar() = (uint32_t)(
+            reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX);
+      break;
+    case 16:
+      if (is_signed)
+        value.GetScalar() = (int16_t)(
+            reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT16_MAX);
+      else
+        value.GetScalar() = (uint16_t)(
+            reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT16_MAX);
+      break;
+    case 8:
+      if (is_signed)
+        value.GetScalar() = (int8_t)(
+            reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT8_MAX);
+      else
+        value.GetScalar() = (uint8_t)(
+            reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT8_MAX);
+      break;
     }
-    
-    // If we get here, we have a valid Value, so make our ValueObject out of it:
-    
-    return_valobj_sp = ValueObjectConstResult::Create(thread.GetStackFrameAtIndex(0).get(),
-                                                      value,
-                                                      ConstString(""));
+  } else if (compiler_type.IsPointerType()) {
+    uint32_t ptr =
+        thread.GetRegisterContext()->ReadRegisterAsUnsigned(r0_reg_info, 0) &
+        UINT32_MAX;
+    value.GetScalar() = ptr;
+  } else {
+    // not handled yet
     return return_valobj_sp;
+  }
+
+  // If we get here, we have a valid Value, so make our ValueObject out of it:
+
+  return_valobj_sp = ValueObjectConstResult::Create(
+      thread.GetStackFrameAtIndex(0).get(), value, ConstString(""));
+  return return_valobj_sp;
 }
 
-Error
-ABIMacOSX_arm::SetReturnValueObject(lldb::StackFrameSP &frame_sp, lldb::ValueObjectSP &new_value_sp)
-{
-    Error error;
-    if (!new_value_sp)
-    {
-        error.SetErrorString("Empty value object for return value.");
-        return error;
-    }
-    
-    CompilerType compiler_type = new_value_sp->GetCompilerType();
-    if (!compiler_type)
-    {
-        error.SetErrorString ("Null clang type for return value.");
-        return error;
+Error ABIMacOSX_arm::SetReturnValueObject(lldb::StackFrameSP &frame_sp,
+                                          lldb::ValueObjectSP &new_value_sp) {
+  Error error;
+  if (!new_value_sp) {
+    error.SetErrorString("Empty value object for return value.");
+    return error;
+  }
+
+  CompilerType compiler_type = new_value_sp->GetCompilerType();
+  if (!compiler_type) {
+    error.SetErrorString("Null clang type for return value.");
+    return error;
+  }
+
+  Thread *thread = frame_sp->GetThread().get();
+
+  bool is_signed;
+  uint32_t count;
+  bool is_complex;
+
+  RegisterContext *reg_ctx = thread->GetRegisterContext().get();
+
+  bool set_it_simple = false;
+  if (compiler_type.IsIntegerOrEnumerationType(is_signed) ||
+      compiler_type.IsPointerType()) {
+    DataExtractor data;
+    Error data_error;
+    size_t num_bytes = new_value_sp->GetData(data, data_error);
+    if (data_error.Fail()) {
+      error.SetErrorStringWithFormat(
+          "Couldn't convert return value to raw data: %s",
+          data_error.AsCString());
+      return error;
     }
-    
-    Thread *thread = frame_sp->GetThread().get();
-    
-    bool is_signed;
-    uint32_t count;
-    bool is_complex;
-    
-    RegisterContext *reg_ctx = thread->GetRegisterContext().get();
-
-    bool set_it_simple = false;
-    if (compiler_type.IsIntegerOrEnumerationType (is_signed) || compiler_type.IsPointerType())
-    {
-        DataExtractor data;
-        Error data_error;
-        size_t num_bytes = new_value_sp->GetData(data, data_error);
-        if (data_error.Fail())
-        {
-            error.SetErrorStringWithFormat("Couldn't convert return value to raw data: %s", data_error.AsCString());
-            return error;
-        }
-        lldb::offset_t offset = 0;
-        if (num_bytes <= 8)
-        {
-            const RegisterInfo *r0_info = reg_ctx->GetRegisterInfoByName("r0", 0);
-            if (num_bytes <= 4)
-            {
-                uint32_t raw_value = data.GetMaxU32(&offset, num_bytes);
-        
-                if (reg_ctx->WriteRegisterFromUnsigned (r0_info, raw_value))
-                    set_it_simple = true;
-            }
-            else
-            {
-                uint32_t raw_value = data.GetMaxU32(&offset, 4);
-        
-                if (reg_ctx->WriteRegisterFromUnsigned (r0_info, raw_value))
-                {
-                    const RegisterInfo *r1_info = reg_ctx->GetRegisterInfoByName("r1", 0);
-                    uint32_t raw_value = data.GetMaxU32(&offset, num_bytes - offset);
-                
-                    if (reg_ctx->WriteRegisterFromUnsigned (r1_info, raw_value))
-                        set_it_simple = true;
-                }
-            }
+    lldb::offset_t offset = 0;
+    if (num_bytes <= 8) {
+      const RegisterInfo *r0_info = reg_ctx->GetRegisterInfoByName("r0", 0);
+      if (num_bytes <= 4) {
+        uint32_t raw_value = data.GetMaxU32(&offset, num_bytes);
+
+        if (reg_ctx->WriteRegisterFromUnsigned(r0_info, raw_value))
+          set_it_simple = true;
+      } else {
+        uint32_t raw_value = data.GetMaxU32(&offset, 4);
+
+        if (reg_ctx->WriteRegisterFromUnsigned(r0_info, raw_value)) {
+          const RegisterInfo *r1_info = reg_ctx->GetRegisterInfoByName("r1", 0);
+          uint32_t raw_value = data.GetMaxU32(&offset, num_bytes - offset);
+
+          if (reg_ctx->WriteRegisterFromUnsigned(r1_info, raw_value))
+            set_it_simple = true;
         }
-        else if (num_bytes <= 16 && IsArmv7kProcess (frame_sp->GetThread().get()))
-        {
-            // "A composite type not larger than 16 bytes is returned in r0-r3. The format is
-            // as if the result had been stored in memory at a word-aligned address and then
-            // loaded into r0-r3 with an ldm instruction"
-
-            const RegisterInfo *r0_info = reg_ctx->GetRegisterInfoByName("r0", 0);
-            const RegisterInfo *r1_info = reg_ctx->GetRegisterInfoByName("r1", 0);
-            const RegisterInfo *r2_info = reg_ctx->GetRegisterInfoByName("r2", 0);
-            const RegisterInfo *r3_info = reg_ctx->GetRegisterInfoByName("r3", 0);
-            lldb::offset_t offset = 0;
-            uint32_t bytes_written = 4;
-            uint32_t raw_value = data.GetMaxU64(&offset, 4);
-            if (reg_ctx->WriteRegisterFromUnsigned (r0_info, raw_value) && bytes_written <= num_bytes)
-            {
-                bytes_written += 4;
-                raw_value = data.GetMaxU64(&offset, 4);
-                if (bytes_written <= num_bytes && reg_ctx->WriteRegisterFromUnsigned (r1_info, raw_value))
-                {
-                    bytes_written += 4;
-                    raw_value = data.GetMaxU64(&offset, 4);
-                    if (bytes_written <= num_bytes && reg_ctx->WriteRegisterFromUnsigned (r2_info, raw_value))
-                    {
-                        bytes_written += 4;
-                        raw_value = data.GetMaxU64(&offset, 4);
-                        if (bytes_written <= num_bytes && reg_ctx->WriteRegisterFromUnsigned (r3_info, raw_value))
-                        {
-                            set_it_simple = true;
-                        }
-                    }
-                }
+      }
+    } else if (num_bytes <= 16 &&
+               IsArmv7kProcess(frame_sp->GetThread().get())) {
+      // "A composite type not larger than 16 bytes is returned in r0-r3. The
+      // format is
+      // as if the result had been stored in memory at a word-aligned address
+      // and then
+      // loaded into r0-r3 with an ldm instruction"
+
+      const RegisterInfo *r0_info = reg_ctx->GetRegisterInfoByName("r0", 0);
+      const RegisterInfo *r1_info = reg_ctx->GetRegisterInfoByName("r1", 0);
+      const RegisterInfo *r2_info = reg_ctx->GetRegisterInfoByName("r2", 0);
+      const RegisterInfo *r3_info = reg_ctx->GetRegisterInfoByName("r3", 0);
+      lldb::offset_t offset = 0;
+      uint32_t bytes_written = 4;
+      uint32_t raw_value = data.GetMaxU64(&offset, 4);
+      if (reg_ctx->WriteRegisterFromUnsigned(r0_info, raw_value) &&
+          bytes_written <= num_bytes) {
+        bytes_written += 4;
+        raw_value = data.GetMaxU64(&offset, 4);
+        if (bytes_written <= num_bytes &&
+            reg_ctx->WriteRegisterFromUnsigned(r1_info, raw_value)) {
+          bytes_written += 4;
+          raw_value = data.GetMaxU64(&offset, 4);
+          if (bytes_written <= num_bytes &&
+              reg_ctx->WriteRegisterFromUnsigned(r2_info, raw_value)) {
+            bytes_written += 4;
+            raw_value = data.GetMaxU64(&offset, 4);
+            if (bytes_written <= num_bytes &&
+                reg_ctx->WriteRegisterFromUnsigned(r3_info, raw_value)) {
+              set_it_simple = true;
             }
+          }
         }
-        else
-        {
-            error.SetErrorString("We don't support returning longer than 64 bit integer values at present.");
-        }
-    }
-    else if (compiler_type.IsFloatingPointType (count, is_complex))
-    {
-        if (is_complex)
-            error.SetErrorString ("We don't support returning complex values at present");
-        else
-            error.SetErrorString ("We don't support returning float values at present");
+      }
+    } else {
+      error.SetErrorString("We don't support returning longer than 64 bit "
+                           "integer values at present.");
     }
-    
-    if (!set_it_simple)
-        error.SetErrorString ("We only support setting simple integer return types at present.");
-    
-    return error;
+  } else if (compiler_type.IsFloatingPointType(count, is_complex)) {
+    if (is_complex)
+      error.SetErrorString(
+          "We don't support returning complex values at present");
+    else
+      error.SetErrorString(
+          "We don't support returning float values at present");
+  }
+
+  if (!set_it_simple)
+    error.SetErrorString(
+        "We only support setting simple integer return types at present.");
+
+  return error;
 }
 
-bool
-ABIMacOSX_arm::CreateFunctionEntryUnwindPlan (UnwindPlan &unwind_plan)
-{
-    unwind_plan.Clear();
-    unwind_plan.SetRegisterKind (eRegisterKindDWARF);
-
-    uint32_t lr_reg_num = dwarf_lr;
-    uint32_t sp_reg_num = dwarf_sp;
-    uint32_t pc_reg_num = dwarf_pc;
-    
-    UnwindPlan::RowSP row(new UnwindPlan::Row);
-    
-    // Our Call Frame Address is the stack pointer value
-    row->GetCFAValue().SetIsRegisterPlusOffset (sp_reg_num, 0);
-    
-    // The previous PC is in the LR
-    row->SetRegisterLocationToRegister(pc_reg_num, lr_reg_num, true);
-    unwind_plan.AppendRow (row);
-    
-    // All other registers are the same.
-    
-    unwind_plan.SetSourceName ("arm at-func-entry default");
-    unwind_plan.SetSourcedFromCompiler (eLazyBoolNo);
-
-    return true;
-}
-
-bool
-ABIMacOSX_arm::CreateDefaultUnwindPlan (UnwindPlan &unwind_plan)
-{
-    unwind_plan.Clear ();
-    unwind_plan.SetRegisterKind (eRegisterKindDWARF);
-
-    uint32_t fp_reg_num = dwarf_r7;   // apple uses r7 for all frames. Normal arm uses r11
-    uint32_t pc_reg_num = dwarf_pc;
-    
-    UnwindPlan::RowSP row(new UnwindPlan::Row);
-    const int32_t ptr_size = 4;
-    
-    row->GetCFAValue().SetIsRegisterPlusOffset (fp_reg_num, 2 * ptr_size);
-    row->SetOffset (0);
-    
-    row->SetRegisterLocationToAtCFAPlusOffset(fp_reg_num, ptr_size * -2, true);
-    row->SetRegisterLocationToAtCFAPlusOffset(pc_reg_num, ptr_size * -1, true);
-    
-    unwind_plan.AppendRow (row);
-    unwind_plan.SetSourceName ("arm-apple-ios default unwind plan");
-    unwind_plan.SetSourcedFromCompiler (eLazyBoolNo);
-    unwind_plan.SetUnwindPlanValidAtAllInstructions (eLazyBoolNo);
+bool ABIMacOSX_arm::CreateFunctionEntryUnwindPlan(UnwindPlan &unwind_plan) {
+  unwind_plan.Clear();
+  unwind_plan.SetRegisterKind(eRegisterKindDWARF);
+
+  uint32_t lr_reg_num = dwarf_lr;
+  uint32_t sp_reg_num = dwarf_sp;
+  uint32_t pc_reg_num = dwarf_pc;
+
+  UnwindPlan::RowSP row(new UnwindPlan::Row);
+
+  // Our Call Frame Address is the stack pointer value
+  row->GetCFAValue().SetIsRegisterPlusOffset(sp_reg_num, 0);
+
+  // The previous PC is in the LR
+  row->SetRegisterLocationToRegister(pc_reg_num, lr_reg_num, true);
+  unwind_plan.AppendRow(row);
 
-    return true;
+  // All other registers are the same.
+
+  unwind_plan.SetSourceName("arm at-func-entry default");
+  unwind_plan.SetSourcedFromCompiler(eLazyBoolNo);
+
+  return true;
+}
+
+bool ABIMacOSX_arm::CreateDefaultUnwindPlan(UnwindPlan &unwind_plan) {
+  unwind_plan.Clear();
+  unwind_plan.SetRegisterKind(eRegisterKindDWARF);
+
+  uint32_t fp_reg_num =
+      dwarf_r7; // apple uses r7 for all frames. Normal arm uses r11
+  uint32_t pc_reg_num = dwarf_pc;
+
+  UnwindPlan::RowSP row(new UnwindPlan::Row);
+  const int32_t ptr_size = 4;
+
+  row->GetCFAValue().SetIsRegisterPlusOffset(fp_reg_num, 2 * ptr_size);
+  row->SetOffset(0);
+
+  row->SetRegisterLocationToAtCFAPlusOffset(fp_reg_num, ptr_size * -2, true);
+  row->SetRegisterLocationToAtCFAPlusOffset(pc_reg_num, ptr_size * -1, true);
+
+  unwind_plan.AppendRow(row);
+  unwind_plan.SetSourceName("arm-apple-ios default unwind plan");
+  unwind_plan.SetSourcedFromCompiler(eLazyBoolNo);
+  unwind_plan.SetUnwindPlanValidAtAllInstructions(eLazyBoolNo);
+
+  return true;
 }
 
 // cf. "ARMv6 Function Calling Conventions"
@@ -748,7 +1869,8 @@ ABIMacOSX_arm::CreateDefaultUnwindPlan (
 //    r4-r6 preserved
 //    r7    preserved (frame pointer)
 //    r8    preserved
-//    r9    not preserved (usable as volatile scratch register with iOS 3.x and later)
+//    r9    not preserved (usable as volatile scratch register with iOS 3.x and
+//    later)
 //    r10-r11 preserved
 //    r12   not presrved
 //    r13   preserved (stack pointer)
@@ -761,211 +1883,181 @@ ABIMacOSX_arm::CreateDefaultUnwindPlan (
 //    d8-d15  preserved       (aka s16-s31, q4-q7)
 //    d16-d31 not preserved   (aka q8-q15)
 
-bool
-ABIMacOSX_arm::RegisterIsVolatile (const RegisterInfo *reg_info)
-{
-    if (reg_info)
-    {
-        // Volatile registers are: r0, r1, r2, r3, r9, r12, r13 (aka sp)
-        const char *name = reg_info->name;
-        if (name[0] == 'r')
-        {
-            switch (name[1])
-            {
-                case '0': return name[2] == '\0'; // r0
-                case '1': 
-                    switch (name[2])
-                    {
-                    case '\0':
-                        return true; // r1
-                    case '2':
-                    case '3':
-                        return name[3] == '\0'; // r12, r13 (sp)
-                    default:
-                        break;
-                    }
-                    break;
-
-                case '2': return name[2] == '\0'; // r2
-                case '3': return name[2] == '\0'; // r3
-                case '9': return name[2] == '\0'; // r9 (apple-ios only...)
-                    
-                break;
-            }
+bool ABIMacOSX_arm::RegisterIsVolatile(const RegisterInfo *reg_info) {
+  if (reg_info) {
+    // Volatile registers are: r0, r1, r2, r3, r9, r12, r13 (aka sp)
+    const char *name = reg_info->name;
+    if (name[0] == 'r') {
+      switch (name[1]) {
+      case '0':
+        return name[2] == '\0'; // r0
+      case '1':
+        switch (name[2]) {
+        case '\0':
+          return true; // r1
+        case '2':
+        case '3':
+          return name[3] == '\0'; // r12, r13 (sp)
+        default:
+          break;
         }
-        else if (name[0] == 'd')
-        {
-            switch (name[1])
-            {
-                case '0': 
-                    return name[2] == '\0'; // d0 is volatile
-
-                case '1':
-                    switch (name[2])
-                    {
-                    case '\0':
-                        return true; // d1 is volatile
-                    case '6':
-                    case '7':
-                    case '8':
-                    case '9':
-                        return name[3] == '\0'; // d16 - d19 are volatile
-                    default:
-                        break;
-                    }
-                    break;
-
-                case '2':
-                    switch (name[2])
-                    {
-                    case '\0':
-                        return true; // d2 is volatile
-                    case '0':
-                    case '1':
-                    case '2':
-                    case '3':
-                    case '4':
-                    case '5':
-                    case '6':
-                    case '7':
-                    case '8':
-                    case '9':
-                        return name[3] == '\0'; // d20 - d29 are volatile
-                    default:
-                        break;
-                    }
-                    break;
-
-                case '3':
-                    switch (name[2])
-                    {
-                    case '\0':
-                        return true; // d3 is volatile
-                    case '0':
-                    case '1':
-                        return name[3] == '\0'; // d30 - d31 are volatile
-                    default:
-                        break;
-                    }
-                    break;
-                case '4':
-                case '5':
-                case '6':
-                case '7':
-                    return name[2] == '\0'; // d4 - d7 are volatile
+        break;
 
-                default:
-                    break;
-            }
+      case '2':
+        return name[2] == '\0'; // r2
+      case '3':
+        return name[2] == '\0'; // r3
+      case '9':
+        return name[2] == '\0'; // r9 (apple-ios only...)
+
+        break;
+      }
+    } else if (name[0] == 'd') {
+      switch (name[1]) {
+      case '0':
+        return name[2] == '\0'; // d0 is volatile
+
+      case '1':
+        switch (name[2]) {
+        case '\0':
+          return true; // d1 is volatile
+        case '6':
+        case '7':
+        case '8':
+        case '9':
+          return name[3] == '\0'; // d16 - d19 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':
-                    case '2':
-                    case '3':
-                    case '4':
-                    case '5':
-                        return name[3] == '\0'; // s10 - s15 are volatile
-                    default:
-                        break;
-                    }
-                    break;
-
-                case '2':
-                case '3':
-                case '4':
-                case '5':
-                case '6':
-                case '7':
-                case '8':
-                case '9':
-                    return name[2] == '\0'; // s2 - s9 are volatile
+        break;
 
-                default:
-                    break;
-            }
+      case '2':
+        switch (name[2]) {
+        case '\0':
+          return true; // d2 is volatile
+        case '0':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+        case '6':
+        case '7':
+        case '8':
+        case '9':
+          return name[3] == '\0'; // d20 - d29 are volatile
+        default:
+          break;
         }
-        else if (name[0] == 'q')
-        {
-            switch (name[1])
-            {
-                case '1':
-                    switch (name[2])
-                    {
-                        case '\0':
-                            return true;  // q1 is volatile
-                        case '0':
-                        case '1':
-                        case '2':
-                        case '3':
-                        case '4':
-                        case '5':
-                            return true; // q10-q15 are volatile
-                        default:
-                            break;
-                    };
-                    break;
-                case '0':
-                case '2': 
-                case '3': 
-                    return name[2] == '\0'; // q0-q3 are volatile
-                case '8':
-                case '9':
-                    return name[2] == '\0'; // q8-q9 are volatile
-                default:
-                    break;
-            }
+        break;
+
+      case '3':
+        switch (name[2]) {
+        case '\0':
+          return true; // d3 is volatile
+        case '0':
+        case '1':
+          return name[3] == '\0'; // d30 - d31 are volatile
+        default:
+          break;
         }
-        else if (name[0] == 's' && name[1] == 'p' && name[2] == '\0')
-            return true;
-    }
-    return false;
+        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':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+          return name[3] == '\0'; // s10 - s15 are volatile
+        default:
+          break;
+        }
+        break;
+
+      case '2':
+      case '3':
+      case '4':
+      case '5':
+      case '6':
+      case '7':
+      case '8':
+      case '9':
+        return name[2] == '\0'; // s2 - s9 are volatile
+
+      default:
+        break;
+      }
+    } else if (name[0] == 'q') {
+      switch (name[1]) {
+      case '1':
+        switch (name[2]) {
+        case '\0':
+          return true; // q1 is volatile
+        case '0':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+          return true; // q10-q15 are volatile
+        default:
+          break;
+        };
+        break;
+      case '0':
+      case '2':
+      case '3':
+        return name[2] == '\0'; // q0-q3 are volatile
+      case '8':
+      case '9':
+        return name[2] == '\0'; // q8-q9 are volatile
+      default:
+        break;
+      }
+    } else if (name[0] == 's' && name[1] == 'p' && name[2] == '\0')
+      return true;
+  }
+  return false;
+}
+
+void ABIMacOSX_arm::Initialize() {
+  PluginManager::RegisterPlugin(GetPluginNameStatic(),
+                                "Mac OS X ABI for arm targets", CreateInstance);
 }
 
-void
-ABIMacOSX_arm::Initialize()
-{
-    PluginManager::RegisterPlugin (GetPluginNameStatic(),
-                                   "Mac OS X ABI for arm targets",
-                                   CreateInstance);    
-}
-
-void
-ABIMacOSX_arm::Terminate()
-{
-    PluginManager::UnregisterPlugin (CreateInstance);
-}
-
-lldb_private::ConstString
-ABIMacOSX_arm::GetPluginNameStatic()
-{
-    static ConstString g_name("macosx-arm");
-    return g_name;
+void ABIMacOSX_arm::Terminate() {
+  PluginManager::UnregisterPlugin(CreateInstance);
+}
+
+lldb_private::ConstString ABIMacOSX_arm::GetPluginNameStatic() {
+  static ConstString g_name("macosx-arm");
+  return g_name;
 }
 
 //------------------------------------------------------------------
 // PluginInterface protocol
 //------------------------------------------------------------------
 
-lldb_private::ConstString
-ABIMacOSX_arm::GetPluginName()
-{
-    return GetPluginNameStatic();
+lldb_private::ConstString ABIMacOSX_arm::GetPluginName() {
+  return GetPluginNameStatic();
 }
 
-uint32_t
-ABIMacOSX_arm::GetPluginVersion()
-{
-    return 1;
-}
+uint32_t ABIMacOSX_arm::GetPluginVersion() { return 1; }

Modified: lldb/trunk/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.h?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.h (original)
+++ lldb/trunk/source/Plugins/ABI/MacOSX-arm/ABIMacOSX_arm.h Tue Sep  6 15:57:50 2016
@@ -14,111 +14,89 @@
 // C++ Includes
 // Other libraries and framework includes
 // Project includes
-#include "lldb/lldb-private.h"
 #include "lldb/Target/ABI.h"
+#include "lldb/lldb-private.h"
 
-class ABIMacOSX_arm : public lldb_private::ABI
-{
+class ABIMacOSX_arm : public lldb_private::ABI {
 public:
-    ~ABIMacOSX_arm() override = default;
-    
-    size_t 
-    GetRedZoneSize() const override;
-    
-    bool
-    PrepareTrivialCall(lldb_private::Thread &thread,
-                       lldb::addr_t sp,
-                       lldb::addr_t func_addr,
-                       lldb::addr_t returnAddress,
-                       llvm::ArrayRef<lldb::addr_t> args) const override;
-    
-    bool
-    GetArgumentValues(lldb_private::Thread &thread,
-                      lldb_private::ValueList &values) const override;
-    
-    lldb_private::Error
-    SetReturnValueObject(lldb::StackFrameSP &frame_sp, lldb::ValueObjectSP &new_value) override;
-
-    bool
-    CreateFunctionEntryUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
-    
-    bool
-    CreateDefaultUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
-    
-    bool
-    RegisterIsVolatile(const lldb_private::RegisterInfo *reg_info) override;
-
-    bool
-    CallFrameAddressIsValid(lldb::addr_t cfa) override
-    {
-        // Make sure the stack call frame addresses are are 4 byte aligned
-        if (cfa & (4ull - 1ull))
-            return false;   // Not 4 byte aligned
-        if (cfa == 0)
-            return false;   // Zero is not a valid stack address
-        return true;
-    }
-    
-    bool
-    CodeAddressIsValid(lldb::addr_t pc) override
-    {
-        // Just make sure the address is a valid 32 bit address. Bit zero
-        // might be set due to Thumb function calls, so don't enforce 2 byte
-        // alignment
-        return pc <= UINT32_MAX;
-    }
-    
-    lldb::addr_t
-    FixCodeAddress(lldb::addr_t pc) override
-    {
-        // ARM uses bit zero to signify a code address is thumb, so we must
-        // strip bit zero in any code addresses.
-        return pc & ~(lldb::addr_t)1;
-    }
-
-    const lldb_private::RegisterInfo *
-    GetRegisterInfoArray(uint32_t &count) override;
-
-    bool
-    IsArmv7kProcess (lldb_private::Thread *thread) const;
-
-    //------------------------------------------------------------------
-    // Static Functions
-    //------------------------------------------------------------------
-
-    static void
-    Initialize();
-    
-    static void
-    Terminate();
-    
-    static lldb::ABISP
-    CreateInstance (const lldb_private::ArchSpec &arch);
-    
-    static lldb_private::ConstString
-    GetPluginNameStatic();
-    
-    //------------------------------------------------------------------
-    // PluginInterface protocol
-    //------------------------------------------------------------------
-
-    lldb_private::ConstString
-    GetPluginName() override;
-    
-    uint32_t
-    GetPluginVersion() override;
-    
+  ~ABIMacOSX_arm() override = default;
+
+  size_t GetRedZoneSize() const override;
+
+  bool PrepareTrivialCall(lldb_private::Thread &thread, lldb::addr_t sp,
+                          lldb::addr_t func_addr, lldb::addr_t returnAddress,
+                          llvm::ArrayRef<lldb::addr_t> args) const override;
+
+  bool GetArgumentValues(lldb_private::Thread &thread,
+                         lldb_private::ValueList &values) const override;
+
+  lldb_private::Error
+  SetReturnValueObject(lldb::StackFrameSP &frame_sp,
+                       lldb::ValueObjectSP &new_value) override;
+
+  bool
+  CreateFunctionEntryUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
+
+  bool CreateDefaultUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
+
+  bool RegisterIsVolatile(const lldb_private::RegisterInfo *reg_info) override;
+
+  bool CallFrameAddressIsValid(lldb::addr_t cfa) override {
+    // Make sure the stack call frame addresses are are 4 byte aligned
+    if (cfa & (4ull - 1ull))
+      return false; // Not 4 byte aligned
+    if (cfa == 0)
+      return false; // Zero is not a valid stack address
+    return true;
+  }
+
+  bool CodeAddressIsValid(lldb::addr_t pc) override {
+    // Just make sure the address is a valid 32 bit address. Bit zero
+    // might be set due to Thumb function calls, so don't enforce 2 byte
+    // alignment
+    return pc <= UINT32_MAX;
+  }
+
+  lldb::addr_t FixCodeAddress(lldb::addr_t pc) override {
+    // ARM uses bit zero to signify a code address is thumb, so we must
+    // strip bit zero in any code addresses.
+    return pc & ~(lldb::addr_t)1;
+  }
+
+  const lldb_private::RegisterInfo *
+  GetRegisterInfoArray(uint32_t &count) override;
+
+  bool IsArmv7kProcess(lldb_private::Thread *thread) const;
+
+  //------------------------------------------------------------------
+  // Static Functions
+  //------------------------------------------------------------------
+
+  static void Initialize();
+
+  static void Terminate();
+
+  static lldb::ABISP CreateInstance(const lldb_private::ArchSpec &arch);
+
+  static lldb_private::ConstString GetPluginNameStatic();
+
+  //------------------------------------------------------------------
+  // PluginInterface protocol
+  //------------------------------------------------------------------
+
+  lldb_private::ConstString GetPluginName() override;
+
+  uint32_t GetPluginVersion() override;
+
 protected:
-    lldb::ValueObjectSP
-    GetReturnValueObjectImpl(lldb_private::Thread &thread,
-                             lldb_private::CompilerType &ast_type) const override;
+  lldb::ValueObjectSP
+  GetReturnValueObjectImpl(lldb_private::Thread &thread,
+                           lldb_private::CompilerType &ast_type) const override;
 
 private:
-    ABIMacOSX_arm() : 
-        lldb_private::ABI() 
-    {
-         // Call CreateInstance instead.
-    }
+  ABIMacOSX_arm() : lldb_private::ABI() {
+    // Call CreateInstance instead.
+  }
 };
 
 #endif // liblldb_ABIMacOSX_arm_h_

Modified: lldb/trunk/source/Plugins/ABI/MacOSX-arm64/ABIMacOSX_arm64.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ABI/MacOSX-arm64/ABIMacOSX_arm64.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ABI/MacOSX-arm64/ABIMacOSX_arm64.cpp (original)
+++ lldb/trunk/source/Plugins/ABI/MacOSX-arm64/ABIMacOSX_arm64.cpp Tue Sep  6 15:57:50 2016
@@ -40,1062 +40,2414 @@ using namespace lldb_private;
 
 static const char *pluginDesc = "Mac OS X ABI for arm64 targets";
 
-static RegisterInfo g_register_infos[] = 
-{
-    //  NAME       ALT       SZ OFF ENCODING          FORMAT                   EH_FRAME             DWARF                  GENERIC                     PROCESS PLUGIN          LLDB NATIVE
-    //  ========== =======   == === =============     ===================      ===================  ====================== =========================== ======================= ======================
-    {   "x0",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x0,       LLDB_REGNUM_GENERIC_ARG1,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x1",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x1,       LLDB_REGNUM_GENERIC_ARG2,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x2",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x2,       LLDB_REGNUM_GENERIC_ARG3,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x3",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x3,       LLDB_REGNUM_GENERIC_ARG4,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x4",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x4,       LLDB_REGNUM_GENERIC_ARG5,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x5",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x5,       LLDB_REGNUM_GENERIC_ARG6,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x6",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x6,       LLDB_REGNUM_GENERIC_ARG7,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x7",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x7,       LLDB_REGNUM_GENERIC_ARG8,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x8",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x8,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x9",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x9,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x10",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x10,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x11",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x11,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x12",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x12,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x13",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x13,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x14",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x14,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x15",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x15,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x16",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x16,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x17",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x17,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x18",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x18,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x19",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x19,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x20",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x20,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x21",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x21,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x22",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x22,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x23",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x23,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x24",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x24,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x25",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x25,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x26",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x26,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x27",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x27,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x28",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x28,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "fp",      "x29",     8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x29,      LLDB_REGNUM_GENERIC_FP,     LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "lr",      "x30",     8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x30,      LLDB_REGNUM_GENERIC_RA,     LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "sp",      "x31",     8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x31,      LLDB_REGNUM_GENERIC_SP,     LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "pc",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::pc,       LLDB_REGNUM_GENERIC_PC,     LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "cpsr",    "psr",     4, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::cpsr,     LLDB_REGNUM_GENERIC_FLAGS,  LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-
-    {   "v0",      nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v0,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v1",      nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v1,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v2",      nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v2,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v3",      nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v3,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v4",      nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v4,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v5",      nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v5,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v6",      nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v6,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v7",      nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v7,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v8",      nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v8,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v9",      nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v9,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v10",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v10,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v11",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v11,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v12",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v12,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v13",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v13,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v14",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v14,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v15",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v15,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v16",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v16,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v17",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v17,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v18",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v18,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v19",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v19,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v20",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v20,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v21",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v21,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v22",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v22,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v23",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v23,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v24",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v24,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v25",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v25,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v26",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v26,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v27",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v27,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v28",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v28,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v29",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v29,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v30",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v30,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v31",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v31,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-
-    {   "fpsr",    nullptr,   4, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "fpcr",    nullptr,   4, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-
-    {   "s0",      nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s1",      nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s2",      nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s3",      nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s4",      nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s5",      nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s6",      nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s7",      nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s8",      nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s9",      nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s10",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s11",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s12",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s13",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s14",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s15",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s16",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s17",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s18",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s19",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s20",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s21",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s22",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s23",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s24",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s25",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s26",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s27",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s28",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s29",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s30",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s31",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-
-    {   "d0",      nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d1",      nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d2",      nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d3",      nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d4",      nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d5",      nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d6",      nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d7",      nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d8",      nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d9",      nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d10",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d11",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d12",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d13",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d14",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d15",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d16",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d17",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d18",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d19",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d20",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d21",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d22",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d23",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d24",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d25",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d26",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d27",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d28",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d29",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d30",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d31",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 }
-};
+static RegisterInfo g_register_infos[] = {
+    //  NAME       ALT       SZ OFF ENCODING          FORMAT
+    //  EH_FRAME             DWARF                  GENERIC
+    //  PROCESS PLUGIN          LLDB NATIVE
+    //  ========== =======   == === =============     ===================
+    //  ===================  ====================== ===========================
+    //  ======================= ======================
+    {"x0",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x0, LLDB_REGNUM_GENERIC_ARG1,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x1",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x1, LLDB_REGNUM_GENERIC_ARG2,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x2",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x2, LLDB_REGNUM_GENERIC_ARG3,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x3",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x3, LLDB_REGNUM_GENERIC_ARG4,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x4",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x4, LLDB_REGNUM_GENERIC_ARG5,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x5",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x5, LLDB_REGNUM_GENERIC_ARG6,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x6",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x6, LLDB_REGNUM_GENERIC_ARG7,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x7",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x7, LLDB_REGNUM_GENERIC_ARG8,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x8",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x8, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x9",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x9, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x10",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x10, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x11",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x11, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x12",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x12, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x13",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x13, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x14",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x14, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x15",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x15, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x16",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x16, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x17",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x17, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x18",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x18, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x19",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x19, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x20",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x20, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x21",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x21, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x22",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x22, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x23",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x23, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x24",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x24, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x25",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x25, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x26",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x26, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x27",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x27, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x28",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x28, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"fp",
+     "x29",
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x29, LLDB_REGNUM_GENERIC_FP,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"lr",
+     "x30",
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x30, LLDB_REGNUM_GENERIC_RA,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"sp",
+     "x31",
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x31, LLDB_REGNUM_GENERIC_SP,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"pc",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::pc, LLDB_REGNUM_GENERIC_PC,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"cpsr",
+     "psr",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::cpsr, LLDB_REGNUM_GENERIC_FLAGS,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+
+    {"v0",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v0, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v1",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v1, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v2",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v2, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v3",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v3, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v4",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v4, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v5",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v5, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v6",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v6, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v7",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v7, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v8",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v8, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v9",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v9, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v10",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v10, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v11",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v11, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v12",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v12, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v13",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v13, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v14",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v14, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v15",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v15, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v16",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v16, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v17",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v17, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v18",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v18, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v19",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v19, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v20",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v20, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v21",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v21, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v22",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v22, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v23",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v23, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v24",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v24, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v25",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v25, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v26",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v26, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v27",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v27, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v28",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v28, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v29",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v29, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v30",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v30, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v31",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v31, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+
+    {"fpsr",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"fpcr",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+
+    {"s0",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s1",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s2",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s3",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s4",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s5",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s6",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s7",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s8",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s9",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s10",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s11",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s12",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s13",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s14",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s15",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s16",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s17",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s18",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s19",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s20",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s21",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s22",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s23",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s24",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s25",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s26",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s27",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s28",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s29",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s30",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s31",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+
+    {"d0",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d1",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d2",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d3",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d4",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d5",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d6",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d7",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d8",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d9",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d10",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d11",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d12",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d13",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d14",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d15",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d16",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d17",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d18",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d19",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d20",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d21",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d22",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d23",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d24",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d25",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d26",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d27",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d28",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d29",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d30",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d31",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0}};
 
-static const uint32_t k_num_register_infos = llvm::array_lengthof(g_register_infos);
+static const uint32_t k_num_register_infos =
+    llvm::array_lengthof(g_register_infos);
 static bool g_register_info_names_constified = false;
 
 const lldb_private::RegisterInfo *
-ABIMacOSX_arm64::GetRegisterInfoArray (uint32_t &count)
-{
-    // Make the C-string names and alt_names for the register infos into const 
-    // C-string values by having the ConstString unique the names in the global
-    // constant C-string pool.
-    if (!g_register_info_names_constified)
-    {
-        g_register_info_names_constified = true;
-        for (uint32_t i = 0; i < k_num_register_infos; ++i)
-        {
-            if (g_register_infos[i].name)
-                g_register_infos[i].name = ConstString(g_register_infos[i].name).GetCString();
-            if (g_register_infos[i].alt_name)
-                g_register_infos[i].alt_name = ConstString(g_register_infos[i].alt_name).GetCString();
-        }
+ABIMacOSX_arm64::GetRegisterInfoArray(uint32_t &count) {
+  // Make the C-string names and alt_names for the register infos into const
+  // C-string values by having the ConstString unique the names in the global
+  // constant C-string pool.
+  if (!g_register_info_names_constified) {
+    g_register_info_names_constified = true;
+    for (uint32_t i = 0; i < k_num_register_infos; ++i) {
+      if (g_register_infos[i].name)
+        g_register_infos[i].name =
+            ConstString(g_register_infos[i].name).GetCString();
+      if (g_register_infos[i].alt_name)
+        g_register_infos[i].alt_name =
+            ConstString(g_register_infos[i].alt_name).GetCString();
     }
-    count = k_num_register_infos;
-    return g_register_infos;
+  }
+  count = k_num_register_infos;
+  return g_register_infos;
 }
 
-size_t
-ABIMacOSX_arm64::GetRedZoneSize () const
-{
-    return 128;
-}
+size_t ABIMacOSX_arm64::GetRedZoneSize() const { return 128; }
 
 //------------------------------------------------------------------
 // Static Functions
 //------------------------------------------------------------------
 
 ABISP
-ABIMacOSX_arm64::CreateInstance (const ArchSpec &arch)
-{
-    static ABISP g_abi_sp;
-    const llvm::Triple::ArchType arch_type = arch.GetTriple().getArch();
-    const llvm::Triple::VendorType vendor_type = arch.GetTriple().getVendor();
-
-    if (vendor_type == llvm::Triple::Apple)
-    {
-	    if (arch_type == llvm::Triple::aarch64)
-        {
-            if (!g_abi_sp)
-                g_abi_sp.reset (new ABIMacOSX_arm64);
-            return g_abi_sp;
-        }
+ABIMacOSX_arm64::CreateInstance(const ArchSpec &arch) {
+  static ABISP g_abi_sp;
+  const llvm::Triple::ArchType arch_type = arch.GetTriple().getArch();
+  const llvm::Triple::VendorType vendor_type = arch.GetTriple().getVendor();
+
+  if (vendor_type == llvm::Triple::Apple) {
+    if (arch_type == llvm::Triple::aarch64) {
+      if (!g_abi_sp)
+        g_abi_sp.reset(new ABIMacOSX_arm64);
+      return g_abi_sp;
     }
+  }
 
-    return ABISP();
+  return ABISP();
 }
 
-bool
-ABIMacOSX_arm64::PrepareTrivialCall (Thread &thread,
-                                     lldb::addr_t sp,
-                                     lldb::addr_t func_addr,
-                                     lldb::addr_t return_addr,
-                                     llvm::ArrayRef<lldb::addr_t> args) const
-{
-    RegisterContext *reg_ctx = thread.GetRegisterContext().get();
-    if (!reg_ctx)
-        return false;
-
-    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
-
-    if (log)
-    {
-        StreamString s;
-        s.Printf("ABISysV_x86_64::PrepareTrivialCall (tid = 0x%" PRIx64 ", sp = 0x%" PRIx64 ", func_addr = 0x%" PRIx64 ", return_addr = 0x%" PRIx64,
-                 thread.GetID(),
-                 (uint64_t)sp,
-                 (uint64_t)func_addr,
-                 (uint64_t)return_addr);
-
-        for (size_t i = 0; i < args.size(); ++i)
-            s.Printf (", arg%d = 0x%" PRIx64, static_cast<int>(i + 1), args[i]);
-        s.PutCString (")");
-        log->PutCString(s.GetString().c_str());
-    }
-
-    const uint32_t pc_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC);
-    const uint32_t sp_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_SP);
-    const uint32_t ra_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_RA);
-
-    // x0 - x7 contain first 8 simple args
-    if (args.size() > 8) // TODO handle more than 6 arguments
-        return false;
+bool ABIMacOSX_arm64::PrepareTrivialCall(
+    Thread &thread, lldb::addr_t sp, lldb::addr_t func_addr,
+    lldb::addr_t return_addr, llvm::ArrayRef<lldb::addr_t> args) const {
+  RegisterContext *reg_ctx = thread.GetRegisterContext().get();
+  if (!reg_ctx)
+    return false;
+
+  Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EXPRESSIONS));
+
+  if (log) {
+    StreamString s;
+    s.Printf("ABISysV_x86_64::PrepareTrivialCall (tid = 0x%" PRIx64
+             ", sp = 0x%" PRIx64 ", func_addr = 0x%" PRIx64
+             ", return_addr = 0x%" PRIx64,
+             thread.GetID(), (uint64_t)sp, (uint64_t)func_addr,
+             (uint64_t)return_addr);
 
     for (size_t i = 0; i < args.size(); ++i)
-    {
-        const RegisterInfo *reg_info = reg_ctx->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1 + i);
-        if (log)
-            log->Printf("About to write arg%d (0x%" PRIx64 ") into %s",
-                        static_cast<int>(i + 1), args[i], reg_info->name);
-        if (!reg_ctx->WriteRegisterFromUnsigned(reg_info, args[i]))
-            return false;
-    }
+      s.Printf(", arg%d = 0x%" PRIx64, static_cast<int>(i + 1), args[i]);
+    s.PutCString(")");
+    log->PutCString(s.GetString().c_str());
+  }
+
+  const uint32_t pc_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber(
+      eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC);
+  const uint32_t sp_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber(
+      eRegisterKindGeneric, LLDB_REGNUM_GENERIC_SP);
+  const uint32_t ra_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber(
+      eRegisterKindGeneric, LLDB_REGNUM_GENERIC_RA);
+
+  // x0 - x7 contain first 8 simple args
+  if (args.size() > 8) // TODO handle more than 6 arguments
+    return false;
+
+  for (size_t i = 0; i < args.size(); ++i) {
+    const RegisterInfo *reg_info = reg_ctx->GetRegisterInfo(
+        eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1 + i);
+    if (log)
+      log->Printf("About to write arg%d (0x%" PRIx64 ") into %s",
+                  static_cast<int>(i + 1), args[i], reg_info->name);
+    if (!reg_ctx->WriteRegisterFromUnsigned(reg_info, args[i]))
+      return false;
+  }
+
+  // Set "lr" to the return address
+  if (!reg_ctx->WriteRegisterFromUnsigned(
+          reg_ctx->GetRegisterInfoAtIndex(ra_reg_num), return_addr))
+    return false;
+
+  // Set "sp" to the requested value
+  if (!reg_ctx->WriteRegisterFromUnsigned(
+          reg_ctx->GetRegisterInfoAtIndex(sp_reg_num), sp))
+    return false;
+
+  // Set "pc" to the address requested
+  if (!reg_ctx->WriteRegisterFromUnsigned(
+          reg_ctx->GetRegisterInfoAtIndex(pc_reg_num), func_addr))
+    return false;
 
-    // Set "lr" to the return address
-    if (!reg_ctx->WriteRegisterFromUnsigned (reg_ctx->GetRegisterInfoAtIndex (ra_reg_num), return_addr))
-        return false;
+  return true;
+}
 
-    // Set "sp" to the requested value
-    if (!reg_ctx->WriteRegisterFromUnsigned (reg_ctx->GetRegisterInfoAtIndex (sp_reg_num), sp))
+bool ABIMacOSX_arm64::GetArgumentValues(Thread &thread,
+                                        ValueList &values) const {
+  uint32_t num_values = values.GetSize();
+
+  ExecutionContext exe_ctx(thread.shared_from_this());
+
+  // Extract the register context so we can read arguments from registers
+
+  RegisterContext *reg_ctx = thread.GetRegisterContext().get();
+
+  if (!reg_ctx)
+    return false;
+
+  addr_t sp = 0;
+
+  for (uint32_t value_idx = 0; value_idx < num_values; ++value_idx) {
+    // We currently only support extracting values with Clang QualTypes.
+    // Do we care about others?
+    Value *value = values.GetValueAtIndex(value_idx);
+
+    if (!value)
+      return false;
+
+    CompilerType value_type = value->GetCompilerType();
+    if (value_type) {
+      bool is_signed = false;
+      size_t bit_width = 0;
+      if (value_type.IsIntegerOrEnumerationType(is_signed)) {
+        bit_width = value_type.GetBitSize(&thread);
+      } else if (value_type.IsPointerOrReferenceType()) {
+        bit_width = value_type.GetBitSize(&thread);
+      } else {
+        // We only handle integer, pointer and reference types currently...
         return false;
+      }
 
-    // Set "pc" to the address requested
-    if (!reg_ctx->WriteRegisterFromUnsigned (reg_ctx->GetRegisterInfoAtIndex (pc_reg_num), func_addr))
-        return false;
+      if (bit_width <= (exe_ctx.GetProcessRef().GetAddressByteSize() * 8)) {
+        if (value_idx < 8) {
+          // Arguments 1-6 are in x0-x5...
+          const RegisterInfo *reg_info = nullptr;
+          // Search by generic ID first, then fall back to by name
+          uint32_t arg_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber(
+              eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1 + value_idx);
+          if (arg_reg_num != LLDB_INVALID_REGNUM) {
+            reg_info = reg_ctx->GetRegisterInfoAtIndex(arg_reg_num);
+          } else {
+            switch (value_idx) {
+            case 0:
+              reg_info = reg_ctx->GetRegisterInfoByName("x0");
+              break;
+            case 1:
+              reg_info = reg_ctx->GetRegisterInfoByName("x1");
+              break;
+            case 2:
+              reg_info = reg_ctx->GetRegisterInfoByName("x2");
+              break;
+            case 3:
+              reg_info = reg_ctx->GetRegisterInfoByName("x3");
+              break;
+            case 4:
+              reg_info = reg_ctx->GetRegisterInfoByName("x4");
+              break;
+            case 5:
+              reg_info = reg_ctx->GetRegisterInfoByName("x5");
+              break;
+            case 6:
+              reg_info = reg_ctx->GetRegisterInfoByName("x6");
+              break;
+            case 7:
+              reg_info = reg_ctx->GetRegisterInfoByName("x7");
+              break;
+            }
+          }
 
-    return true;
-}
+          if (reg_info) {
+            RegisterValue reg_value;
 
-bool
-ABIMacOSX_arm64::GetArgumentValues (Thread &thread, ValueList &values) const
-{
-    uint32_t num_values = values.GetSize();
-    
-    ExecutionContext exe_ctx (thread.shared_from_this());
-    
-    // Extract the register context so we can read arguments from registers
-    
-    RegisterContext *reg_ctx = thread.GetRegisterContext().get();
-    
-    if (!reg_ctx)
-        return false;
-    
-    addr_t sp = 0;
-    
-    for (uint32_t value_idx = 0; value_idx < num_values; ++value_idx)
-    {
-        // We currently only support extracting values with Clang QualTypes.
-        // Do we care about others?
-        Value *value = values.GetValueAtIndex(value_idx);
-        
-        if (!value)
-            return false;
-        
-        CompilerType value_type = value->GetCompilerType();
-        if (value_type)
-        {
-            bool is_signed = false;
-            size_t bit_width = 0;
-            if (value_type.IsIntegerOrEnumerationType (is_signed))
-            {
-                bit_width = value_type.GetBitSize(&thread);
-            }
-            else if (value_type.IsPointerOrReferenceType ())
-            {
-                bit_width = value_type.GetBitSize(&thread);
-            }
-            else
-            {
-                // We only handle integer, pointer and reference types currently...
+            if (reg_ctx->ReadRegister(reg_info, reg_value)) {
+              if (is_signed)
+                reg_value.SignExtend(bit_width);
+              if (!reg_value.GetScalarValue(value->GetScalar()))
                 return false;
+              continue;
             }
-            
-            if (bit_width <= (exe_ctx.GetProcessRef().GetAddressByteSize() * 8))
-            {
-                if (value_idx < 8)
-                {
-                    // Arguments 1-6 are in x0-x5...
-                    const RegisterInfo *reg_info = nullptr;
-                    // Search by generic ID first, then fall back to by name
-                    uint32_t arg_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1 + value_idx);
-                    if (arg_reg_num != LLDB_INVALID_REGNUM)
-                    {
-                        reg_info = reg_ctx->GetRegisterInfoAtIndex(arg_reg_num);
-                    }
-                    else
-                    {
-                        switch (value_idx)
-                        {
-                            case 0: reg_info = reg_ctx->GetRegisterInfoByName("x0"); break;
-                            case 1: reg_info = reg_ctx->GetRegisterInfoByName("x1"); break;
-                            case 2: reg_info = reg_ctx->GetRegisterInfoByName("x2"); break;
-                            case 3: reg_info = reg_ctx->GetRegisterInfoByName("x3"); break;
-                            case 4: reg_info = reg_ctx->GetRegisterInfoByName("x4"); break;
-                            case 5: reg_info = reg_ctx->GetRegisterInfoByName("x5"); break;
-                            case 6: reg_info = reg_ctx->GetRegisterInfoByName("x6"); break;
-                            case 7: reg_info = reg_ctx->GetRegisterInfoByName("x7"); break;
-                        }
-                    }
-                    
-                    if (reg_info)
-                    {
-                        RegisterValue reg_value;
-                        
-                        if (reg_ctx->ReadRegister(reg_info, reg_value))
-                        {
-                            if (is_signed)
-                                reg_value.SignExtend(bit_width);
-                            if (!reg_value.GetScalarValue(value->GetScalar()))
-                                return false;
-                            continue;
-                        }
-                    }
-                    return false;
-                }
-                else
-                {
-                    if (sp == 0)
-                    {
-                        // Read the stack pointer if we already haven't read it
-                        sp = reg_ctx->GetSP(0);
-                        if (sp == 0)
-                            return false;
-                    }
+          }
+          return false;
+        } else {
+          if (sp == 0) {
+            // Read the stack pointer if we already haven't read it
+            sp = reg_ctx->GetSP(0);
+            if (sp == 0)
+              return false;
+          }
+
+          // Arguments 5 on up are on the stack
+          const uint32_t arg_byte_size = (bit_width + (8 - 1)) / 8;
+          Error error;
+          if (!exe_ctx.GetProcessRef().ReadScalarIntegerFromMemory(
+                  sp, arg_byte_size, is_signed, value->GetScalar(), error))
+            return false;
 
-                    // Arguments 5 on up are on the stack
-                    const uint32_t arg_byte_size = (bit_width + (8-1)) / 8;
-                    Error error;
-                    if (!exe_ctx.GetProcessRef().ReadScalarIntegerFromMemory(sp, arg_byte_size, is_signed, value->GetScalar(), error))
-                        return false;
-                    
-                    sp += arg_byte_size;
-                    // Align up to the next 8 byte boundary if needed
-                    if (sp % 8)
-                    {
-                        sp >>= 3;
-                        sp += 1;
-                        sp <<= 3;
-                    }
-                }
-            }
+          sp += arg_byte_size;
+          // Align up to the next 8 byte boundary if needed
+          if (sp % 8) {
+            sp >>= 3;
+            sp += 1;
+            sp <<= 3;
+          }
         }
+      }
     }
-    return true;
+  }
+  return true;
 }
 
-Error
-ABIMacOSX_arm64::SetReturnValueObject(lldb::StackFrameSP &frame_sp, lldb::ValueObjectSP &new_value_sp)
-{
-    Error error;
-    if (!new_value_sp)
-    {
-        error.SetErrorString("Empty value object for return value.");
-        return error;
-    }
-    
-    CompilerType return_value_type = new_value_sp->GetCompilerType();
-    if (!return_value_type)
-    {
-        error.SetErrorString ("Null clang type for return value.");
-        return error;
+Error ABIMacOSX_arm64::SetReturnValueObject(lldb::StackFrameSP &frame_sp,
+                                            lldb::ValueObjectSP &new_value_sp) {
+  Error error;
+  if (!new_value_sp) {
+    error.SetErrorString("Empty value object for return value.");
+    return error;
+  }
+
+  CompilerType return_value_type = new_value_sp->GetCompilerType();
+  if (!return_value_type) {
+    error.SetErrorString("Null clang type for return value.");
+    return error;
+  }
+
+  Thread *thread = frame_sp->GetThread().get();
+
+  RegisterContext *reg_ctx = thread->GetRegisterContext().get();
+
+  if (reg_ctx) {
+    DataExtractor data;
+    Error data_error;
+    const uint64_t byte_size = new_value_sp->GetData(data, data_error);
+    if (data_error.Fail()) {
+      error.SetErrorStringWithFormat(
+          "Couldn't convert return value to raw data: %s",
+          data_error.AsCString());
+      return error;
     }
 
-    Thread *thread = frame_sp->GetThread().get();
-    
-    RegisterContext *reg_ctx = thread->GetRegisterContext().get();
-    
-    if (reg_ctx)
-    {
-        DataExtractor data;
-        Error data_error;
-        const uint64_t byte_size = new_value_sp->GetData(data, data_error);
-        if (data_error.Fail())
-        {
-            error.SetErrorStringWithFormat("Couldn't convert return value to raw data: %s", data_error.AsCString());
-            return error;
-        }
+    const uint32_t type_flags = return_value_type.GetTypeInfo(nullptr);
+    if (type_flags & eTypeIsScalar || type_flags & eTypeIsPointer) {
+      if (type_flags & eTypeIsInteger || type_flags & eTypeIsPointer) {
+        // Extract the register context so we can read arguments from registers
+        lldb::offset_t offset = 0;
+        if (byte_size <= 16) {
+          const RegisterInfo *x0_info = reg_ctx->GetRegisterInfoByName("x0", 0);
+          if (byte_size <= 8) {
+            uint64_t raw_value = data.GetMaxU64(&offset, byte_size);
+
+            if (!reg_ctx->WriteRegisterFromUnsigned(x0_info, raw_value))
+              error.SetErrorString("failed to write register x0");
+          } else {
+            uint64_t raw_value = data.GetMaxU64(&offset, 8);
+
+            if (reg_ctx->WriteRegisterFromUnsigned(x0_info, raw_value)) {
+              const RegisterInfo *x1_info =
+                  reg_ctx->GetRegisterInfoByName("x1", 0);
+              raw_value = data.GetMaxU64(&offset, byte_size - offset);
 
-        const uint32_t type_flags = return_value_type.GetTypeInfo(nullptr);
-        if (type_flags & eTypeIsScalar ||
-            type_flags & eTypeIsPointer)
-        {
-            if (type_flags & eTypeIsInteger ||
-                type_flags & eTypeIsPointer )
-            {
-                // Extract the register context so we can read arguments from registers
-                lldb::offset_t offset = 0;
-                if (byte_size <= 16)
-                {
-                    const RegisterInfo *x0_info = reg_ctx->GetRegisterInfoByName("x0", 0);
-                    if (byte_size <= 8)
-                    {
-                        uint64_t raw_value = data.GetMaxU64(&offset, byte_size);
-                        
-                        if (!reg_ctx->WriteRegisterFromUnsigned (x0_info, raw_value))
-                            error.SetErrorString ("failed to write register x0");
-                    }
-                    else
-                    {
-                        uint64_t raw_value = data.GetMaxU64(&offset, 8);
-                        
-                        if (reg_ctx->WriteRegisterFromUnsigned (x0_info, raw_value))
-                        {
-                            const RegisterInfo *x1_info = reg_ctx->GetRegisterInfoByName("x1", 0);
-                            raw_value = data.GetMaxU64(&offset, byte_size - offset);
-                            
-                            if (!reg_ctx->WriteRegisterFromUnsigned (x1_info, raw_value))
-                                error.SetErrorString ("failed to write register x1");
-                        }
-                    }
-                }
-                else
-                {
-                    error.SetErrorString("We don't support returning longer than 128 bit integer values at present.");
-                }
+              if (!reg_ctx->WriteRegisterFromUnsigned(x1_info, raw_value))
+                error.SetErrorString("failed to write register x1");
             }
-            else if (type_flags & eTypeIsFloat)
-            {
-                if (type_flags & eTypeIsComplex)
-                {
-                    // Don't handle complex yet.
-                    error.SetErrorString ("returning complex float values are not supported");
-                }
-                else
-                {
-                    const RegisterInfo *v0_info = reg_ctx->GetRegisterInfoByName("v0", 0);
-
-                    if (v0_info)
-                    {
-                        if (byte_size <= 16)
-                        {
-                            if (byte_size <= RegisterValue::GetMaxByteSize())
-                            {
-                                RegisterValue reg_value;
-                                error = reg_value.SetValueFromData (v0_info, data, 0, true);
-                                if (error.Success())
-                                {
-                                    if (!reg_ctx->WriteRegister (v0_info, reg_value))
-                                        error.SetErrorString ("failed to write register v0");
-                                }
-                            }
-                            else
-                            {
-                                error.SetErrorStringWithFormat ("returning float values with a byte size of %" PRIu64 " are not supported", byte_size);
-                            }
-                        }
-                        else
-                        {
-                            error.SetErrorString("returning float values longer than 128 bits are not supported");            
-                        }
-                    }
-                    else
-                    {
-                        error.SetErrorString("v0 register is not available on this target");
-                    }
+          }
+        } else {
+          error.SetErrorString("We don't support returning longer than 128 bit "
+                               "integer values at present.");
+        }
+      } else if (type_flags & eTypeIsFloat) {
+        if (type_flags & eTypeIsComplex) {
+          // Don't handle complex yet.
+          error.SetErrorString(
+              "returning complex float values are not supported");
+        } else {
+          const RegisterInfo *v0_info = reg_ctx->GetRegisterInfoByName("v0", 0);
+
+          if (v0_info) {
+            if (byte_size <= 16) {
+              if (byte_size <= RegisterValue::GetMaxByteSize()) {
+                RegisterValue reg_value;
+                error = reg_value.SetValueFromData(v0_info, data, 0, true);
+                if (error.Success()) {
+                  if (!reg_ctx->WriteRegister(v0_info, reg_value))
+                    error.SetErrorString("failed to write register v0");
                 }
+              } else {
+                error.SetErrorStringWithFormat(
+                    "returning float values with a byte size of %" PRIu64
+                    " are not supported",
+                    byte_size);
+              }
+            } else {
+              error.SetErrorString("returning float values longer than 128 "
+                                   "bits are not supported");
             }
+          } else {
+            error.SetErrorString("v0 register is not available on this target");
+          }
         }
-        else if (type_flags & eTypeIsVector)
-        {
-            if (byte_size > 0)
-            {
-                const RegisterInfo *v0_info = reg_ctx->GetRegisterInfoByName("v0", 0);
-                
-                if (v0_info)
-                {
-                    if (byte_size <= v0_info->byte_size)
-                    {
-                        RegisterValue reg_value;
-                        error = reg_value.SetValueFromData (v0_info, data, 0, true);
-                        if (error.Success())
-                        {
-                            if (!reg_ctx->WriteRegister (v0_info, reg_value))
-                                error.SetErrorString ("failed to write register v0");
-                        }
-                    }
-                }
+      }
+    } else if (type_flags & eTypeIsVector) {
+      if (byte_size > 0) {
+        const RegisterInfo *v0_info = reg_ctx->GetRegisterInfoByName("v0", 0);
+
+        if (v0_info) {
+          if (byte_size <= v0_info->byte_size) {
+            RegisterValue reg_value;
+            error = reg_value.SetValueFromData(v0_info, data, 0, true);
+            if (error.Success()) {
+              if (!reg_ctx->WriteRegister(v0_info, reg_value))
+                error.SetErrorString("failed to write register v0");
             }
+          }
         }
+      }
     }
-    else
-    {
-        error.SetErrorString("no registers are available");        
-    }
-    
-    return error;
+  } else {
+    error.SetErrorString("no registers are available");
+  }
+
+  return error;
 }
 
-bool
-ABIMacOSX_arm64::CreateFunctionEntryUnwindPlan (UnwindPlan &unwind_plan)
-{
-    unwind_plan.Clear();
-    unwind_plan.SetRegisterKind (eRegisterKindDWARF);
-    
-    uint32_t lr_reg_num = arm64_dwarf::lr;
-    uint32_t sp_reg_num = arm64_dwarf::sp;
-    uint32_t pc_reg_num = arm64_dwarf::pc;
-    
-    UnwindPlan::RowSP row(new UnwindPlan::Row);
-    
-    // Our previous Call Frame Address is the stack pointer
-    row->GetCFAValue().SetIsRegisterPlusOffset (sp_reg_num, 0);
-    
-    // Our previous PC is in the LR
-    row->SetRegisterLocationToRegister(pc_reg_num, lr_reg_num, true);
-    
-    unwind_plan.AppendRow (row);
-    
-    // All other registers are the same.
-    
-    unwind_plan.SetSourceName ("arm64 at-func-entry default");
-    unwind_plan.SetSourcedFromCompiler (eLazyBoolNo);
+bool ABIMacOSX_arm64::CreateFunctionEntryUnwindPlan(UnwindPlan &unwind_plan) {
+  unwind_plan.Clear();
+  unwind_plan.SetRegisterKind(eRegisterKindDWARF);
+
+  uint32_t lr_reg_num = arm64_dwarf::lr;
+  uint32_t sp_reg_num = arm64_dwarf::sp;
+  uint32_t pc_reg_num = arm64_dwarf::pc;
+
+  UnwindPlan::RowSP row(new UnwindPlan::Row);
+
+  // Our previous Call Frame Address is the stack pointer
+  row->GetCFAValue().SetIsRegisterPlusOffset(sp_reg_num, 0);
 
-    return true;
+  // Our previous PC is in the LR
+  row->SetRegisterLocationToRegister(pc_reg_num, lr_reg_num, true);
+
+  unwind_plan.AppendRow(row);
+
+  // All other registers are the same.
+
+  unwind_plan.SetSourceName("arm64 at-func-entry default");
+  unwind_plan.SetSourcedFromCompiler(eLazyBoolNo);
+
+  return true;
 }
 
-bool
-ABIMacOSX_arm64::CreateDefaultUnwindPlan (UnwindPlan &unwind_plan)
-{
-    unwind_plan.Clear();
-    unwind_plan.SetRegisterKind (eRegisterKindDWARF);
-    
-    uint32_t fp_reg_num = arm64_dwarf::fp;
-    uint32_t pc_reg_num = arm64_dwarf::pc;
-
-    UnwindPlan::RowSP row(new UnwindPlan::Row);    
-    const int32_t ptr_size = 8;
-    
-    row->GetCFAValue().SetIsRegisterPlusOffset (fp_reg_num, 2 * ptr_size);
-    row->SetOffset (0);
-    
-    row->SetRegisterLocationToAtCFAPlusOffset(fp_reg_num, ptr_size * -2, true);
-    row->SetRegisterLocationToAtCFAPlusOffset(pc_reg_num, ptr_size * -1, true);
-    
-    unwind_plan.AppendRow (row);
-    unwind_plan.SetSourceName ("arm64-apple-darwin default unwind plan");
-    unwind_plan.SetSourcedFromCompiler (eLazyBoolNo);
-    unwind_plan.SetUnwindPlanValidAtAllInstructions (eLazyBoolNo);
-    return true;
+bool ABIMacOSX_arm64::CreateDefaultUnwindPlan(UnwindPlan &unwind_plan) {
+  unwind_plan.Clear();
+  unwind_plan.SetRegisterKind(eRegisterKindDWARF);
+
+  uint32_t fp_reg_num = arm64_dwarf::fp;
+  uint32_t pc_reg_num = arm64_dwarf::pc;
+
+  UnwindPlan::RowSP row(new UnwindPlan::Row);
+  const int32_t ptr_size = 8;
+
+  row->GetCFAValue().SetIsRegisterPlusOffset(fp_reg_num, 2 * ptr_size);
+  row->SetOffset(0);
+
+  row->SetRegisterLocationToAtCFAPlusOffset(fp_reg_num, ptr_size * -2, true);
+  row->SetRegisterLocationToAtCFAPlusOffset(pc_reg_num, ptr_size * -1, true);
+
+  unwind_plan.AppendRow(row);
+  unwind_plan.SetSourceName("arm64-apple-darwin default unwind plan");
+  unwind_plan.SetSourcedFromCompiler(eLazyBoolNo);
+  unwind_plan.SetUnwindPlanValidAtAllInstructions(eLazyBoolNo);
+  return true;
 }
 
-// AAPCS64 (Procedure Call Standard for the ARM 64-bit Architecture) says 
-// registers x19 through x28 and sp are callee preserved.  
-// v8-v15 are non-volatile (and specifically only the lower 8 bytes of these regs),
+// AAPCS64 (Procedure Call Standard for the ARM 64-bit Architecture) says
+// registers x19 through x28 and sp are callee preserved.
+// v8-v15 are non-volatile (and specifically only the lower 8 bytes of these
+// regs),
 // the rest of the fp/SIMD registers are volatile.
 
 // We treat x29 as callee preserved also, else the unwinder won't try to
 // retrieve fp saves.
 
-bool
-ABIMacOSX_arm64::RegisterIsVolatile (const RegisterInfo *reg_info)
-{
-    if (reg_info)
-    {
-        const char *name = reg_info->name;
-
-        // Sometimes we'll be called with the "alternate" name for these registers;
-        // recognize them as non-volatile.
-
-        if (name[0] == 'p' && name[1] == 'c')        // pc
-            return false;
-        if (name[0] == 'f' && name[1] == 'p')        // fp
-            return false;
-        if (name[0] == 's' && name[1] == 'p')        // sp
-            return false;
-        if (name[0] == 'l' && name[1] == 'r')        // lr
-            return false;
-
-        if (name[0] == 'x')
-        {
-            // Volatile registers: x0-x18, x30 (lr)
-            // Return false for the non-volatile gpr regs, true for everything else
-            switch (name[1])
-            {
-                case '1':
-                    switch (name[2])
-                    {
-                        case '9': 
-                            return false;             // x19 is non-volatile
-                        default:
-                          return true;
-                    }
-                        break;
-                case '2':
-                    switch (name[2])
-                    {
-                        case '0':
-                        case '1': 
-                        case '2':
-                        case '3':
-                        case '4':
-                        case '5':
-                        case '6':
-                        case '7':
-                        case '8': 
-                            return false;             // x20 - 28 are non-volatile
-                        case '9': 
-                            return false;             // x29 aka fp treat as non-volatile on Darwin
-                        default:
-                            return true;
-                    }
-                case '3':                             // x30 aka lr treat as non-volatile
-                    if (name[2] == '0')
-                      return false;
-                    break;
-                default:
-                    return true;
-            }
+bool ABIMacOSX_arm64::RegisterIsVolatile(const RegisterInfo *reg_info) {
+  if (reg_info) {
+    const char *name = reg_info->name;
+
+    // Sometimes we'll be called with the "alternate" name for these registers;
+    // recognize them as non-volatile.
+
+    if (name[0] == 'p' && name[1] == 'c') // pc
+      return false;
+    if (name[0] == 'f' && name[1] == 'p') // fp
+      return false;
+    if (name[0] == 's' && name[1] == 'p') // sp
+      return false;
+    if (name[0] == 'l' && name[1] == 'r') // lr
+      return false;
+
+    if (name[0] == 'x') {
+      // Volatile registers: x0-x18, x30 (lr)
+      // Return false for the non-volatile gpr regs, true for everything else
+      switch (name[1]) {
+      case '1':
+        switch (name[2]) {
+        case '9':
+          return false; // x19 is non-volatile
+        default:
+          return true;
         }
-        else if (name[0] == 'v' || name[0] == 's' || name[0] == 'd')
-        {
-            // Volatile registers: v0-7, v16-v31
-            // Return false for non-volatile fp/SIMD regs, true for everything else
-            switch (name[1])
-            {
-                case '8':
-                case '9':
-                    return false; // v8-v9 are non-volatile
-                case '1':
-                    switch (name[2])
-                    {
-                        case '0':
-                        case '1':
-                        case '2':
-                        case '3':
-                        case '4':
-                        case '5':
-                            return false; // v10-v15 are non-volatile
-                        default:
-                            return true;
-                    }
-                default:
-                    return true;
-            }
+        break;
+      case '2':
+        switch (name[2]) {
+        case '0':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+        case '6':
+        case '7':
+        case '8':
+          return false; // x20 - 28 are non-volatile
+        case '9':
+          return false; // x29 aka fp treat as non-volatile on Darwin
+        default:
+          return true;
+        }
+      case '3': // x30 aka lr treat as non-volatile
+        if (name[2] == '0')
+          return false;
+        break;
+      default:
+        return true;
+      }
+    } else if (name[0] == 'v' || name[0] == 's' || name[0] == 'd') {
+      // Volatile registers: v0-7, v16-v31
+      // Return false for non-volatile fp/SIMD regs, true for everything else
+      switch (name[1]) {
+      case '8':
+      case '9':
+        return false; // v8-v9 are non-volatile
+      case '1':
+        switch (name[2]) {
+        case '0':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+          return false; // v10-v15 are non-volatile
+        default:
+          return true;
         }
+      default:
+        return true;
+      }
     }
-    return true;
+  }
+  return true;
 }
 
-static bool
-LoadValueFromConsecutiveGPRRegisters (ExecutionContext &exe_ctx,
-                                      RegisterContext *reg_ctx,
-                                      const CompilerType &value_type,
-                                      bool is_return_value, // false => parameter, true => return value
-                                      uint32_t &NGRN,       // NGRN (see ABI documentation)
-                                      uint32_t &NSRN,       // NSRN (see ABI documentation)
-                                      DataExtractor &data)
-{
-    const size_t byte_size = value_type.GetByteSize(nullptr);
-    
-    if (byte_size == 0)
+static bool LoadValueFromConsecutiveGPRRegisters(
+    ExecutionContext &exe_ctx, RegisterContext *reg_ctx,
+    const CompilerType &value_type,
+    bool is_return_value, // false => parameter, true => return value
+    uint32_t &NGRN,       // NGRN (see ABI documentation)
+    uint32_t &NSRN,       // NSRN (see ABI documentation)
+    DataExtractor &data) {
+  const size_t byte_size = value_type.GetByteSize(nullptr);
+
+  if (byte_size == 0)
+    return false;
+
+  std::unique_ptr<DataBufferHeap> heap_data_ap(
+      new DataBufferHeap(byte_size, 0));
+  const ByteOrder byte_order = exe_ctx.GetProcessRef().GetByteOrder();
+  Error error;
+
+  CompilerType base_type;
+  const uint32_t homogeneous_count =
+      value_type.IsHomogeneousAggregate(&base_type);
+  if (homogeneous_count > 0 && homogeneous_count <= 8) {
+    // Make sure we have enough registers
+    if (NSRN < 8 && (8 - NSRN) >= homogeneous_count) {
+      if (!base_type)
         return false;
+      const size_t base_byte_size = base_type.GetByteSize(nullptr);
+      uint32_t data_offset = 0;
 
-    std::unique_ptr<DataBufferHeap> heap_data_ap (new DataBufferHeap(byte_size, 0));
-    const ByteOrder byte_order = exe_ctx.GetProcessRef().GetByteOrder();
-    Error error;
-
-    CompilerType base_type;
-    const uint32_t homogeneous_count = value_type.IsHomogeneousAggregate (&base_type);
-    if (homogeneous_count > 0 && homogeneous_count <= 8)
-    {
-        // Make sure we have enough registers
-        if (NSRN < 8 && (8-NSRN) >= homogeneous_count)
-        {
-            if (!base_type)
-                return false;
-            const size_t base_byte_size = base_type.GetByteSize(nullptr);
-            uint32_t data_offset = 0;
+      for (uint32_t i = 0; i < homogeneous_count; ++i) {
+        char v_name[8];
+        ::snprintf(v_name, sizeof(v_name), "v%u", NSRN);
+        const RegisterInfo *reg_info =
+            reg_ctx->GetRegisterInfoByName(v_name, 0);
+        if (reg_info == nullptr)
+          return false;
 
-            for (uint32_t i = 0; i < homogeneous_count; ++i)
-            {
-                char v_name[8];
-                ::snprintf (v_name, sizeof(v_name), "v%u", NSRN);
-                const RegisterInfo *reg_info = reg_ctx->GetRegisterInfoByName(v_name, 0);
-                if (reg_info == nullptr)
-                    return false;
-                
-                if (base_byte_size > reg_info->byte_size)
-                    return false;
-                
-                RegisterValue reg_value;
-                
-                if (!reg_ctx->ReadRegister(reg_info, reg_value))
-                    return false;
-                
-                // Make sure we have enough room in "heap_data_ap"
-                if ((data_offset + base_byte_size) <= heap_data_ap->GetByteSize())
-                {
-                    const size_t bytes_copied = reg_value.GetAsMemoryData (reg_info,
-                                                                           heap_data_ap->GetBytes()+data_offset,
-                                                                           base_byte_size,
-                                                                           byte_order,
-                                                                           error);
-                    if (bytes_copied != base_byte_size)
-                        return false;
-                    data_offset += bytes_copied;
-                    ++NSRN;
-                }
-                else
-                    return false;
-            }
-            data.SetByteOrder(byte_order);
-            data.SetAddressByteSize(exe_ctx.GetProcessRef().GetAddressByteSize());
-            data.SetData(DataBufferSP (heap_data_ap.release()));
-            return true;
-        }
+        if (base_byte_size > reg_info->byte_size)
+          return false;
+
+        RegisterValue reg_value;
+
+        if (!reg_ctx->ReadRegister(reg_info, reg_value))
+          return false;
+
+        // Make sure we have enough room in "heap_data_ap"
+        if ((data_offset + base_byte_size) <= heap_data_ap->GetByteSize()) {
+          const size_t bytes_copied = reg_value.GetAsMemoryData(
+              reg_info, heap_data_ap->GetBytes() + data_offset, base_byte_size,
+              byte_order, error);
+          if (bytes_copied != base_byte_size)
+            return false;
+          data_offset += bytes_copied;
+          ++NSRN;
+        } else
+          return false;
+      }
+      data.SetByteOrder(byte_order);
+      data.SetAddressByteSize(exe_ctx.GetProcessRef().GetAddressByteSize());
+      data.SetData(DataBufferSP(heap_data_ap.release()));
+      return true;
     }
+  }
 
-    const size_t max_reg_byte_size = 16;
-    if (byte_size <= max_reg_byte_size)
-    {
-        size_t bytes_left = byte_size;
-        uint32_t data_offset = 0;
-        while (data_offset < byte_size)
-        {
-            if (NGRN >= 8)
-                return false;
-            
-            uint32_t reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1 + NGRN);
-            if (reg_num == LLDB_INVALID_REGNUM)
-                return false;
-            
-            const RegisterInfo *reg_info = reg_ctx->GetRegisterInfoAtIndex(reg_num);
-            if (reg_info == nullptr)
-                return false;
+  const size_t max_reg_byte_size = 16;
+  if (byte_size <= max_reg_byte_size) {
+    size_t bytes_left = byte_size;
+    uint32_t data_offset = 0;
+    while (data_offset < byte_size) {
+      if (NGRN >= 8)
+        return false;
 
-            RegisterValue reg_value;
-            
-            if (!reg_ctx->ReadRegister(reg_info, reg_value))
-                return false;
-            
-            const size_t curr_byte_size = std::min<size_t>(8,bytes_left);
-            const size_t bytes_copied = reg_value.GetAsMemoryData (reg_info, heap_data_ap->GetBytes()+data_offset, curr_byte_size, byte_order, error);
-            if (bytes_copied == 0)
-                return false;
-            if (bytes_copied >= bytes_left)
-                break;
-            data_offset += bytes_copied;
-            bytes_left -= bytes_copied;
-            ++NGRN;
-        }
+      uint32_t reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber(
+          eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1 + NGRN);
+      if (reg_num == LLDB_INVALID_REGNUM)
+        return false;
+
+      const RegisterInfo *reg_info = reg_ctx->GetRegisterInfoAtIndex(reg_num);
+      if (reg_info == nullptr)
+        return false;
+
+      RegisterValue reg_value;
+
+      if (!reg_ctx->ReadRegister(reg_info, reg_value))
+        return false;
+
+      const size_t curr_byte_size = std::min<size_t>(8, bytes_left);
+      const size_t bytes_copied = reg_value.GetAsMemoryData(
+          reg_info, heap_data_ap->GetBytes() + data_offset, curr_byte_size,
+          byte_order, error);
+      if (bytes_copied == 0)
+        return false;
+      if (bytes_copied >= bytes_left)
+        break;
+      data_offset += bytes_copied;
+      bytes_left -= bytes_copied;
+      ++NGRN;
     }
-    else
-    {        
-        const RegisterInfo *reg_info = nullptr;
-        if (is_return_value)
-        {
-            // We are assuming we are decoding this immediately after returning
-            // from a function call and that the address of the structure is in x8
-            reg_info = reg_ctx->GetRegisterInfoByName("x8", 0);
-        }
-        else
-        {
-            // We are assuming we are stopped at the first instruction in a function
-            // and that the ABI is being respected so all parameters appear where they
-            // should be (functions with no external linkage can legally violate the ABI).
-            if (NGRN >= 8)
-                return false;
-            
-            uint32_t reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1 + NGRN);
-            if (reg_num == LLDB_INVALID_REGNUM)
-                return false;
-            reg_info = reg_ctx->GetRegisterInfoAtIndex(reg_num);
-            if (reg_info == nullptr)
-                return false;
-            ++NGRN;
-        }
+  } else {
+    const RegisterInfo *reg_info = nullptr;
+    if (is_return_value) {
+      // We are assuming we are decoding this immediately after returning
+      // from a function call and that the address of the structure is in x8
+      reg_info = reg_ctx->GetRegisterInfoByName("x8", 0);
+    } else {
+      // We are assuming we are stopped at the first instruction in a function
+      // and that the ABI is being respected so all parameters appear where they
+      // should be (functions with no external linkage can legally violate the
+      // ABI).
+      if (NGRN >= 8)
+        return false;
 
-        if (reg_info == nullptr)
-            return false;
+      uint32_t reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber(
+          eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1 + NGRN);
+      if (reg_num == LLDB_INVALID_REGNUM)
+        return false;
+      reg_info = reg_ctx->GetRegisterInfoAtIndex(reg_num);
+      if (reg_info == nullptr)
+        return false;
+      ++NGRN;
+    }
 
-        const lldb::addr_t value_addr = reg_ctx->ReadRegisterAsUnsigned(reg_info, LLDB_INVALID_ADDRESS);
+    if (reg_info == nullptr)
+      return false;
 
-        if (value_addr == LLDB_INVALID_ADDRESS)
-            return false;
+    const lldb::addr_t value_addr =
+        reg_ctx->ReadRegisterAsUnsigned(reg_info, LLDB_INVALID_ADDRESS);
 
-        if (exe_ctx.GetProcessRef().ReadMemory (value_addr,
-                                                heap_data_ap->GetBytes(),
-                                                heap_data_ap->GetByteSize(),
-                                                error) != heap_data_ap->GetByteSize())
-        {
-            return false;
-        }
+    if (value_addr == LLDB_INVALID_ADDRESS)
+      return false;
+
+    if (exe_ctx.GetProcessRef().ReadMemory(
+            value_addr, heap_data_ap->GetBytes(), heap_data_ap->GetByteSize(),
+            error) != heap_data_ap->GetByteSize()) {
+      return false;
     }
+  }
 
-    data.SetByteOrder(byte_order);
-    data.SetAddressByteSize(exe_ctx.GetProcessRef().GetAddressByteSize());
-    data.SetData(DataBufferSP (heap_data_ap.release()));
-    return true;
+  data.SetByteOrder(byte_order);
+  data.SetAddressByteSize(exe_ctx.GetProcessRef().GetAddressByteSize());
+  data.SetData(DataBufferSP(heap_data_ap.release()));
+  return true;
 }
 
-ValueObjectSP
-ABIMacOSX_arm64::GetReturnValueObjectImpl (Thread &thread, CompilerType &return_compiler_type) const
-{
-    ValueObjectSP return_valobj_sp;
-    Value value;
-    
-    ExecutionContext exe_ctx (thread.shared_from_this());
-    if (exe_ctx.GetTargetPtr() == nullptr || exe_ctx.GetProcessPtr() == nullptr)
-        return return_valobj_sp;
-
-    //value.SetContext (Value::eContextTypeClangType, return_compiler_type);
-    value.SetCompilerType(return_compiler_type);
-    
-    RegisterContext *reg_ctx = thread.GetRegisterContext().get();
-    if (!reg_ctx)
-        return return_valobj_sp;
-    
-    const size_t byte_size = return_compiler_type.GetByteSize(nullptr);
-
-    const uint32_t type_flags = return_compiler_type.GetTypeInfo(nullptr);
-    if (type_flags & eTypeIsScalar ||
-        type_flags & eTypeIsPointer)
-    {
-        value.SetValueType(Value::eValueTypeScalar);
-        
-        bool success = false;
-        if (type_flags & eTypeIsInteger ||
-            type_flags & eTypeIsPointer )
-        {
-            // Extract the register context so we can read arguments from registers
-            if (byte_size <= 8)
+ValueObjectSP ABIMacOSX_arm64::GetReturnValueObjectImpl(
+    Thread &thread, CompilerType &return_compiler_type) const {
+  ValueObjectSP return_valobj_sp;
+  Value value;
+
+  ExecutionContext exe_ctx(thread.shared_from_this());
+  if (exe_ctx.GetTargetPtr() == nullptr || exe_ctx.GetProcessPtr() == nullptr)
+    return return_valobj_sp;
+
+  // value.SetContext (Value::eContextTypeClangType, return_compiler_type);
+  value.SetCompilerType(return_compiler_type);
+
+  RegisterContext *reg_ctx = thread.GetRegisterContext().get();
+  if (!reg_ctx)
+    return return_valobj_sp;
+
+  const size_t byte_size = return_compiler_type.GetByteSize(nullptr);
+
+  const uint32_t type_flags = return_compiler_type.GetTypeInfo(nullptr);
+  if (type_flags & eTypeIsScalar || type_flags & eTypeIsPointer) {
+    value.SetValueType(Value::eValueTypeScalar);
+
+    bool success = false;
+    if (type_flags & eTypeIsInteger || type_flags & eTypeIsPointer) {
+      // Extract the register context so we can read arguments from registers
+      if (byte_size <= 8) {
+        const RegisterInfo *x0_reg_info =
+            reg_ctx->GetRegisterInfoByName("x0", 0);
+        if (x0_reg_info) {
+          uint64_t raw_value =
+              thread.GetRegisterContext()->ReadRegisterAsUnsigned(x0_reg_info,
+                                                                  0);
+          const bool is_signed = (type_flags & eTypeIsSigned) != 0;
+          switch (byte_size) {
+          default:
+            break;
+          case 16: // uint128_t
+            // In register x0 and x1
             {
-                const RegisterInfo *x0_reg_info = reg_ctx->GetRegisterInfoByName("x0", 0);
-                if (x0_reg_info)
-                {
-                    uint64_t raw_value = thread.GetRegisterContext()->ReadRegisterAsUnsigned(x0_reg_info, 0);
-                    const bool is_signed = (type_flags & eTypeIsSigned) != 0;
-                    switch (byte_size)
-                    {
-                        default:
-                            break;
-                        case 16: // uint128_t
-                            // In register x0 and x1
-                            {
-                                const RegisterInfo *x1_reg_info = reg_ctx->GetRegisterInfoByName("x1", 0);
-                                
-                                if (x1_reg_info)
-                                {
-                                    if (byte_size <= x0_reg_info->byte_size + x1_reg_info->byte_size)
-                                    {
-                                        std::unique_ptr<DataBufferHeap> heap_data_ap (new DataBufferHeap(byte_size, 0));
-                                        const ByteOrder byte_order = exe_ctx.GetProcessRef().GetByteOrder();
-                                        RegisterValue x0_reg_value;
-                                        RegisterValue x1_reg_value;
-                                        if (reg_ctx->ReadRegister(x0_reg_info, x0_reg_value) &&
-                                            reg_ctx->ReadRegister(x1_reg_info, x1_reg_value))
-                                        {
-                                            Error error;
-                                            if (x0_reg_value.GetAsMemoryData (x0_reg_info, heap_data_ap->GetBytes()+0, 8, byte_order, error) &&
-                                                x1_reg_value.GetAsMemoryData (x1_reg_info, heap_data_ap->GetBytes()+8, 8, byte_order, error))
-                                            {
-                                                DataExtractor data (DataBufferSP (heap_data_ap.release()),
-                                                                    byte_order,
-                                                                    exe_ctx.GetProcessRef().GetAddressByteSize());
-                                                
-                                                return_valobj_sp = ValueObjectConstResult::Create (&thread,
-                                                                                                   return_compiler_type,
-                                                                                                   ConstString(""),
-                                                                                                   data);
-                                                return return_valobj_sp;
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                            break;
-                        case sizeof(uint64_t):
-                            if (is_signed)
-                                value.GetScalar() = (int64_t)(raw_value);
-                            else
-                                value.GetScalar() = (uint64_t)(raw_value);
-                            success = true;
-                            break;
-                            
-                        case sizeof(uint32_t):
-                            if (is_signed)
-                                value.GetScalar() = (int32_t)(raw_value & UINT32_MAX);
-                            else
-                                value.GetScalar() = (uint32_t)(raw_value & UINT32_MAX);
-                            success = true;
-                            break;
-                            
-                        case sizeof(uint16_t):
-                            if (is_signed)
-                                value.GetScalar() = (int16_t)(raw_value & UINT16_MAX);
-                            else
-                                value.GetScalar() = (uint16_t)(raw_value & UINT16_MAX);
-                            success = true;
-                            break;
-                            
-                        case sizeof(uint8_t):
-                            if (is_signed)
-                                value.GetScalar() = (int8_t)(raw_value & UINT8_MAX);
-                            else
-                                value.GetScalar() = (uint8_t)(raw_value & UINT8_MAX);
-                            success = true;
-                            break;
+              const RegisterInfo *x1_reg_info =
+                  reg_ctx->GetRegisterInfoByName("x1", 0);
+
+              if (x1_reg_info) {
+                if (byte_size <=
+                    x0_reg_info->byte_size + x1_reg_info->byte_size) {
+                  std::unique_ptr<DataBufferHeap> heap_data_ap(
+                      new DataBufferHeap(byte_size, 0));
+                  const ByteOrder byte_order =
+                      exe_ctx.GetProcessRef().GetByteOrder();
+                  RegisterValue x0_reg_value;
+                  RegisterValue x1_reg_value;
+                  if (reg_ctx->ReadRegister(x0_reg_info, x0_reg_value) &&
+                      reg_ctx->ReadRegister(x1_reg_info, x1_reg_value)) {
+                    Error error;
+                    if (x0_reg_value.GetAsMemoryData(
+                            x0_reg_info, heap_data_ap->GetBytes() + 0, 8,
+                            byte_order, error) &&
+                        x1_reg_value.GetAsMemoryData(
+                            x1_reg_info, heap_data_ap->GetBytes() + 8, 8,
+                            byte_order, error)) {
+                      DataExtractor data(
+                          DataBufferSP(heap_data_ap.release()), byte_order,
+                          exe_ctx.GetProcessRef().GetAddressByteSize());
+
+                      return_valobj_sp = ValueObjectConstResult::Create(
+                          &thread, return_compiler_type, ConstString(""), data);
+                      return return_valobj_sp;
                     }
+                  }
                 }
+              }
             }
-        }
-        else if (type_flags & eTypeIsFloat)
-        {
-            if (type_flags & eTypeIsComplex)
-            {
-                // Don't handle complex yet.
-            }
+            break;
+          case sizeof(uint64_t):
+            if (is_signed)
+              value.GetScalar() = (int64_t)(raw_value);
             else
-            {
-                if (byte_size <= sizeof(long double))
-                {
-                    const RegisterInfo *v0_reg_info = reg_ctx->GetRegisterInfoByName("v0", 0);
-                    RegisterValue v0_value;
-                    if (reg_ctx->ReadRegister (v0_reg_info, v0_value))
-                    {
-                        DataExtractor data;
-                        if (v0_value.GetData(data))
-                        {
-                            lldb::offset_t offset = 0;
-                            if (byte_size == sizeof(float))
-                            {
-                                value.GetScalar() = data.GetFloat(&offset);
-                                success = true;
-                            }
-                            else if (byte_size == sizeof(double))
-                            {
-                                value.GetScalar() = data.GetDouble(&offset);
-                                success = true;
-                            }
-                            else if (byte_size == sizeof(long double))
-                            {
-                                value.GetScalar() = data.GetLongDouble(&offset);
-                                success = true;
-                            }
-                        }
-                    }
-                }
+              value.GetScalar() = (uint64_t)(raw_value);
+            success = true;
+            break;
+
+          case sizeof(uint32_t):
+            if (is_signed)
+              value.GetScalar() = (int32_t)(raw_value & UINT32_MAX);
+            else
+              value.GetScalar() = (uint32_t)(raw_value & UINT32_MAX);
+            success = true;
+            break;
+
+          case sizeof(uint16_t):
+            if (is_signed)
+              value.GetScalar() = (int16_t)(raw_value & UINT16_MAX);
+            else
+              value.GetScalar() = (uint16_t)(raw_value & UINT16_MAX);
+            success = true;
+            break;
+
+          case sizeof(uint8_t):
+            if (is_signed)
+              value.GetScalar() = (int8_t)(raw_value & UINT8_MAX);
+            else
+              value.GetScalar() = (uint8_t)(raw_value & UINT8_MAX);
+            success = true;
+            break;
+          }
+        }
+      }
+    } else if (type_flags & eTypeIsFloat) {
+      if (type_flags & eTypeIsComplex) {
+        // Don't handle complex yet.
+      } else {
+        if (byte_size <= sizeof(long double)) {
+          const RegisterInfo *v0_reg_info =
+              reg_ctx->GetRegisterInfoByName("v0", 0);
+          RegisterValue v0_value;
+          if (reg_ctx->ReadRegister(v0_reg_info, v0_value)) {
+            DataExtractor data;
+            if (v0_value.GetData(data)) {
+              lldb::offset_t offset = 0;
+              if (byte_size == sizeof(float)) {
+                value.GetScalar() = data.GetFloat(&offset);
+                success = true;
+              } else if (byte_size == sizeof(double)) {
+                value.GetScalar() = data.GetDouble(&offset);
+                success = true;
+              } else if (byte_size == sizeof(long double)) {
+                value.GetScalar() = data.GetLongDouble(&offset);
+                success = true;
+              }
             }
+          }
         }
-        
-        if (success)
-            return_valobj_sp = ValueObjectConstResult::Create (thread.GetStackFrameAtIndex(0).get(),
-                                                               value,
-                                                               ConstString(""));
+      }
     }
-    else if (type_flags & eTypeIsVector)
-    {
-        if (byte_size > 0)
-        {
-            
-            const RegisterInfo *v0_info = reg_ctx->GetRegisterInfoByName("v0", 0);
-            
-            if (v0_info)
-            {
-                if (byte_size <= v0_info->byte_size)
-                {
-                    std::unique_ptr<DataBufferHeap> heap_data_ap (new DataBufferHeap(byte_size, 0));
-                    const ByteOrder byte_order = exe_ctx.GetProcessRef().GetByteOrder();
-                    RegisterValue reg_value;
-                    if (reg_ctx->ReadRegister(v0_info, reg_value))
-                    {
-                        Error error;
-                        if (reg_value.GetAsMemoryData (v0_info,
-                                                       heap_data_ap->GetBytes(),
-                                                       heap_data_ap->GetByteSize(),
-                                                       byte_order,
-                                                       error))
-                        {
-                            DataExtractor data (DataBufferSP (heap_data_ap.release()),
-                                                byte_order,
-                                                exe_ctx.GetProcessRef().GetAddressByteSize());
-                            return_valobj_sp = ValueObjectConstResult::Create (&thread,
-                                                                               return_compiler_type,
-                                                                               ConstString(""),
-                                                                               data);
-                        }
-                    }
-                }
+
+    if (success)
+      return_valobj_sp = ValueObjectConstResult::Create(
+          thread.GetStackFrameAtIndex(0).get(), value, ConstString(""));
+  } else if (type_flags & eTypeIsVector) {
+    if (byte_size > 0) {
+
+      const RegisterInfo *v0_info = reg_ctx->GetRegisterInfoByName("v0", 0);
+
+      if (v0_info) {
+        if (byte_size <= v0_info->byte_size) {
+          std::unique_ptr<DataBufferHeap> heap_data_ap(
+              new DataBufferHeap(byte_size, 0));
+          const ByteOrder byte_order = exe_ctx.GetProcessRef().GetByteOrder();
+          RegisterValue reg_value;
+          if (reg_ctx->ReadRegister(v0_info, reg_value)) {
+            Error error;
+            if (reg_value.GetAsMemoryData(v0_info, heap_data_ap->GetBytes(),
+                                          heap_data_ap->GetByteSize(),
+                                          byte_order, error)) {
+              DataExtractor data(DataBufferSP(heap_data_ap.release()),
+                                 byte_order,
+                                 exe_ctx.GetProcessRef().GetAddressByteSize());
+              return_valobj_sp = ValueObjectConstResult::Create(
+                  &thread, return_compiler_type, ConstString(""), data);
             }
+          }
         }
+      }
     }
-    else if (type_flags & eTypeIsStructUnion ||
-             type_flags & eTypeIsClass)
-    {
-        DataExtractor data;
-        
-        uint32_t NGRN = 0;  // Search ABI docs for NGRN
-        uint32_t NSRN = 0;  // Search ABI docs for NSRN
-        const bool is_return_value = true;
-        if (LoadValueFromConsecutiveGPRRegisters (exe_ctx, reg_ctx, return_compiler_type, is_return_value, NGRN, NSRN, data))
-        {
-            return_valobj_sp = ValueObjectConstResult::Create (&thread,
-                                                               return_compiler_type,
-                                                               ConstString(""),
-                                                               data);            
-        }
+  } else if (type_flags & eTypeIsStructUnion || type_flags & eTypeIsClass) {
+    DataExtractor data;
+
+    uint32_t NGRN = 0; // Search ABI docs for NGRN
+    uint32_t NSRN = 0; // Search ABI docs for NSRN
+    const bool is_return_value = true;
+    if (LoadValueFromConsecutiveGPRRegisters(
+            exe_ctx, reg_ctx, return_compiler_type, is_return_value, NGRN, NSRN,
+            data)) {
+      return_valobj_sp = ValueObjectConstResult::Create(
+          &thread, return_compiler_type, ConstString(""), data);
     }
-    return return_valobj_sp;
+  }
+  return return_valobj_sp;
 }
 
-void
-ABIMacOSX_arm64::Initialize()
-{
-    PluginManager::RegisterPlugin (GetPluginNameStatic(),
-                                   pluginDesc,
-                                   CreateInstance);    
+void ABIMacOSX_arm64::Initialize() {
+  PluginManager::RegisterPlugin(GetPluginNameStatic(), pluginDesc,
+                                CreateInstance);
 }
 
-void
-ABIMacOSX_arm64::Terminate()
-{
-    PluginManager::UnregisterPlugin (CreateInstance);
+void ABIMacOSX_arm64::Terminate() {
+  PluginManager::UnregisterPlugin(CreateInstance);
 }
 
 //------------------------------------------------------------------
 // PluginInterface protocol
 //------------------------------------------------------------------
 
-ConstString
-ABIMacOSX_arm64::GetPluginNameStatic()
-{
-    static ConstString g_plugin_name("ABIMacOSX_arm64");
-    return g_plugin_name;
+ConstString ABIMacOSX_arm64::GetPluginNameStatic() {
+  static ConstString g_plugin_name("ABIMacOSX_arm64");
+  return g_plugin_name;
 }
 
-uint32_t
-ABIMacOSX_arm64::GetPluginVersion()
-{
-    return 1;
-}
+uint32_t ABIMacOSX_arm64::GetPluginVersion() { return 1; }

Modified: lldb/trunk/source/Plugins/ABI/MacOSX-arm64/ABIMacOSX_arm64.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ABI/MacOSX-arm64/ABIMacOSX_arm64.h?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ABI/MacOSX-arm64/ABIMacOSX_arm64.h (original)
+++ lldb/trunk/source/Plugins/ABI/MacOSX-arm64/ABIMacOSX_arm64.h Tue Sep  6 15:57:50 2016
@@ -14,116 +14,97 @@
 // C++ Includes
 // Other libraries and framework includes
 // Project includes
-#include "lldb/lldb-private.h"
 #include "lldb/Core/ConstString.h"
 #include "lldb/Target/ABI.h"
+#include "lldb/lldb-private.h"
 
-class ABIMacOSX_arm64 :
-    public lldb_private::ABI
-{
+class ABIMacOSX_arm64 : public lldb_private::ABI {
 public:
-    ~ABIMacOSX_arm64() override = default;
-    
-    size_t
-    GetRedZoneSize() const override;
-    
-    bool
-    PrepareTrivialCall(lldb_private::Thread &thread,
-                       lldb::addr_t sp,
-                       lldb::addr_t functionAddress,
-                       lldb::addr_t returnAddress,
-                       llvm::ArrayRef<lldb::addr_t> args) const override;
-
-    bool
-    GetArgumentValues(lldb_private::Thread &thread,
-                      lldb_private::ValueList &values) const override;
-    
-    bool
-    CreateFunctionEntryUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
-    
-    bool
-    CreateDefaultUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
-    
-    bool
-    RegisterIsVolatile(const lldb_private::RegisterInfo *reg_info) override;
-
-    // The arm64 ABI requires that stack frames be 16 byte aligned.
-    // When there is a trap handler on the stack, e.g. _sigtramp in userland
-    // code, we've seen that the stack pointer is often not aligned properly
-    // before the handler is invoked.  This means that lldb will stop the unwind
-    // early -- before the function which caused the trap.
-    //
-    // To work around this, we relax that alignment to be just word-size (8-bytes).
-    // Whitelisting the trap handlers for user space would be easy (_sigtramp) but
-    // in other environments there can be a large number of different functions
-    // involved in async traps.
-    bool
-    CallFrameAddressIsValid(lldb::addr_t cfa) override
-    {
-        // Make sure the stack call frame addresses are are 8 byte aligned
-        if (cfa & (8ull - 1ull))
-            return false;   // Not 8 byte aligned
-        if (cfa == 0)
-            return false;   // Zero is not a valid stack address
-        return true;
-    }
-    
-    bool
-    CodeAddressIsValid(lldb::addr_t pc) override
-    {
-        if (pc & (4ull - 1ull))
-            return false;   // Not 4 byte aligned
-        
-        // Anything else if fair game..
-        return true;
-    }
-
-    const lldb_private::RegisterInfo *
-    GetRegisterInfoArray(uint32_t &count) override;
-
-    //------------------------------------------------------------------
-    // Static Functions
-    //------------------------------------------------------------------
-
-    static void
-    Initialize();
-    
-    static void
-    Terminate();
-    
-    static lldb::ABISP
-    CreateInstance (const lldb_private::ArchSpec &arch);
-    
-    //------------------------------------------------------------------
-    // PluginInterface protocol
-    //------------------------------------------------------------------
-
-    static lldb_private::ConstString
-    GetPluginNameStatic();
-
-    lldb_private::ConstString
-    GetPluginName() override
-    {
-        return GetPluginNameStatic();
-    }
-
-    uint32_t
-    GetPluginVersion() override;
-    
-    lldb_private::Error
-    SetReturnValueObject(lldb::StackFrameSP &frame_sp, lldb::ValueObjectSP &new_value) override;
+  ~ABIMacOSX_arm64() override = default;
+
+  size_t GetRedZoneSize() const override;
+
+  bool PrepareTrivialCall(lldb_private::Thread &thread, lldb::addr_t sp,
+                          lldb::addr_t functionAddress,
+                          lldb::addr_t returnAddress,
+                          llvm::ArrayRef<lldb::addr_t> args) const override;
+
+  bool GetArgumentValues(lldb_private::Thread &thread,
+                         lldb_private::ValueList &values) const override;
+
+  bool
+  CreateFunctionEntryUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
+
+  bool CreateDefaultUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
+
+  bool RegisterIsVolatile(const lldb_private::RegisterInfo *reg_info) override;
+
+  // The arm64 ABI requires that stack frames be 16 byte aligned.
+  // When there is a trap handler on the stack, e.g. _sigtramp in userland
+  // code, we've seen that the stack pointer is often not aligned properly
+  // before the handler is invoked.  This means that lldb will stop the unwind
+  // early -- before the function which caused the trap.
+  //
+  // To work around this, we relax that alignment to be just word-size
+  // (8-bytes).
+  // Whitelisting the trap handlers for user space would be easy (_sigtramp) but
+  // in other environments there can be a large number of different functions
+  // involved in async traps.
+  bool CallFrameAddressIsValid(lldb::addr_t cfa) override {
+    // Make sure the stack call frame addresses are are 8 byte aligned
+    if (cfa & (8ull - 1ull))
+      return false; // Not 8 byte aligned
+    if (cfa == 0)
+      return false; // Zero is not a valid stack address
+    return true;
+  }
+
+  bool CodeAddressIsValid(lldb::addr_t pc) override {
+    if (pc & (4ull - 1ull))
+      return false; // Not 4 byte aligned
+
+    // Anything else if fair game..
+    return true;
+  }
+
+  const lldb_private::RegisterInfo *
+  GetRegisterInfoArray(uint32_t &count) override;
+
+  //------------------------------------------------------------------
+  // Static Functions
+  //------------------------------------------------------------------
+
+  static void Initialize();
+
+  static void Terminate();
+
+  static lldb::ABISP CreateInstance(const lldb_private::ArchSpec &arch);
+
+  //------------------------------------------------------------------
+  // PluginInterface protocol
+  //------------------------------------------------------------------
+
+  static lldb_private::ConstString GetPluginNameStatic();
+
+  lldb_private::ConstString GetPluginName() override {
+    return GetPluginNameStatic();
+  }
+
+  uint32_t GetPluginVersion() override;
+
+  lldb_private::Error
+  SetReturnValueObject(lldb::StackFrameSP &frame_sp,
+                       lldb::ValueObjectSP &new_value) override;
 
 protected:
-    lldb::ValueObjectSP
-    GetReturnValueObjectImpl (lldb_private::Thread &thread,
-                    lldb_private::CompilerType &ast_type) const override;
+  lldb::ValueObjectSP
+  GetReturnValueObjectImpl(lldb_private::Thread &thread,
+                           lldb_private::CompilerType &ast_type) const override;
 
 private:
-    ABIMacOSX_arm64() : 
-        lldb_private::ABI() 
-    {
-        // Call CreateInstance instead.  
-    } 
+  ABIMacOSX_arm64() : lldb_private::ABI() {
+    // Call CreateInstance instead.
+  }
 };
 
 #endif // liblldb_ABIMacOSX_arm64_h_

Modified: lldb/trunk/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.cpp (original)
+++ lldb/trunk/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.cpp Tue Sep  6 15:57:50 2016
@@ -34,491 +34,1010 @@
 using namespace lldb;
 using namespace lldb_private;
 
-enum
-{
-    ehframe_eax = 0,
-    ehframe_ecx,
-    ehframe_edx,
-    ehframe_ebx,
-    ehframe_ebp,   // Different from DWARF the regnums - eh_frame esp/ebp had their regnums switched on i386 darwin
-    ehframe_esp,   // Different from DWARF the regnums - eh_frame esp/ebp had their regnums switched on i386 darwin
-    ehframe_esi,
-    ehframe_edi,
-    ehframe_eip,
-    ehframe_eflags
+enum {
+  ehframe_eax = 0,
+  ehframe_ecx,
+  ehframe_edx,
+  ehframe_ebx,
+  ehframe_ebp, // Different from DWARF the regnums - eh_frame esp/ebp had their
+               // regnums switched on i386 darwin
+  ehframe_esp, // Different from DWARF the regnums - eh_frame esp/ebp had their
+               // regnums switched on i386 darwin
+  ehframe_esi,
+  ehframe_edi,
+  ehframe_eip,
+  ehframe_eflags
 };
 
-enum
-{
-    dwarf_eax = 0,
-    dwarf_ecx,
-    dwarf_edx,
-    dwarf_ebx,
-    dwarf_esp,
-    dwarf_ebp,
-    dwarf_esi,
-    dwarf_edi,
-    dwarf_eip,
-    dwarf_eflags,
-    dwarf_stmm0 = 11,
-    dwarf_stmm1,
-    dwarf_stmm2,
-    dwarf_stmm3,
-    dwarf_stmm4,
-    dwarf_stmm5,
-    dwarf_stmm6,
-    dwarf_stmm7,
-    dwarf_xmm0 = 21,
-    dwarf_xmm1,
-    dwarf_xmm2,
-    dwarf_xmm3,
-    dwarf_xmm4,
-    dwarf_xmm5,
-    dwarf_xmm6,
-    dwarf_xmm7,
-    dwarf_ymm0 = dwarf_xmm0,
-    dwarf_ymm1 = dwarf_xmm1,
-    dwarf_ymm2 = dwarf_xmm2,
-    dwarf_ymm3 = dwarf_xmm3,
-    dwarf_ymm4 = dwarf_xmm4,
-    dwarf_ymm5 = dwarf_xmm5,
-    dwarf_ymm6 = dwarf_xmm6,
-    dwarf_ymm7 = dwarf_xmm7
+enum {
+  dwarf_eax = 0,
+  dwarf_ecx,
+  dwarf_edx,
+  dwarf_ebx,
+  dwarf_esp,
+  dwarf_ebp,
+  dwarf_esi,
+  dwarf_edi,
+  dwarf_eip,
+  dwarf_eflags,
+  dwarf_stmm0 = 11,
+  dwarf_stmm1,
+  dwarf_stmm2,
+  dwarf_stmm3,
+  dwarf_stmm4,
+  dwarf_stmm5,
+  dwarf_stmm6,
+  dwarf_stmm7,
+  dwarf_xmm0 = 21,
+  dwarf_xmm1,
+  dwarf_xmm2,
+  dwarf_xmm3,
+  dwarf_xmm4,
+  dwarf_xmm5,
+  dwarf_xmm6,
+  dwarf_xmm7,
+  dwarf_ymm0 = dwarf_xmm0,
+  dwarf_ymm1 = dwarf_xmm1,
+  dwarf_ymm2 = dwarf_xmm2,
+  dwarf_ymm3 = dwarf_xmm3,
+  dwarf_ymm4 = dwarf_xmm4,
+  dwarf_ymm5 = dwarf_xmm5,
+  dwarf_ymm6 = dwarf_xmm6,
+  dwarf_ymm7 = dwarf_xmm7
 };
 
-static RegisterInfo g_register_infos[] = 
-{
-  //  NAME      ALT      SZ OFF ENCODING         FORMAT                EH_FRAME              DWARF                 GENERIC                      PROCESS PLUGIN        LLDB NATIVE
-  //  ======    =======  == === =============    ============          ===================== ===================== ============================ ====================  ======================
-    { "eax",    nullptr, 4,  0, eEncodingUint  , eFormatHex          , { ehframe_eax         , dwarf_eax           , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "ebx"   , nullptr, 4,  0, eEncodingUint  , eFormatHex          , { ehframe_ebx         , dwarf_ebx           , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "ecx"   , nullptr, 4,  0, eEncodingUint  , eFormatHex          , { ehframe_ecx         , dwarf_ecx           , LLDB_REGNUM_GENERIC_ARG4  , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "edx"   , nullptr, 4,  0, eEncodingUint  , eFormatHex          , { ehframe_edx         , dwarf_edx           , LLDB_REGNUM_GENERIC_ARG3  , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "esi"   , nullptr, 4,  0, eEncodingUint  , eFormatHex          , { ehframe_esi         , dwarf_esi           , LLDB_REGNUM_GENERIC_ARG2  , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "edi"   , nullptr, 4,  0, eEncodingUint  , eFormatHex          , { ehframe_edi         , dwarf_edi           , LLDB_REGNUM_GENERIC_ARG1  , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "ebp"   , "fp",    4,  0, eEncodingUint  , eFormatHex          , { ehframe_ebp         , dwarf_ebp           , LLDB_REGNUM_GENERIC_FP    , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "esp"   , "sp",    4,  0, eEncodingUint  , eFormatHex          , { ehframe_esp         , dwarf_esp           , LLDB_REGNUM_GENERIC_SP    , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "eip"   , "pc",    4,  0, eEncodingUint  , eFormatHex          , { ehframe_eip         , dwarf_eip           , LLDB_REGNUM_GENERIC_PC    , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "eflags", nullptr, 4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM , LLDB_REGNUM_GENERIC_FLAGS , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "cs"    , nullptr, 4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "ss"    , nullptr, 4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "ds"    , nullptr, 4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "es"    , nullptr, 4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "fs"    , nullptr, 4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "gs"    , nullptr, 4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "stmm0" , nullptr,10,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_stmm0         , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "stmm1" , nullptr,10,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_stmm1         , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "stmm2" , nullptr,10,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_stmm2         , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "stmm3" , nullptr,10,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_stmm3         , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "stmm4" , nullptr,10,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_stmm4         , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "stmm5" , nullptr,10,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_stmm5         , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "stmm6" , nullptr,10,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_stmm6         , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "stmm7" , nullptr,10,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_stmm7         , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "fctrl" , nullptr, 4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "fstat" , nullptr, 4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "ftag"  , nullptr, 4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "fiseg" , nullptr, 4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "fioff" , nullptr, 4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "foseg" , nullptr, 4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "fooff" , nullptr, 4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "fop"   , nullptr, 4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "xmm0"  , nullptr,16,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_xmm0          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "xmm1"  , nullptr,16,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_xmm1          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "xmm2"  , nullptr,16,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_xmm2          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "xmm3"  , nullptr,16,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_xmm3          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "xmm4"  , nullptr,16,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_xmm4          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "xmm5"  , nullptr,16,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_xmm5          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "xmm6"  , nullptr,16,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_xmm6          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "xmm7"  , nullptr,16,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_xmm7          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "mxcsr" , nullptr, 4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "ymm0"  , nullptr,32,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_ymm0          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "ymm1"  , nullptr,32,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_ymm1          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "ymm2"  , nullptr,32,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_ymm2          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "ymm3"  , nullptr,32,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_ymm3          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "ymm4"  , nullptr,32,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_ymm4          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "ymm5"  , nullptr,32,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_ymm5          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "ymm6"  , nullptr,32,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_ymm6          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    { "ymm7"  , nullptr,32,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM , dwarf_ymm7          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 }
-};
+static RegisterInfo g_register_infos[] = {
+    //  NAME      ALT      SZ OFF ENCODING         FORMAT
+    //  EH_FRAME              DWARF                 GENERIC
+    //  PROCESS PLUGIN        LLDB NATIVE
+    //  ======    =======  == === =============    ============
+    //  ===================== ===================== ============================
+    //  ====================  ======================
+    {"eax",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_eax, dwarf_eax, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ebx",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_ebx, dwarf_ebx, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ecx",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_ecx, dwarf_ecx, LLDB_REGNUM_GENERIC_ARG4, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"edx",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_edx, dwarf_edx, LLDB_REGNUM_GENERIC_ARG3, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"esi",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_esi, dwarf_esi, LLDB_REGNUM_GENERIC_ARG2, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"edi",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_edi, dwarf_edi, LLDB_REGNUM_GENERIC_ARG1, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ebp",
+     "fp",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_ebp, dwarf_ebp, LLDB_REGNUM_GENERIC_FP, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"esp",
+     "sp",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_esp, dwarf_esp, LLDB_REGNUM_GENERIC_SP, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"eip",
+     "pc",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_eip, dwarf_eip, LLDB_REGNUM_GENERIC_PC, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"eflags",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_REGNUM_GENERIC_FLAGS,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"cs",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ss",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ds",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"es",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"fs",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"gs",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"stmm0",
+     nullptr,
+     10,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_stmm0, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"stmm1",
+     nullptr,
+     10,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_stmm1, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"stmm2",
+     nullptr,
+     10,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_stmm2, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"stmm3",
+     nullptr,
+     10,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_stmm3, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"stmm4",
+     nullptr,
+     10,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_stmm4, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"stmm5",
+     nullptr,
+     10,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_stmm5, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"stmm6",
+     nullptr,
+     10,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_stmm6, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"stmm7",
+     nullptr,
+     10,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_stmm7, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"fctrl",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"fstat",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ftag",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"fiseg",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"fioff",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"foseg",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"fooff",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"fop",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"xmm0",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_xmm0, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"xmm1",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_xmm1, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"xmm2",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_xmm2, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"xmm3",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_xmm3, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"xmm4",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_xmm4, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"xmm5",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_xmm5, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"xmm6",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_xmm6, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"xmm7",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_xmm7, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"mxcsr",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ymm0",
+     nullptr,
+     32,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_ymm0, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ymm1",
+     nullptr,
+     32,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_ymm1, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ymm2",
+     nullptr,
+     32,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_ymm2, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ymm3",
+     nullptr,
+     32,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_ymm3, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ymm4",
+     nullptr,
+     32,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_ymm4, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ymm5",
+     nullptr,
+     32,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_ymm5, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ymm6",
+     nullptr,
+     32,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_ymm6, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ymm7",
+     nullptr,
+     32,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_ymm7, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0}};
 
-static const uint32_t k_num_register_infos = llvm::array_lengthof(g_register_infos);
+static const uint32_t k_num_register_infos =
+    llvm::array_lengthof(g_register_infos);
 static bool g_register_info_names_constified = false;
 
 const lldb_private::RegisterInfo *
-ABIMacOSX_i386::GetRegisterInfoArray (uint32_t &count)
-{
-    // Make the C-string names and alt_names for the register infos into const 
-    // C-string values by having the ConstString unique the names in the global
-    // constant C-string pool.
-    if (!g_register_info_names_constified)
-    {
-        g_register_info_names_constified = true;
-        for (uint32_t i = 0; i < k_num_register_infos; ++i)
-        {
-            if (g_register_infos[i].name)
-                g_register_infos[i].name = ConstString(g_register_infos[i].name).GetCString();
-            if (g_register_infos[i].alt_name)
-                g_register_infos[i].alt_name = ConstString(g_register_infos[i].alt_name).GetCString();
-        }
+ABIMacOSX_i386::GetRegisterInfoArray(uint32_t &count) {
+  // Make the C-string names and alt_names for the register infos into const
+  // C-string values by having the ConstString unique the names in the global
+  // constant C-string pool.
+  if (!g_register_info_names_constified) {
+    g_register_info_names_constified = true;
+    for (uint32_t i = 0; i < k_num_register_infos; ++i) {
+      if (g_register_infos[i].name)
+        g_register_infos[i].name =
+            ConstString(g_register_infos[i].name).GetCString();
+      if (g_register_infos[i].alt_name)
+        g_register_infos[i].alt_name =
+            ConstString(g_register_infos[i].alt_name).GetCString();
     }
-    count = k_num_register_infos;
-    return g_register_infos;
+  }
+  count = k_num_register_infos;
+  return g_register_infos;
 }
 
-size_t
-ABIMacOSX_i386::GetRedZoneSize () const
-{
-    return 0;
-}
+size_t ABIMacOSX_i386::GetRedZoneSize() const { return 0; }
 
 //------------------------------------------------------------------
 // Static Functions
 //------------------------------------------------------------------
 
 ABISP
-ABIMacOSX_i386::CreateInstance (const ArchSpec &arch)
-{
-    static ABISP g_abi_sp;
-     if ((arch.GetTriple().getArch() == llvm::Triple::x86) &&
-          (arch.GetTriple().isMacOSX() || arch.GetTriple().isiOS() || arch.GetTriple().isWatchOS()))
-     {
-        if (!g_abi_sp)
-            g_abi_sp.reset (new ABIMacOSX_i386);
-        return g_abi_sp;
-    }
-    return ABISP();
+ABIMacOSX_i386::CreateInstance(const ArchSpec &arch) {
+  static ABISP g_abi_sp;
+  if ((arch.GetTriple().getArch() == llvm::Triple::x86) &&
+      (arch.GetTriple().isMacOSX() || arch.GetTriple().isiOS() ||
+       arch.GetTriple().isWatchOS())) {
+    if (!g_abi_sp)
+      g_abi_sp.reset(new ABIMacOSX_i386);
+    return g_abi_sp;
+  }
+  return ABISP();
 }
 
-bool
-ABIMacOSX_i386::PrepareTrivialCall (Thread &thread, 
-                                    addr_t sp, 
-                                    addr_t func_addr, 
-                                    addr_t return_addr, 
-                                    llvm::ArrayRef<addr_t> args) const
-{
-    RegisterContext *reg_ctx = thread.GetRegisterContext().get();
-    if (!reg_ctx)
-        return false;    
-    uint32_t pc_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC);
-    uint32_t sp_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_SP);
-    
-    // When writing a register value down to memory, the register info used 
-    // to write memory just needs to have the correct size of a 32 bit register, 
-    // the actual register it pertains to is not important, just the size needs 
-    // to be correct. Here we use "eax"...
-    const RegisterInfo *reg_info_32 = reg_ctx->GetRegisterInfoByName("eax");
-    if (!reg_info_32)
-        return false; // TODO this should actually never happen
-
-    // Make room for the argument(s) on the stack
-
-    Error error;
-    RegisterValue reg_value;
-    
-    // Write any arguments onto the stack
-    sp -= 4 * args.size();
-    
-    // Align the SP    
-    sp &= ~(16ull-1ull); // 16-byte alignment
-    
-    addr_t arg_pos = sp;
-    
-    for (addr_t arg : args)
-    {
-        reg_value.SetUInt32(arg);
-        error = reg_ctx->WriteRegisterValueToMemory (reg_info_32,
-                                                     arg_pos,
-                                                     reg_info_32->byte_size,
-                                                     reg_value);
-        if (error.Fail())
-            return false;
-        arg_pos += 4;
-    }
-    
-    // The return address is pushed onto the stack (yes after we just set the
-    // alignment above!).
-    sp -= 4;
-    reg_value.SetUInt32(return_addr);
-    error = reg_ctx->WriteRegisterValueToMemory (reg_info_32, 
-                                                 sp, 
-                                                 reg_info_32->byte_size, 
-                                                 reg_value);
+bool ABIMacOSX_i386::PrepareTrivialCall(Thread &thread, addr_t sp,
+                                        addr_t func_addr, addr_t return_addr,
+                                        llvm::ArrayRef<addr_t> args) const {
+  RegisterContext *reg_ctx = thread.GetRegisterContext().get();
+  if (!reg_ctx)
+    return false;
+  uint32_t pc_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber(
+      eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC);
+  uint32_t sp_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber(
+      eRegisterKindGeneric, LLDB_REGNUM_GENERIC_SP);
+
+  // When writing a register value down to memory, the register info used
+  // to write memory just needs to have the correct size of a 32 bit register,
+  // the actual register it pertains to is not important, just the size needs
+  // to be correct. Here we use "eax"...
+  const RegisterInfo *reg_info_32 = reg_ctx->GetRegisterInfoByName("eax");
+  if (!reg_info_32)
+    return false; // TODO this should actually never happen
+
+  // Make room for the argument(s) on the stack
+
+  Error error;
+  RegisterValue reg_value;
+
+  // Write any arguments onto the stack
+  sp -= 4 * args.size();
+
+  // Align the SP
+  sp &= ~(16ull - 1ull); // 16-byte alignment
+
+  addr_t arg_pos = sp;
+
+  for (addr_t arg : args) {
+    reg_value.SetUInt32(arg);
+    error = reg_ctx->WriteRegisterValueToMemory(
+        reg_info_32, arg_pos, reg_info_32->byte_size, reg_value);
     if (error.Fail())
-        return false;
-    
-    // %esp is set to the actual stack value.
-    
-    if (!reg_ctx->WriteRegisterFromUnsigned (sp_reg_num, sp))
-        return false;
-    
-    // %eip is set to the address of the called function.
-    
-    if (!reg_ctx->WriteRegisterFromUnsigned (pc_reg_num, func_addr))
-        return false;
-    
-    return true;
-}
+      return false;
+    arg_pos += 4;
+  }
+
+  // The return address is pushed onto the stack (yes after we just set the
+  // alignment above!).
+  sp -= 4;
+  reg_value.SetUInt32(return_addr);
+  error = reg_ctx->WriteRegisterValueToMemory(
+      reg_info_32, sp, reg_info_32->byte_size, reg_value);
+  if (error.Fail())
+    return false;
 
-static bool 
-ReadIntegerArgument (Scalar           &scalar,
-                     unsigned int     bit_width,
-                     bool             is_signed,
-                     Process          *process,
-                     addr_t           &current_stack_argument)
-{
-    
-    uint32_t byte_size = (bit_width + (8-1))/8;
-    Error error;
-    if (process->ReadScalarIntegerFromMemory(current_stack_argument, byte_size, is_signed, scalar, error))
-    {
-        current_stack_argument += byte_size;
-        return true;
-    }
+  // %esp is set to the actual stack value.
+
+  if (!reg_ctx->WriteRegisterFromUnsigned(sp_reg_num, sp))
+    return false;
+
+  // %eip is set to the address of the called function.
+
+  if (!reg_ctx->WriteRegisterFromUnsigned(pc_reg_num, func_addr))
     return false;
+
+  return true;
 }
 
-bool
-ABIMacOSX_i386::GetArgumentValues (Thread &thread,
-                                   ValueList &values) const
-{
-    unsigned int num_values = values.GetSize();
-    unsigned int value_index;
-    
-    // Get the pointer to the first stack argument so we have a place to start 
-    // when reading data
-    
-    RegisterContext *reg_ctx = thread.GetRegisterContext().get();
-    
-    if (!reg_ctx)
-        return false;
-    
-    addr_t sp = reg_ctx->GetSP(0);
-    
-    if (!sp)
-        return false;
-    
-    addr_t current_stack_argument = sp + 4; // jump over return address
-    
-    for (value_index = 0;
-         value_index < num_values;
-         ++value_index)
-    {
-        Value *value = values.GetValueAtIndex(value_index);
-        
-        if (!value)
-            return false;
-        
-        // We currently only support extracting values with Clang QualTypes.
-        // Do we care about others?
-        CompilerType compiler_type (value->GetCompilerType());
-        if (compiler_type)
-        {
-            bool is_signed;
-            
-            if (compiler_type.IsIntegerOrEnumerationType (is_signed))
-            {
-                ReadIntegerArgument(value->GetScalar(),
-                                    compiler_type.GetBitSize(&thread),
-                                    is_signed,
-                                    thread.GetProcess().get(), 
-                                    current_stack_argument);
-            }
-            else if (compiler_type.IsPointerType())
-            {
-                ReadIntegerArgument(value->GetScalar(),
-                                    compiler_type.GetBitSize(&thread),
-                                    false,
-                                    thread.GetProcess().get(),
-                                    current_stack_argument);
-            }
-        }
-    }
-    
+static bool ReadIntegerArgument(Scalar &scalar, unsigned int bit_width,
+                                bool is_signed, Process *process,
+                                addr_t &current_stack_argument) {
+
+  uint32_t byte_size = (bit_width + (8 - 1)) / 8;
+  Error error;
+  if (process->ReadScalarIntegerFromMemory(current_stack_argument, byte_size,
+                                           is_signed, scalar, error)) {
+    current_stack_argument += byte_size;
     return true;
+  }
+  return false;
 }
 
-Error
-ABIMacOSX_i386::SetReturnValueObject(lldb::StackFrameSP &frame_sp, lldb::ValueObjectSP &new_value_sp)
-{
-    Error error;
-    if (!new_value_sp)
-    {
-        error.SetErrorString("Empty value object for return value.");
-        return error;
+bool ABIMacOSX_i386::GetArgumentValues(Thread &thread,
+                                       ValueList &values) const {
+  unsigned int num_values = values.GetSize();
+  unsigned int value_index;
+
+  // Get the pointer to the first stack argument so we have a place to start
+  // when reading data
+
+  RegisterContext *reg_ctx = thread.GetRegisterContext().get();
+
+  if (!reg_ctx)
+    return false;
+
+  addr_t sp = reg_ctx->GetSP(0);
+
+  if (!sp)
+    return false;
+
+  addr_t current_stack_argument = sp + 4; // jump over return address
+
+  for (value_index = 0; value_index < num_values; ++value_index) {
+    Value *value = values.GetValueAtIndex(value_index);
+
+    if (!value)
+      return false;
+
+    // We currently only support extracting values with Clang QualTypes.
+    // Do we care about others?
+    CompilerType compiler_type(value->GetCompilerType());
+    if (compiler_type) {
+      bool is_signed;
+
+      if (compiler_type.IsIntegerOrEnumerationType(is_signed)) {
+        ReadIntegerArgument(value->GetScalar(),
+                            compiler_type.GetBitSize(&thread), is_signed,
+                            thread.GetProcess().get(), current_stack_argument);
+      } else if (compiler_type.IsPointerType()) {
+        ReadIntegerArgument(value->GetScalar(),
+                            compiler_type.GetBitSize(&thread), false,
+                            thread.GetProcess().get(), current_stack_argument);
+      }
     }
-    
-    CompilerType compiler_type = new_value_sp->GetCompilerType();
-    if (!compiler_type)
-    {
-        error.SetErrorString ("Null clang type for return value.");
-        return error;
+  }
+
+  return true;
+}
+
+Error ABIMacOSX_i386::SetReturnValueObject(lldb::StackFrameSP &frame_sp,
+                                           lldb::ValueObjectSP &new_value_sp) {
+  Error error;
+  if (!new_value_sp) {
+    error.SetErrorString("Empty value object for return value.");
+    return error;
+  }
+
+  CompilerType compiler_type = new_value_sp->GetCompilerType();
+  if (!compiler_type) {
+    error.SetErrorString("Null clang type for return value.");
+    return error;
+  }
+
+  Thread *thread = frame_sp->GetThread().get();
+
+  bool is_signed;
+  uint32_t count;
+  bool is_complex;
+
+  RegisterContext *reg_ctx = thread->GetRegisterContext().get();
+
+  bool set_it_simple = false;
+  if (compiler_type.IsIntegerOrEnumerationType(is_signed) ||
+      compiler_type.IsPointerType()) {
+    DataExtractor data;
+    Error data_error;
+    size_t num_bytes = new_value_sp->GetData(data, data_error);
+    if (data_error.Fail()) {
+      error.SetErrorStringWithFormat(
+          "Couldn't convert return value to raw data: %s",
+          data_error.AsCString());
+      return error;
     }
-    
-    Thread *thread = frame_sp->GetThread().get();
-    
-    bool is_signed;
-    uint32_t count;
-    bool is_complex;
-    
-    RegisterContext *reg_ctx = thread->GetRegisterContext().get();
-
-    bool set_it_simple = false;
-    if (compiler_type.IsIntegerOrEnumerationType (is_signed) || compiler_type.IsPointerType())
-    {
-        DataExtractor data;
-        Error data_error;
-        size_t num_bytes = new_value_sp->GetData(data, data_error);
-        if (data_error.Fail())
-        {
-            error.SetErrorStringWithFormat("Couldn't convert return value to raw data: %s", data_error.AsCString());
-            return error;
-        }
-        lldb::offset_t offset = 0;
-        if (num_bytes <= 8)
-        {
-            const RegisterInfo *eax_info = reg_ctx->GetRegisterInfoByName("eax", 0);
-            if (num_bytes <= 4)
-            {
-                uint32_t raw_value = data.GetMaxU32(&offset, num_bytes);
-        
-                if (reg_ctx->WriteRegisterFromUnsigned (eax_info, raw_value))
-                    set_it_simple = true;
-            }
-            else
-            {
-                uint32_t raw_value = data.GetMaxU32(&offset, 4);
-        
-                if (reg_ctx->WriteRegisterFromUnsigned (eax_info, raw_value))
-                {
-                    const RegisterInfo *edx_info = reg_ctx->GetRegisterInfoByName("edx", 0);
-                    uint32_t raw_value = data.GetMaxU32(&offset, num_bytes - offset);
-                
-                    if (reg_ctx->WriteRegisterFromUnsigned (edx_info, raw_value))
-                        set_it_simple = true;
-                }
-            }
-        }
-        else
-        {
-            error.SetErrorString("We don't support returning longer than 64 bit integer values at present.");
+    lldb::offset_t offset = 0;
+    if (num_bytes <= 8) {
+      const RegisterInfo *eax_info = reg_ctx->GetRegisterInfoByName("eax", 0);
+      if (num_bytes <= 4) {
+        uint32_t raw_value = data.GetMaxU32(&offset, num_bytes);
+
+        if (reg_ctx->WriteRegisterFromUnsigned(eax_info, raw_value))
+          set_it_simple = true;
+      } else {
+        uint32_t raw_value = data.GetMaxU32(&offset, 4);
+
+        if (reg_ctx->WriteRegisterFromUnsigned(eax_info, raw_value)) {
+          const RegisterInfo *edx_info =
+              reg_ctx->GetRegisterInfoByName("edx", 0);
+          uint32_t raw_value = data.GetMaxU32(&offset, num_bytes - offset);
+
+          if (reg_ctx->WriteRegisterFromUnsigned(edx_info, raw_value))
+            set_it_simple = true;
         }
+      }
+    } else {
+      error.SetErrorString("We don't support returning longer than 64 bit "
+                           "integer values at present.");
     }
-    else if (compiler_type.IsFloatingPointType (count, is_complex))
-    {
-        if (is_complex)
-            error.SetErrorString ("We don't support returning complex values at present");
-        else
-            error.SetErrorString ("We don't support returning float values at present");
-    }
-    
-    if (!set_it_simple)
-        error.SetErrorString ("We only support setting simple integer return types at present.");
-    
-    return error;
+  } else if (compiler_type.IsFloatingPointType(count, is_complex)) {
+    if (is_complex)
+      error.SetErrorString(
+          "We don't support returning complex values at present");
+    else
+      error.SetErrorString(
+          "We don't support returning float values at present");
+  }
+
+  if (!set_it_simple)
+    error.SetErrorString(
+        "We only support setting simple integer return types at present.");
+
+  return error;
 }
 
 ValueObjectSP
-ABIMacOSX_i386::GetReturnValueObjectImpl (Thread &thread,
-                                          CompilerType &compiler_type) const
-{
-    Value value;
-    ValueObjectSP return_valobj_sp;
-    
-    if (!compiler_type)
-        return return_valobj_sp;
-    
-    //value.SetContext (Value::eContextTypeClangType, compiler_type.GetOpaqueQualType());
-    value.SetCompilerType (compiler_type);
-    
-    RegisterContext *reg_ctx = thread.GetRegisterContext().get();
-        if (!reg_ctx)
-        return return_valobj_sp;
-        
-    bool is_signed;
-            
-    if (compiler_type.IsIntegerOrEnumerationType (is_signed))
-    {
-        size_t bit_width = compiler_type.GetBitSize(&thread);
-        
-        unsigned eax_id = reg_ctx->GetRegisterInfoByName("eax", 0)->kinds[eRegisterKindLLDB];
-        unsigned edx_id = reg_ctx->GetRegisterInfoByName("edx", 0)->kinds[eRegisterKindLLDB];
-        
-        switch (bit_width)
-        {
-            default:
-            case 128:
-                // Scalar can't hold 128-bit literals, so we don't handle this
-                return return_valobj_sp;
-            case 64:
-                uint64_t raw_value;
-                raw_value = thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) & 0xffffffff;
-                raw_value |= (thread.GetRegisterContext()->ReadRegisterAsUnsigned(edx_id, 0) & 0xffffffff) << 32;
-                if (is_signed)
-                    value.GetScalar() = (int64_t)raw_value;
-                else
-                    value.GetScalar() = (uint64_t)raw_value;
-                break;
-            case 32:
-                if (is_signed)
-                    value.GetScalar() = (int32_t)(thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) & 0xffffffff);
-                else
-                    value.GetScalar() = (uint32_t)(thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) & 0xffffffff);
-                break;
-            case 16:
-                if (is_signed)
-                    value.GetScalar() = (int16_t)(thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) & 0xffff);
-                else
-                    value.GetScalar() = (uint16_t)(thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) & 0xffff);
-                break;
-            case 8:
-                if (is_signed)
-                    value.GetScalar() = (int8_t)(thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) & 0xff);
-                else
-                    value.GetScalar() = (uint8_t)(thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) & 0xff);
-                break;
-        }
-    }
-    else if (compiler_type.IsPointerType ())
-    {
-        unsigned eax_id = reg_ctx->GetRegisterInfoByName("eax", 0)->kinds[eRegisterKindLLDB];
-        uint32_t ptr = thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) & 0xffffffff;
-        value.GetScalar() = ptr;
-    }
-    else
-    {
-        // not handled yet
-        return return_valobj_sp;
+ABIMacOSX_i386::GetReturnValueObjectImpl(Thread &thread,
+                                         CompilerType &compiler_type) const {
+  Value value;
+  ValueObjectSP return_valobj_sp;
+
+  if (!compiler_type)
+    return return_valobj_sp;
+
+  // value.SetContext (Value::eContextTypeClangType,
+  // compiler_type.GetOpaqueQualType());
+  value.SetCompilerType(compiler_type);
+
+  RegisterContext *reg_ctx = thread.GetRegisterContext().get();
+  if (!reg_ctx)
+    return return_valobj_sp;
+
+  bool is_signed;
+
+  if (compiler_type.IsIntegerOrEnumerationType(is_signed)) {
+    size_t bit_width = compiler_type.GetBitSize(&thread);
+
+    unsigned eax_id =
+        reg_ctx->GetRegisterInfoByName("eax", 0)->kinds[eRegisterKindLLDB];
+    unsigned edx_id =
+        reg_ctx->GetRegisterInfoByName("edx", 0)->kinds[eRegisterKindLLDB];
+
+    switch (bit_width) {
+    default:
+    case 128:
+      // Scalar can't hold 128-bit literals, so we don't handle this
+      return return_valobj_sp;
+    case 64:
+      uint64_t raw_value;
+      raw_value =
+          thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) &
+          0xffffffff;
+      raw_value |=
+          (thread.GetRegisterContext()->ReadRegisterAsUnsigned(edx_id, 0) &
+           0xffffffff)
+          << 32;
+      if (is_signed)
+        value.GetScalar() = (int64_t)raw_value;
+      else
+        value.GetScalar() = (uint64_t)raw_value;
+      break;
+    case 32:
+      if (is_signed)
+        value.GetScalar() = (int32_t)(
+            thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) &
+            0xffffffff);
+      else
+        value.GetScalar() = (uint32_t)(
+            thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) &
+            0xffffffff);
+      break;
+    case 16:
+      if (is_signed)
+        value.GetScalar() = (int16_t)(
+            thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) &
+            0xffff);
+      else
+        value.GetScalar() = (uint16_t)(
+            thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) &
+            0xffff);
+      break;
+    case 8:
+      if (is_signed)
+        value.GetScalar() = (int8_t)(
+            thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) &
+            0xff);
+      else
+        value.GetScalar() = (uint8_t)(
+            thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) &
+            0xff);
+      break;
     }
-    
-    // If we get here, we have a valid Value, so make our ValueObject out of it:
-    
-    return_valobj_sp = ValueObjectConstResult::Create(thread.GetStackFrameAtIndex(0).get(),
-                                                      value,
-                                                      ConstString(""));
+  } else if (compiler_type.IsPointerType()) {
+    unsigned eax_id =
+        reg_ctx->GetRegisterInfoByName("eax", 0)->kinds[eRegisterKindLLDB];
+    uint32_t ptr =
+        thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) &
+        0xffffffff;
+    value.GetScalar() = ptr;
+  } else {
+    // not handled yet
     return return_valobj_sp;
+  }
+
+  // If we get here, we have a valid Value, so make our ValueObject out of it:
+
+  return_valobj_sp = ValueObjectConstResult::Create(
+      thread.GetStackFrameAtIndex(0).get(), value, ConstString(""));
+  return return_valobj_sp;
 }
 
 // This defines the CFA as esp+4
 // the saved pc is at CFA-4 (i.e. esp+0)
 // The saved esp is CFA+0
 
-bool
-ABIMacOSX_i386::CreateFunctionEntryUnwindPlan (UnwindPlan &unwind_plan)
-{
-    unwind_plan.Clear();
-    unwind_plan.SetRegisterKind (eRegisterKindDWARF);
-
-    uint32_t sp_reg_num = dwarf_esp;
-    uint32_t pc_reg_num = dwarf_eip;
-    
-    UnwindPlan::RowSP row(new UnwindPlan::Row);
-    row->GetCFAValue().SetIsRegisterPlusOffset (sp_reg_num, 4);
-    row->SetRegisterLocationToAtCFAPlusOffset(pc_reg_num, -4, false);
-    row->SetRegisterLocationToIsCFAPlusOffset(sp_reg_num, 0, true);
-    unwind_plan.AppendRow (row);
-    unwind_plan.SetSourceName ("i386 at-func-entry default");
-    unwind_plan.SetSourcedFromCompiler (eLazyBoolNo);
-    return true;
+bool ABIMacOSX_i386::CreateFunctionEntryUnwindPlan(UnwindPlan &unwind_plan) {
+  unwind_plan.Clear();
+  unwind_plan.SetRegisterKind(eRegisterKindDWARF);
+
+  uint32_t sp_reg_num = dwarf_esp;
+  uint32_t pc_reg_num = dwarf_eip;
+
+  UnwindPlan::RowSP row(new UnwindPlan::Row);
+  row->GetCFAValue().SetIsRegisterPlusOffset(sp_reg_num, 4);
+  row->SetRegisterLocationToAtCFAPlusOffset(pc_reg_num, -4, false);
+  row->SetRegisterLocationToIsCFAPlusOffset(sp_reg_num, 0, true);
+  unwind_plan.AppendRow(row);
+  unwind_plan.SetSourceName("i386 at-func-entry default");
+  unwind_plan.SetSourcedFromCompiler(eLazyBoolNo);
+  return true;
 }
 
 // This defines the CFA as ebp+8
@@ -526,119 +1045,99 @@ ABIMacOSX_i386::CreateFunctionEntryUnwin
 // The saved ebp is at CFA-8 (i.e. ebp+0)
 // The saved esp is CFA+0
 
-bool
-ABIMacOSX_i386::CreateDefaultUnwindPlan (UnwindPlan &unwind_plan)
-{
-    unwind_plan.Clear ();
-    unwind_plan.SetRegisterKind (eRegisterKindDWARF);
-
-    uint32_t fp_reg_num = dwarf_ebp;
-    uint32_t sp_reg_num = dwarf_esp;
-    uint32_t pc_reg_num = dwarf_eip;
-    
-    UnwindPlan::RowSP row(new UnwindPlan::Row);
-    const int32_t ptr_size = 4;
-
-    row->GetCFAValue().SetIsRegisterPlusOffset (fp_reg_num, 2 * ptr_size);
-    row->SetOffset (0);
-    
-    row->SetRegisterLocationToAtCFAPlusOffset(fp_reg_num, ptr_size * -2, true);
-    row->SetRegisterLocationToAtCFAPlusOffset(pc_reg_num, ptr_size * -1, true);
-    row->SetRegisterLocationToIsCFAPlusOffset(sp_reg_num, 0, true);
-
-    unwind_plan.AppendRow (row);
-    unwind_plan.SetSourceName ("i386 default unwind plan");
-    unwind_plan.SetSourcedFromCompiler (eLazyBoolNo);
-    unwind_plan.SetUnwindPlanValidAtAllInstructions (eLazyBoolNo);
-    return true;
+bool ABIMacOSX_i386::CreateDefaultUnwindPlan(UnwindPlan &unwind_plan) {
+  unwind_plan.Clear();
+  unwind_plan.SetRegisterKind(eRegisterKindDWARF);
+
+  uint32_t fp_reg_num = dwarf_ebp;
+  uint32_t sp_reg_num = dwarf_esp;
+  uint32_t pc_reg_num = dwarf_eip;
+
+  UnwindPlan::RowSP row(new UnwindPlan::Row);
+  const int32_t ptr_size = 4;
+
+  row->GetCFAValue().SetIsRegisterPlusOffset(fp_reg_num, 2 * ptr_size);
+  row->SetOffset(0);
+
+  row->SetRegisterLocationToAtCFAPlusOffset(fp_reg_num, ptr_size * -2, true);
+  row->SetRegisterLocationToAtCFAPlusOffset(pc_reg_num, ptr_size * -1, true);
+  row->SetRegisterLocationToIsCFAPlusOffset(sp_reg_num, 0, true);
+
+  unwind_plan.AppendRow(row);
+  unwind_plan.SetSourceName("i386 default unwind plan");
+  unwind_plan.SetSourcedFromCompiler(eLazyBoolNo);
+  unwind_plan.SetUnwindPlanValidAtAllInstructions(eLazyBoolNo);
+  return true;
 }
 
-bool
-ABIMacOSX_i386::RegisterIsVolatile (const RegisterInfo *reg_info)
-{
-    return !RegisterIsCalleeSaved (reg_info);
+bool ABIMacOSX_i386::RegisterIsVolatile(const RegisterInfo *reg_info) {
+  return !RegisterIsCalleeSaved(reg_info);
 }
 
-// v. http://developer.apple.com/library/mac/#documentation/developertools/Conceptual/LowLevelABI/130-IA-32_Function_Calling_Conventions/IA32.html#//apple_ref/doc/uid/TP40002492-SW4
+// v.
+// http://developer.apple.com/library/mac/#documentation/developertools/Conceptual/LowLevelABI/130-IA-32_Function_Calling_Conventions/IA32.html#//apple_ref/doc/uid/TP40002492-SW4
+//
+// This document ("OS X ABI Function Call Guide", chapter "IA-32 Function
+// Calling Conventions")
+// says that the following registers on i386 are preserved aka non-volatile aka
+// callee-saved:
 //
-// This document ("OS X ABI Function Call Guide", chapter "IA-32 Function Calling Conventions")
-// says that the following registers on i386 are preserved aka non-volatile aka callee-saved:
-// 
 // ebx, ebp, esi, edi, esp
 
-bool
-ABIMacOSX_i386::RegisterIsCalleeSaved (const RegisterInfo *reg_info)
-{
-    if (reg_info)
-    {
-        // Saved registers are ebx, ebp, esi, edi, esp, eip
-        const char *name = reg_info->name;
-        if (name[0] == 'e')
-        {
-            switch (name[1])
-            {
-            case 'b': 
-                if (name[2] == 'x' || name[2] == 'p')
-                    return name[3] == '\0';
-                break;
-            case 'd':
-                if (name[2] == 'i')
-                    return name[3] == '\0';
-                break;
-            case 'i': 
-                if (name[2] == 'p')
-                    return name[3] == '\0';
-                break;
-            case 's':
-                if (name[2] == 'i' || name[2] == 'p')
-                    return name[3] == '\0';
-                break;
-            }
-        }
-        if (name[0] == 's' && name[1] == 'p' && name[2] == '\0')   // sp
-            return true;
-        if (name[0] == 'f' && name[1] == 'p' && name[2] == '\0')   // fp
-            return true;
-        if (name[0] == 'p' && name[1] == 'c' && name[2] == '\0')   // pc
-            return true;
+bool ABIMacOSX_i386::RegisterIsCalleeSaved(const RegisterInfo *reg_info) {
+  if (reg_info) {
+    // Saved registers are ebx, ebp, esi, edi, esp, eip
+    const char *name = reg_info->name;
+    if (name[0] == 'e') {
+      switch (name[1]) {
+      case 'b':
+        if (name[2] == 'x' || name[2] == 'p')
+          return name[3] == '\0';
+        break;
+      case 'd':
+        if (name[2] == 'i')
+          return name[3] == '\0';
+        break;
+      case 'i':
+        if (name[2] == 'p')
+          return name[3] == '\0';
+        break;
+      case 's':
+        if (name[2] == 'i' || name[2] == 'p')
+          return name[3] == '\0';
+        break;
+      }
     }
-    return false;
+    if (name[0] == 's' && name[1] == 'p' && name[2] == '\0') // sp
+      return true;
+    if (name[0] == 'f' && name[1] == 'p' && name[2] == '\0') // fp
+      return true;
+    if (name[0] == 'p' && name[1] == 'c' && name[2] == '\0') // pc
+      return true;
+  }
+  return false;
+}
+
+void ABIMacOSX_i386::Initialize() {
+  PluginManager::RegisterPlugin(
+      GetPluginNameStatic(), "Mac OS X ABI for i386 targets", CreateInstance);
+}
+
+void ABIMacOSX_i386::Terminate() {
+  PluginManager::UnregisterPlugin(CreateInstance);
 }
 
-void
-ABIMacOSX_i386::Initialize()
-{
-    PluginManager::RegisterPlugin (GetPluginNameStatic(),
-                                   "Mac OS X ABI for i386 targets",
-                                   CreateInstance);    
-}
-
-void
-ABIMacOSX_i386::Terminate()
-{
-    PluginManager::UnregisterPlugin (CreateInstance);
-}
-
-lldb_private::ConstString
-ABIMacOSX_i386::GetPluginNameStatic ()
-{
-    static ConstString g_short_name("abi.macosx-i386");
-    return g_short_name;
-    
+lldb_private::ConstString ABIMacOSX_i386::GetPluginNameStatic() {
+  static ConstString g_short_name("abi.macosx-i386");
+  return g_short_name;
 }
 
 //------------------------------------------------------------------
 // PluginInterface protocol
 //------------------------------------------------------------------
 
-lldb_private::ConstString
-ABIMacOSX_i386::GetPluginName()
-{
-    return GetPluginNameStatic();
+lldb_private::ConstString ABIMacOSX_i386::GetPluginName() {
+  return GetPluginNameStatic();
 }
 
-uint32_t
-ABIMacOSX_i386::GetPluginVersion()
-{
-    return 1;
-}
+uint32_t ABIMacOSX_i386::GetPluginVersion() { return 1; }

Modified: lldb/trunk/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.h?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.h (original)
+++ lldb/trunk/source/Plugins/ABI/MacOSX-i386/ABIMacOSX_i386.h Tue Sep  6 15:57:50 2016
@@ -14,116 +14,96 @@
 // C++ Includes
 // Other libraries and framework includes
 // Project includes
-#include "lldb/lldb-private.h"
-#include "lldb/Target/ABI.h"
 #include "lldb/Core/Value.h"
-    
-class ABIMacOSX_i386 :
-    public lldb_private::ABI
-{
+#include "lldb/Target/ABI.h"
+#include "lldb/lldb-private.h"
+
+class ABIMacOSX_i386 : public lldb_private::ABI {
 public:
-    ~ABIMacOSX_i386() override = default;
-    
-    size_t 
-    GetRedZoneSize() const override;
-    
-    bool
-    PrepareTrivialCall(lldb_private::Thread &thread,
-                       lldb::addr_t sp,
-                       lldb::addr_t func_addr,
-                       lldb::addr_t return_addr,
-                       llvm::ArrayRef<lldb::addr_t> args) const override;
-    
-    bool
-    GetArgumentValues(lldb_private::Thread &thread,
-                      lldb_private::ValueList &values) const override;
-    
-    lldb_private::Error
-    SetReturnValueObject(lldb::StackFrameSP &frame_sp, lldb::ValueObjectSP &new_value) override;
-
-    bool
-    CreateFunctionEntryUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
-    
-    bool
-    CreateDefaultUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
-    
-    bool
-    RegisterIsVolatile(const lldb_private::RegisterInfo *reg_info) override;
-
-    // The Darwin i386 ABI requires that stack frames be 16 byte aligned.
-    // When there is a trap handler on the stack, e.g. _sigtramp in userland
-    // code, we've seen that the stack pointer is often not aligned properly
-    // before the handler is invoked.  This means that lldb will stop the unwind
-    // early -- before the function which caused the trap.
-    //
-    // To work around this, we relax that alignment to be just word-size (4-bytes).
-    // Whitelisting the trap handlers for user space would be easy (_sigtramp) but
-    // in other environments there can be a large number of different functions
-    // involved in async traps.
-    //
-    // If we were to enforce 16-byte alignment, we also need to relax to 4-byte
-    // alignment for non-darwin i386 targets.
-    bool
-    CallFrameAddressIsValid(lldb::addr_t cfa) override
-    {
-        // Make sure the stack call frame addresses are are 4 byte aligned
-        if (cfa & (4ull - 1ull))
-            return false;   // Not 4 byte aligned
-        if (cfa == 0)
-            return false;   // Zero is not a valid stack address
-        return true;
-    }
-
-    bool
-    CodeAddressIsValid(lldb::addr_t pc) override
-    {
-        // Just make sure the address is a valid 32 bit address. 
-        return pc <= UINT32_MAX;
-    }
-
-    const lldb_private::RegisterInfo *
-    GetRegisterInfoArray(uint32_t &count) override;
-
-    //------------------------------------------------------------------
-    // Static Functions
-    //------------------------------------------------------------------
-
-    static void
-    Initialize();
-    
-    static void
-    Terminate();
-    
-    static lldb::ABISP
-    CreateInstance (const lldb_private::ArchSpec &arch);
-    
-    //------------------------------------------------------------------
-    // PluginInterface protocol
-    //------------------------------------------------------------------
-
-    static lldb_private::ConstString
-    GetPluginNameStatic ();
-
-    lldb_private::ConstString
-    GetPluginName() override;
-    
-    uint32_t
-    GetPluginVersion() override;
-    
+  ~ABIMacOSX_i386() override = default;
+
+  size_t GetRedZoneSize() const override;
+
+  bool PrepareTrivialCall(lldb_private::Thread &thread, lldb::addr_t sp,
+                          lldb::addr_t func_addr, lldb::addr_t return_addr,
+                          llvm::ArrayRef<lldb::addr_t> args) const override;
+
+  bool GetArgumentValues(lldb_private::Thread &thread,
+                         lldb_private::ValueList &values) const override;
+
+  lldb_private::Error
+  SetReturnValueObject(lldb::StackFrameSP &frame_sp,
+                       lldb::ValueObjectSP &new_value) override;
+
+  bool
+  CreateFunctionEntryUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
+
+  bool CreateDefaultUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
+
+  bool RegisterIsVolatile(const lldb_private::RegisterInfo *reg_info) override;
+
+  // The Darwin i386 ABI requires that stack frames be 16 byte aligned.
+  // When there is a trap handler on the stack, e.g. _sigtramp in userland
+  // code, we've seen that the stack pointer is often not aligned properly
+  // before the handler is invoked.  This means that lldb will stop the unwind
+  // early -- before the function which caused the trap.
+  //
+  // To work around this, we relax that alignment to be just word-size
+  // (4-bytes).
+  // Whitelisting the trap handlers for user space would be easy (_sigtramp) but
+  // in other environments there can be a large number of different functions
+  // involved in async traps.
+  //
+  // If we were to enforce 16-byte alignment, we also need to relax to 4-byte
+  // alignment for non-darwin i386 targets.
+  bool CallFrameAddressIsValid(lldb::addr_t cfa) override {
+    // Make sure the stack call frame addresses are are 4 byte aligned
+    if (cfa & (4ull - 1ull))
+      return false; // Not 4 byte aligned
+    if (cfa == 0)
+      return false; // Zero is not a valid stack address
+    return true;
+  }
+
+  bool CodeAddressIsValid(lldb::addr_t pc) override {
+    // Just make sure the address is a valid 32 bit address.
+    return pc <= UINT32_MAX;
+  }
+
+  const lldb_private::RegisterInfo *
+  GetRegisterInfoArray(uint32_t &count) override;
+
+  //------------------------------------------------------------------
+  // Static Functions
+  //------------------------------------------------------------------
+
+  static void Initialize();
+
+  static void Terminate();
+
+  static lldb::ABISP CreateInstance(const lldb_private::ArchSpec &arch);
+
+  //------------------------------------------------------------------
+  // PluginInterface protocol
+  //------------------------------------------------------------------
+
+  static lldb_private::ConstString GetPluginNameStatic();
+
+  lldb_private::ConstString GetPluginName() override;
+
+  uint32_t GetPluginVersion() override;
+
 protected:
-    lldb::ValueObjectSP
-    GetReturnValueObjectImpl(lldb_private::Thread &thread,
-                             lldb_private::CompilerType &ast_type) const override;
+  lldb::ValueObjectSP
+  GetReturnValueObjectImpl(lldb_private::Thread &thread,
+                           lldb_private::CompilerType &ast_type) const override;
 
-    bool
-    RegisterIsCalleeSaved (const lldb_private::RegisterInfo *reg_info);
+  bool RegisterIsCalleeSaved(const lldb_private::RegisterInfo *reg_info);
 
 private:
-    ABIMacOSX_i386() : 
-        lldb_private::ABI() 
-    {
-        // Call CreateInstance instead.  
-    } 
+  ABIMacOSX_i386() : lldb_private::ABI() {
+    // Call CreateInstance instead.
+  }
 };
 
 #endif // liblldb_ABIMacOSX_i386_h_

Modified: lldb/trunk/source/Plugins/ABI/SysV-arm/ABISysV_arm.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ABI/SysV-arm/ABISysV_arm.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ABI/SysV-arm/ABISysV_arm.cpp (original)
+++ lldb/trunk/source/Plugins/ABI/SysV-arm/ABISysV_arm.cpp Tue Sep  6 15:57:50 2016
@@ -32,855 +32,1943 @@
 #include "lldb/Target/Target.h"
 #include "lldb/Target/Thread.h"
 
+#include "Plugins/Process/Utility/ARMDefines.h"
 #include "Utility/ARM_DWARF_Registers.h"
 #include "Utility/ARM_ehframe_Registers.h"
-#include "Plugins/Process/Utility/ARMDefines.h"
 
 using namespace lldb;
 using namespace lldb_private;
 
-static RegisterInfo g_register_infos[] =
-{
-    //  NAME       ALT       SZ OFF ENCODING         FORMAT          EH_FRAME                DWARF               GENERIC                     PROCESS PLUGIN          LLDB NATIVE            VALUE REGS    INVALIDATE REGS
-    //  ========== =======   == === =============    ============    ======================= =================== =========================== ======================= ====================== ==========    ===============
-    {   "r0",      "arg1",    4, 0, eEncodingUint    , eFormatHex,   { ehframe_r0,           dwarf_r0,           LLDB_REGNUM_GENERIC_ARG1,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r1",      "arg2",    4, 0, eEncodingUint    , eFormatHex,   { ehframe_r1,           dwarf_r1,           LLDB_REGNUM_GENERIC_ARG2,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r2",      "arg3",    4, 0, eEncodingUint    , eFormatHex,   { ehframe_r2,           dwarf_r2,           LLDB_REGNUM_GENERIC_ARG3,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r3",      "arg4",    4, 0, eEncodingUint    , eFormatHex,   { ehframe_r3,           dwarf_r3,           LLDB_REGNUM_GENERIC_ARG4,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r4",      nullptr,   4, 0, eEncodingUint    , eFormatHex,   { ehframe_r4,           dwarf_r4,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r5",      nullptr,   4, 0, eEncodingUint    , eFormatHex,   { ehframe_r5,           dwarf_r5,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r6",      nullptr,   4, 0, eEncodingUint    , eFormatHex,   { ehframe_r6,           dwarf_r6,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r7",      nullptr,   4, 0, eEncodingUint    , eFormatHex,   { ehframe_r7,           dwarf_r7,           LLDB_REGNUM_GENERIC_FP,     LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r8",      nullptr,   4, 0, eEncodingUint    , eFormatHex,   { ehframe_r8,           dwarf_r8,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r9",      nullptr,   4, 0, eEncodingUint    , eFormatHex,   { ehframe_r9,           dwarf_r9,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r10",     nullptr,   4, 0, eEncodingUint    , eFormatHex,   { ehframe_r10,          dwarf_r10,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r11",     nullptr,   4, 0, eEncodingUint    , eFormatHex,   { ehframe_r11,          dwarf_r11,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r12",     nullptr,   4, 0, eEncodingUint    , eFormatHex,   { ehframe_r12,          dwarf_r12,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "sp",      "r13",     4, 0, eEncodingUint    , eFormatHex,   { ehframe_sp,           dwarf_sp,           LLDB_REGNUM_GENERIC_SP,     LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "lr",      "r14",     4, 0, eEncodingUint    , eFormatHex,   { ehframe_lr,           dwarf_lr,           LLDB_REGNUM_GENERIC_RA,     LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "pc",      "r15",     4, 0, eEncodingUint    , eFormatHex,   { ehframe_pc,           dwarf_pc,           LLDB_REGNUM_GENERIC_PC,     LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "cpsr",    "psr",     4, 0, eEncodingUint    , eFormatHex,   { ehframe_cpsr,         dwarf_cpsr,         LLDB_REGNUM_GENERIC_FLAGS,  LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s0",      nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s0,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s1",      nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s1,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s2",      nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s2,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s3",      nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s3,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s4",      nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s4,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s5",      nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s5,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s6",      nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s6,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s7",      nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s7,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s8",      nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s8,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s9",      nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s9,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s10",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s10,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s11",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s11,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s12",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s12,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s13",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s13,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s14",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s14,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s15",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s15,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s16",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s16,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s17",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s17,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s18",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s18,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s19",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s19,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s20",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s20,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s21",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s21,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s22",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s22,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s23",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s23,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s24",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s24,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s25",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s25,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s26",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s26,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s27",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s27,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s28",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s28,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s29",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s29,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s30",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s30,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s31",     nullptr,   4, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_s31,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "fpscr",   nullptr,   4, 0, eEncodingUint    , eFormatHex  , { LLDB_INVALID_REGNUM,  LLDB_INVALID_REGNUM,LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d0",      nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d0,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d1",      nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d1,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d2",      nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d2,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d3",      nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d3,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d4",      nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d4,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d5",      nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d5,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d6",      nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d6,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d7",      nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d7,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d8",      nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d8,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d9",      nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d9,           LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d10",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d10,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d11",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d11,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d12",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d12,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d13",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d13,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d14",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d14,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d15",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d15,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d16",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d16,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d17",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d17,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d18",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d18,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d19",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d19,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d20",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d20,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d21",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d21,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d22",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d22,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d23",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d23,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d24",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d24,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d25",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d25,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d26",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d26,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d27",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d27,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d28",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d28,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d29",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d29,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d30",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d30,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d31",     nullptr,   8, 0, eEncodingIEEE754 , eFormatFloat, { LLDB_INVALID_REGNUM,  dwarf_d31,          LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r8_usr",  nullptr,   4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r8_usr,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r9_usr",  nullptr,   4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r9_usr,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r10_usr", nullptr,   4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r10_usr,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r11_usr", nullptr,   4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r11_usr,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r12_usr", nullptr,   4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r12_usr,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r13_usr", "sp_usr",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r13_usr,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r14_usr", "lr_usr",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r14_usr,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r8_fiq",  nullptr,   4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r8_fiq,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r9_fiq",  nullptr,   4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r9_fiq,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r10_fiq", nullptr,   4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r10_fiq,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r11_fiq", nullptr,   4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r11_fiq,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r12_fiq", nullptr,   4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r12_fiq,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r13_fiq", "sp_fiq",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r13_fiq,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r14_fiq", "lr_fiq",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r14_fiq,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r13_irq", "sp_irq",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r13_irq,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r14_irq", "lr_irq",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r14_irq,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r13_abt", "sp_abt",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r13_abt,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r14_abt", "lr_abt",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r14_abt,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r13_und", "sp_und",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r13_und,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r14_und", "lr_und",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r14_und,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r13_svc", "sp_svc",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r13_svc,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "r14_svc", "lr_svc",  4, 0, eEncodingUint    , eFormatHex,   { LLDB_INVALID_REGNUM,  dwarf_r14_svc,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 }
-};
+static RegisterInfo g_register_infos[] = {
+    //  NAME       ALT       SZ OFF ENCODING         FORMAT          EH_FRAME
+    //  DWARF               GENERIC                     PROCESS PLUGIN
+    //  LLDB NATIVE            VALUE REGS    INVALIDATE REGS
+    //  ========== =======   == === =============    ============
+    //  ======================= =================== ===========================
+    //  ======================= ====================== ==========
+    //  ===============
+    {"r0",
+     "arg1",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r0, dwarf_r0, LLDB_REGNUM_GENERIC_ARG1, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r1",
+     "arg2",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r1, dwarf_r1, LLDB_REGNUM_GENERIC_ARG2, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r2",
+     "arg3",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r2, dwarf_r2, LLDB_REGNUM_GENERIC_ARG3, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r3",
+     "arg4",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r3, dwarf_r3, LLDB_REGNUM_GENERIC_ARG4, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r4",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r4, dwarf_r4, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r5",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r5, dwarf_r5, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r6",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r6, dwarf_r6, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r7",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r7, dwarf_r7, LLDB_REGNUM_GENERIC_FP, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r8",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r8, dwarf_r8, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r9",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r9, dwarf_r9, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r10",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r10, dwarf_r10, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r11",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r11, dwarf_r11, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r12",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_r12, dwarf_r12, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"sp",
+     "r13",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_sp, dwarf_sp, LLDB_REGNUM_GENERIC_SP, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"lr",
+     "r14",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_lr, dwarf_lr, LLDB_REGNUM_GENERIC_RA, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"pc",
+     "r15",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_pc, dwarf_pc, LLDB_REGNUM_GENERIC_PC, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"cpsr",
+     "psr",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {ehframe_cpsr, dwarf_cpsr, LLDB_REGNUM_GENERIC_FLAGS, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s0",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s0, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s1",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s1, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s2",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s2, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s3",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s3, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s4",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s4, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s5",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s5, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s6",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s6, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s7",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s7, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s8",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s8, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s9",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s9, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s10",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s10, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s11",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s11, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s12",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s12, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s13",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s13, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s14",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s14, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s15",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s15, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s16",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s16, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s17",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s17, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s18",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s18, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s19",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s19, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s20",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s20, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s21",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s21, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s22",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s22, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s23",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s23, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s24",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s24, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s25",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s25, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s26",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s26, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s27",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s27, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s28",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s28, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s29",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s29, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s30",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s30, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s31",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_s31, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"fpscr",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d0",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d0, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d1",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d1, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d2",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d2, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d3",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d3, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d4",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d4, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d5",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d5, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d6",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d6, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d7",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d7, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d8",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d8, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d9",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d9, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d10",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d10, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d11",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d11, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d12",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d12, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d13",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d13, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d14",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d14, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d15",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d15, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d16",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d16, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d17",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d17, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d18",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d18, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d19",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d19, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d20",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d20, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d21",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d21, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d22",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d22, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d23",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d23, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d24",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d24, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d25",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d25, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d26",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d26, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d27",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d27, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d28",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d28, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d29",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d29, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d30",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d30, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d31",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, dwarf_d31, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r8_usr",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r8_usr, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r9_usr",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r9_usr, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r10_usr",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r10_usr, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r11_usr",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r11_usr, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r12_usr",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r12_usr, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r13_usr",
+     "sp_usr",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r13_usr, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r14_usr",
+     "lr_usr",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r14_usr, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r8_fiq",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r8_fiq, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r9_fiq",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r9_fiq, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r10_fiq",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r10_fiq, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r11_fiq",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r11_fiq, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r12_fiq",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r12_fiq, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r13_fiq",
+     "sp_fiq",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r13_fiq, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r14_fiq",
+     "lr_fiq",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r14_fiq, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r13_irq",
+     "sp_irq",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r13_irq, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r14_irq",
+     "lr_irq",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r14_irq, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r13_abt",
+     "sp_abt",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r13_abt, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r14_abt",
+     "lr_abt",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r14_abt, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r13_und",
+     "sp_und",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r13_und, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r14_und",
+     "lr_und",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r14_und, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r13_svc",
+     "sp_svc",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r13_svc, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r14_svc",
+     "lr_svc",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, dwarf_r14_svc, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0}};
 
-static const uint32_t k_num_register_infos = llvm::array_lengthof(g_register_infos);
+static const uint32_t k_num_register_infos =
+    llvm::array_lengthof(g_register_infos);
 static bool g_register_info_names_constified = false;
 
 const lldb_private::RegisterInfo *
-ABISysV_arm::GetRegisterInfoArray (uint32_t &count)
-{
-    // Make the C-string names and alt_names for the register infos into const 
-    // C-string values by having the ConstString unique the names in the global
-    // constant C-string pool.
-    if (!g_register_info_names_constified)
-    {
-        g_register_info_names_constified = true;
-        for (uint32_t i = 0; i < k_num_register_infos; ++i)
-        {
-            if (g_register_infos[i].name)
-                g_register_infos[i].name = ConstString(g_register_infos[i].name).GetCString();
-            if (g_register_infos[i].alt_name)
-                g_register_infos[i].alt_name = ConstString(g_register_infos[i].alt_name).GetCString();
-        }
+ABISysV_arm::GetRegisterInfoArray(uint32_t &count) {
+  // Make the C-string names and alt_names for the register infos into const
+  // C-string values by having the ConstString unique the names in the global
+  // constant C-string pool.
+  if (!g_register_info_names_constified) {
+    g_register_info_names_constified = true;
+    for (uint32_t i = 0; i < k_num_register_infos; ++i) {
+      if (g_register_infos[i].name)
+        g_register_infos[i].name =
+            ConstString(g_register_infos[i].name).GetCString();
+      if (g_register_infos[i].alt_name)
+        g_register_infos[i].alt_name =
+            ConstString(g_register_infos[i].alt_name).GetCString();
     }
-    count = k_num_register_infos;
-    return g_register_infos;
+  }
+  count = k_num_register_infos;
+  return g_register_infos;
 }
 
-size_t
-ABISysV_arm::GetRedZoneSize () const
-{
-    return 0;
-}
+size_t ABISysV_arm::GetRedZoneSize() const { return 0; }
 
 //------------------------------------------------------------------
 // Static Functions
 //------------------------------------------------------------------
 
 ABISP
-ABISysV_arm::CreateInstance (const ArchSpec &arch)
-{
-    static ABISP g_abi_sp;
-    const llvm::Triple::ArchType arch_type = arch.GetTriple().getArch();
-    const llvm::Triple::VendorType vendor_type = arch.GetTriple().getVendor();
-
-    if (vendor_type != llvm::Triple::Apple)
-    {
-        if ((arch_type == llvm::Triple::arm) ||
-            (arch_type == llvm::Triple::thumb))
-        {
-            if (!g_abi_sp)
-                g_abi_sp.reset (new ABISysV_arm);
-            return g_abi_sp;
-        }
+ABISysV_arm::CreateInstance(const ArchSpec &arch) {
+  static ABISP g_abi_sp;
+  const llvm::Triple::ArchType arch_type = arch.GetTriple().getArch();
+  const llvm::Triple::VendorType vendor_type = arch.GetTriple().getVendor();
+
+  if (vendor_type != llvm::Triple::Apple) {
+    if ((arch_type == llvm::Triple::arm) ||
+        (arch_type == llvm::Triple::thumb)) {
+      if (!g_abi_sp)
+        g_abi_sp.reset(new ABISysV_arm);
+      return g_abi_sp;
     }
+  }
 
-    return ABISP();
+  return ABISP();
 }
 
-bool
-ABISysV_arm::PrepareTrivialCall (Thread &thread, 
-                                   addr_t sp, 
-                                   addr_t function_addr, 
-                                   addr_t return_addr, 
-                                   llvm::ArrayRef<addr_t> args) const
-{
-    RegisterContext *reg_ctx = thread.GetRegisterContext().get();
-    if (!reg_ctx)
-        return false;    
-
-    const uint32_t pc_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC);
-    const uint32_t sp_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_SP);
-    const uint32_t ra_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_RA);
-
-    RegisterValue reg_value;
-
-    const uint8_t reg_names[] = { LLDB_REGNUM_GENERIC_ARG1, LLDB_REGNUM_GENERIC_ARG2, LLDB_REGNUM_GENERIC_ARG3, LLDB_REGNUM_GENERIC_ARG4 };
-    
-    llvm::ArrayRef<addr_t>::iterator ai = args.begin(), ae = args.end();
-    
-    for (size_t i = 0; i < llvm::array_lengthof(reg_names); ++i)
-    {
-        if (ai == ae)
-            break;
-        
-        reg_value.SetUInt32(*ai);
-        if (!reg_ctx->WriteRegister(reg_ctx->GetRegisterInfo(eRegisterKindGeneric, reg_names[i]), reg_value))
-            return false;
-        
-        ++ai;
-    }
-    
-    if (ai != ae)
-    {
-        // Spill onto the stack
-        size_t num_stack_regs = ae - ai;
-        
-        sp -= (num_stack_regs * 4);
-        // Keep the stack 8 byte aligned, not that we need to
-        sp &= ~(8ull-1ull);
-        
-        // just using arg1 to get the right size
-        const RegisterInfo *reg_info = reg_ctx->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1);
-        
-        addr_t arg_pos = sp;
-        
-        for (; ai != ae; ++ai)
-        {
-            reg_value.SetUInt32(*ai);
-            if (reg_ctx->WriteRegisterValueToMemory(reg_info, arg_pos, reg_info->byte_size, reg_value).Fail())
-                return false;
-            arg_pos += reg_info->byte_size;
-        }
-    }
-    
-    TargetSP target_sp (thread.CalculateTarget());
-    Address so_addr;
-
-    // Figure out if our return address is ARM or Thumb by using the 
-    // Address::GetCallableLoadAddress(Target*) which will figure out the ARM
-    // thumb-ness and set the correct address bits for us.
-    so_addr.SetLoadAddress (return_addr, target_sp.get());
-    return_addr = so_addr.GetCallableLoadAddress (target_sp.get());
+bool ABISysV_arm::PrepareTrivialCall(Thread &thread, addr_t sp,
+                                     addr_t function_addr, addr_t return_addr,
+                                     llvm::ArrayRef<addr_t> args) const {
+  RegisterContext *reg_ctx = thread.GetRegisterContext().get();
+  if (!reg_ctx)
+    return false;
 
-    // Set "lr" to the return address
-    if (!reg_ctx->WriteRegisterFromUnsigned (ra_reg_num, return_addr))
+  const uint32_t pc_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber(
+      eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC);
+  const uint32_t sp_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber(
+      eRegisterKindGeneric, LLDB_REGNUM_GENERIC_SP);
+  const uint32_t ra_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber(
+      eRegisterKindGeneric, LLDB_REGNUM_GENERIC_RA);
+
+  RegisterValue reg_value;
+
+  const uint8_t reg_names[] = {
+      LLDB_REGNUM_GENERIC_ARG1, LLDB_REGNUM_GENERIC_ARG2,
+      LLDB_REGNUM_GENERIC_ARG3, LLDB_REGNUM_GENERIC_ARG4};
+
+  llvm::ArrayRef<addr_t>::iterator ai = args.begin(), ae = args.end();
+
+  for (size_t i = 0; i < llvm::array_lengthof(reg_names); ++i) {
+    if (ai == ae)
+      break;
+
+    reg_value.SetUInt32(*ai);
+    if (!reg_ctx->WriteRegister(
+            reg_ctx->GetRegisterInfo(eRegisterKindGeneric, reg_names[i]),
+            reg_value))
+      return false;
+
+    ++ai;
+  }
+
+  if (ai != ae) {
+    // Spill onto the stack
+    size_t num_stack_regs = ae - ai;
+
+    sp -= (num_stack_regs * 4);
+    // Keep the stack 8 byte aligned, not that we need to
+    sp &= ~(8ull - 1ull);
+
+    // just using arg1 to get the right size
+    const RegisterInfo *reg_info = reg_ctx->GetRegisterInfo(
+        eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1);
+
+    addr_t arg_pos = sp;
+
+    for (; ai != ae; ++ai) {
+      reg_value.SetUInt32(*ai);
+      if (reg_ctx
+              ->WriteRegisterValueToMemory(reg_info, arg_pos,
+                                           reg_info->byte_size, reg_value)
+              .Fail())
         return false;
+      arg_pos += reg_info->byte_size;
+    }
+  }
 
-    // Set "sp" to the requested value
-    if (!reg_ctx->WriteRegisterFromUnsigned (sp_reg_num, sp))
-        return false;
-    
-    // If bit zero or 1 is set, this must be a thumb function, no need to figure
-    // this out from the symbols.
-    so_addr.SetLoadAddress (function_addr, target_sp.get());
-    function_addr = so_addr.GetCallableLoadAddress (target_sp.get());
-
-    const RegisterInfo *cpsr_reg_info = reg_ctx->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_FLAGS);
-    const uint32_t curr_cpsr = reg_ctx->ReadRegisterAsUnsigned(cpsr_reg_info, 0);
-
-    // Make a new CPSR and mask out any Thumb IT (if/then) bits
-    uint32_t new_cpsr = curr_cpsr & ~MASK_CPSR_IT_MASK;
-    // If bit zero or 1 is set, this must be thumb...
-    if (function_addr & 1ull)
-        new_cpsr |= MASK_CPSR_T;    // Set T bit in CPSR
-    else
-        new_cpsr &= ~MASK_CPSR_T;   // Clear T bit in CPSR
+  TargetSP target_sp(thread.CalculateTarget());
+  Address so_addr;
 
-    if (new_cpsr != curr_cpsr)
-    {
-        if (!reg_ctx->WriteRegisterFromUnsigned (cpsr_reg_info, new_cpsr))
-            return false;
-    }
+  // Figure out if our return address is ARM or Thumb by using the
+  // Address::GetCallableLoadAddress(Target*) which will figure out the ARM
+  // thumb-ness and set the correct address bits for us.
+  so_addr.SetLoadAddress(return_addr, target_sp.get());
+  return_addr = so_addr.GetCallableLoadAddress(target_sp.get());
 
-    function_addr &= ~1ull;   // clear bit zero since the CPSR will take care of the mode for us
-    
-    // Set "pc" to the address requested
-    if (!reg_ctx->WriteRegisterFromUnsigned (pc_reg_num, function_addr))
-        return false;
+  // Set "lr" to the return address
+  if (!reg_ctx->WriteRegisterFromUnsigned(ra_reg_num, return_addr))
+    return false;
+
+  // Set "sp" to the requested value
+  if (!reg_ctx->WriteRegisterFromUnsigned(sp_reg_num, sp))
+    return false;
+
+  // If bit zero or 1 is set, this must be a thumb function, no need to figure
+  // this out from the symbols.
+  so_addr.SetLoadAddress(function_addr, target_sp.get());
+  function_addr = so_addr.GetCallableLoadAddress(target_sp.get());
+
+  const RegisterInfo *cpsr_reg_info =
+      reg_ctx->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_FLAGS);
+  const uint32_t curr_cpsr = reg_ctx->ReadRegisterAsUnsigned(cpsr_reg_info, 0);
+
+  // Make a new CPSR and mask out any Thumb IT (if/then) bits
+  uint32_t new_cpsr = curr_cpsr & ~MASK_CPSR_IT_MASK;
+  // If bit zero or 1 is set, this must be thumb...
+  if (function_addr & 1ull)
+    new_cpsr |= MASK_CPSR_T; // Set T bit in CPSR
+  else
+    new_cpsr &= ~MASK_CPSR_T; // Clear T bit in CPSR
+
+  if (new_cpsr != curr_cpsr) {
+    if (!reg_ctx->WriteRegisterFromUnsigned(cpsr_reg_info, new_cpsr))
+      return false;
+  }
+
+  function_addr &=
+      ~1ull; // clear bit zero since the CPSR will take care of the mode for us
 
-    return true;
+  // Set "pc" to the address requested
+  if (!reg_ctx->WriteRegisterFromUnsigned(pc_reg_num, function_addr))
+    return false;
+
+  return true;
 }
 
-bool
-ABISysV_arm::GetArgumentValues (Thread &thread,
-                                  ValueList &values) const
-{
-    uint32_t num_values = values.GetSize();
-
-    ExecutionContext exe_ctx (thread.shared_from_this());
-    // For now, assume that the types in the AST values come from the Target's 
-    // scratch AST.    
-    
-    // Extract the register context so we can read arguments from registers
-    
-    RegisterContext *reg_ctx = thread.GetRegisterContext().get();
-    
-    if (!reg_ctx)
+bool ABISysV_arm::GetArgumentValues(Thread &thread, ValueList &values) const {
+  uint32_t num_values = values.GetSize();
+
+  ExecutionContext exe_ctx(thread.shared_from_this());
+  // For now, assume that the types in the AST values come from the Target's
+  // scratch AST.
+
+  // Extract the register context so we can read arguments from registers
+
+  RegisterContext *reg_ctx = thread.GetRegisterContext().get();
+
+  if (!reg_ctx)
+    return false;
+
+  addr_t sp = 0;
+
+  for (uint32_t value_idx = 0; value_idx < num_values; ++value_idx) {
+    // We currently only support extracting values with Clang QualTypes.
+    // Do we care about others?
+    Value *value = values.GetValueAtIndex(value_idx);
+
+    if (!value)
+      return false;
+
+    CompilerType compiler_type = value->GetCompilerType();
+    if (compiler_type) {
+      bool is_signed = false;
+      size_t bit_width = 0;
+      if (compiler_type.IsIntegerOrEnumerationType(is_signed)) {
+        bit_width = compiler_type.GetBitSize(&thread);
+      } else if (compiler_type.IsPointerOrReferenceType()) {
+        bit_width = compiler_type.GetBitSize(&thread);
+      } else {
+        // We only handle integer, pointer and reference types currently...
         return false;
-        
-    addr_t sp = 0;
+      }
 
-    for (uint32_t value_idx = 0; value_idx < num_values; ++value_idx)
-    {
-        // We currently only support extracting values with Clang QualTypes.
-        // Do we care about others?
-        Value *value = values.GetValueAtIndex(value_idx);
-        
-        if (!value)
-            return false;
-        
-        CompilerType compiler_type = value->GetCompilerType();
-        if (compiler_type)
-        {
-            bool is_signed = false;
-            size_t bit_width = 0;
-            if (compiler_type.IsIntegerOrEnumerationType (is_signed))
-            {
-                bit_width = compiler_type.GetBitSize(&thread);
-            }
-            else if (compiler_type.IsPointerOrReferenceType ())
-            {
-                bit_width = compiler_type.GetBitSize(&thread);
-            }
-            else
-            {
-                // We only handle integer, pointer and reference types currently...
+      if (bit_width <= (exe_ctx.GetProcessRef().GetAddressByteSize() * 8)) {
+        if (value_idx < 4) {
+          // Arguments 1-4 are in r0-r3...
+          const RegisterInfo *arg_reg_info = nullptr;
+          arg_reg_info = reg_ctx->GetRegisterInfo(
+              eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1 + value_idx);
+          if (arg_reg_info) {
+            RegisterValue reg_value;
+
+            if (reg_ctx->ReadRegister(arg_reg_info, reg_value)) {
+              if (is_signed)
+                reg_value.SignExtend(bit_width);
+              if (!reg_value.GetScalarValue(value->GetScalar()))
                 return false;
+              continue;
             }
-            
-            if (bit_width <= (exe_ctx.GetProcessRef().GetAddressByteSize() * 8))
-            {
-                if (value_idx < 4)
-                {
-                    // Arguments 1-4 are in r0-r3...
-                    const RegisterInfo *arg_reg_info = nullptr;
-                    arg_reg_info = reg_ctx->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1 + value_idx);
-                    if (arg_reg_info)
-                    {
-                        RegisterValue reg_value;
-                        
-                        if (reg_ctx->ReadRegister(arg_reg_info, reg_value))
-                        {
-                            if (is_signed)
-                                reg_value.SignExtend(bit_width);
-                            if (!reg_value.GetScalarValue(value->GetScalar()))
-                                return false;
-                            continue;
-                        }
-                    }
-                    return false;
-                }
-                else
-                {
-                    if (sp == 0)
-                    {
-                        // Read the stack pointer if it already hasn't been read
-                        sp = reg_ctx->GetSP(0);
-                        if (sp == 0)
-                            return false;
-                    }
-
-                    // Arguments 5 on up are on the stack
-                    const uint32_t arg_byte_size = (bit_width + (8-1)) / 8;
-                    Error error;
-                    if (!exe_ctx.GetProcessRef().ReadScalarIntegerFromMemory(sp, arg_byte_size, is_signed, value->GetScalar(), error))
-                        return false;
+          }
+          return false;
+        } else {
+          if (sp == 0) {
+            // Read the stack pointer if it already hasn't been read
+            sp = reg_ctx->GetSP(0);
+            if (sp == 0)
+              return false;
+          }
+
+          // Arguments 5 on up are on the stack
+          const uint32_t arg_byte_size = (bit_width + (8 - 1)) / 8;
+          Error error;
+          if (!exe_ctx.GetProcessRef().ReadScalarIntegerFromMemory(
+                  sp, arg_byte_size, is_signed, value->GetScalar(), error))
+            return false;
 
-                    sp += arg_byte_size;
-                }
-            }
+          sp += arg_byte_size;
         }
+      }
     }
-    return true;
+  }
+  return true;
 }
 
-static bool
-GetReturnValuePassedInMemory(Thread &thread, RegisterContext* reg_ctx, size_t byte_size, Value& value)
-{
-    Error error;
-    DataBufferHeap buffer(byte_size, 0);
-
-    const RegisterInfo *r0_reg_info = reg_ctx->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1);
-    uint32_t address = reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX;
-    thread.GetProcess()->ReadMemory(address, buffer.GetBytes(), buffer.GetByteSize(), error);
+static bool GetReturnValuePassedInMemory(Thread &thread,
+                                         RegisterContext *reg_ctx,
+                                         size_t byte_size, Value &value) {
+  Error error;
+  DataBufferHeap buffer(byte_size, 0);
+
+  const RegisterInfo *r0_reg_info =
+      reg_ctx->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1);
+  uint32_t address =
+      reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX;
+  thread.GetProcess()->ReadMemory(address, buffer.GetBytes(),
+                                  buffer.GetByteSize(), error);
 
-    if (error.Fail())
-        return false;
+  if (error.Fail())
+    return false;
 
-    value.SetBytes(buffer.GetBytes(), buffer.GetByteSize());
-    return true;
+  value.SetBytes(buffer.GetBytes(), buffer.GetByteSize());
+  return true;
 }
 
-bool
-ABISysV_arm::IsArmHardFloat (Thread &thread) const
-{
-    ProcessSP process_sp (thread.GetProcess());
-    if (process_sp)
-    {
-        const ArchSpec &arch (process_sp->GetTarget().GetArchitecture());
+bool ABISysV_arm::IsArmHardFloat(Thread &thread) const {
+  ProcessSP process_sp(thread.GetProcess());
+  if (process_sp) {
+    const ArchSpec &arch(process_sp->GetTarget().GetArchitecture());
 
-        return (arch.GetFlags() & ArchSpec::eARM_abi_hard_float) != 0;
-    }
+    return (arch.GetFlags() & ArchSpec::eARM_abi_hard_float) != 0;
+  }
 
-    return false;
+  return false;
 }
 
-ValueObjectSP
-ABISysV_arm::GetReturnValueObjectImpl (Thread &thread,
-                                       lldb_private::CompilerType &compiler_type) const
-{
-    Value value;
-    ValueObjectSP return_valobj_sp;
-    
-    if (!compiler_type)
+ValueObjectSP ABISysV_arm::GetReturnValueObjectImpl(
+    Thread &thread, lldb_private::CompilerType &compiler_type) const {
+  Value value;
+  ValueObjectSP return_valobj_sp;
+
+  if (!compiler_type)
+    return return_valobj_sp;
+
+  // value.SetContext (Value::eContextTypeClangType,
+  // compiler_type.GetOpaqueQualType());
+  value.SetCompilerType(compiler_type);
+
+  RegisterContext *reg_ctx = thread.GetRegisterContext().get();
+  if (!reg_ctx)
+    return return_valobj_sp;
+
+  bool is_signed;
+  bool is_complex;
+  uint32_t float_count;
+  bool is_vfp_candidate = false;
+  uint8_t vfp_count = 0;
+  uint8_t vfp_byte_size = 0;
+
+  // Get the pointer to the first stack argument so we have a place to start
+  // when reading data
+
+  const RegisterInfo *r0_reg_info =
+      reg_ctx->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1);
+  size_t bit_width = compiler_type.GetBitSize(&thread);
+  size_t byte_size = compiler_type.GetByteSize(&thread);
+
+  if (compiler_type.IsIntegerOrEnumerationType(is_signed)) {
+    switch (bit_width) {
+    default:
+      return return_valobj_sp;
+    case 64: {
+      const RegisterInfo *r1_reg_info = reg_ctx->GetRegisterInfo(
+          eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG2);
+      uint64_t raw_value;
+      raw_value = reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX;
+      raw_value |= ((uint64_t)(reg_ctx->ReadRegisterAsUnsigned(r1_reg_info, 0) &
+                               UINT32_MAX))
+                   << 32;
+      if (is_signed)
+        value.GetScalar() = (int64_t)raw_value;
+      else
+        value.GetScalar() = (uint64_t)raw_value;
+    } break;
+    case 32:
+      if (is_signed)
+        value.GetScalar() = (int32_t)(
+            reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX);
+      else
+        value.GetScalar() = (uint32_t)(
+            reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX);
+      break;
+    case 16:
+      if (is_signed)
+        value.GetScalar() = (int16_t)(
+            reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT16_MAX);
+      else
+        value.GetScalar() = (uint16_t)(
+            reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT16_MAX);
+      break;
+    case 8:
+      if (is_signed)
+        value.GetScalar() = (int8_t)(
+            reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT8_MAX);
+      else
+        value.GetScalar() = (uint8_t)(
+            reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT8_MAX);
+      break;
+    }
+  } else if (compiler_type.IsPointerType()) {
+    uint32_t ptr =
+        thread.GetRegisterContext()->ReadRegisterAsUnsigned(r0_reg_info, 0) &
+        UINT32_MAX;
+    value.GetScalar() = ptr;
+  } else if (compiler_type.IsVectorType(nullptr, nullptr)) {
+    if (IsArmHardFloat(thread) && (byte_size == 8 || byte_size == 16)) {
+      is_vfp_candidate = true;
+      vfp_byte_size = 8;
+      vfp_count = (byte_size == 8 ? 1 : 2);
+    } else if (byte_size <= 16) {
+      DataBufferHeap buffer(16, 0);
+      uint32_t *buffer_ptr = (uint32_t *)buffer.GetBytes();
+
+      for (uint32_t i = 0; 4 * i < byte_size; ++i) {
+        const RegisterInfo *reg_info = reg_ctx->GetRegisterInfo(
+            eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1 + i);
+        buffer_ptr[i] =
+            reg_ctx->ReadRegisterAsUnsigned(reg_info, 0) & UINT32_MAX;
+      }
+      value.SetBytes(buffer.GetBytes(), byte_size);
+    } else {
+      if (!GetReturnValuePassedInMemory(thread, reg_ctx, byte_size, value))
+        return return_valobj_sp;
+    }
+  } else if (compiler_type.IsFloatingPointType(float_count, is_complex)) {
+    if (float_count == 1 && !is_complex) {
+      switch (bit_width) {
+      default:
         return return_valobj_sp;
-    
-    //value.SetContext (Value::eContextTypeClangType, compiler_type.GetOpaqueQualType());
-    value.SetCompilerType (compiler_type);
-            
-    RegisterContext *reg_ctx = thread.GetRegisterContext().get();
-    if (!reg_ctx)
+      case 64: {
+        static_assert(sizeof(double) == sizeof(uint64_t), "");
+
+        if (IsArmHardFloat(thread)) {
+          RegisterValue reg_value;
+          const RegisterInfo *d0_reg_info =
+              reg_ctx->GetRegisterInfoByName("d0", 0);
+          reg_ctx->ReadRegister(d0_reg_info, reg_value);
+          value.GetScalar() = reg_value.GetAsDouble();
+        } else {
+          uint64_t raw_value;
+          const RegisterInfo *r1_reg_info = reg_ctx->GetRegisterInfo(
+              eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG2);
+          raw_value =
+              reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX;
+          raw_value |=
+              ((uint64_t)(reg_ctx->ReadRegisterAsUnsigned(r1_reg_info, 0) &
+                          UINT32_MAX))
+              << 32;
+          value.GetScalar() = *reinterpret_cast<double *>(&raw_value);
+        }
+        break;
+      }
+      case 16: // Half precision returned after a conversion to single precision
+      case 32: {
+        static_assert(sizeof(float) == sizeof(uint32_t), "");
+
+        if (IsArmHardFloat(thread)) {
+          RegisterValue reg_value;
+          const RegisterInfo *s0_reg_info =
+              reg_ctx->GetRegisterInfoByName("s0", 0);
+          reg_ctx->ReadRegister(s0_reg_info, reg_value);
+          value.GetScalar() = reg_value.GetAsFloat();
+        } else {
+          uint32_t raw_value;
+          raw_value =
+              reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX;
+          value.GetScalar() = *reinterpret_cast<float *>(&raw_value);
+        }
+        break;
+      }
+      }
+    } else if (is_complex && float_count == 2) {
+      if (IsArmHardFloat(thread)) {
+        is_vfp_candidate = true;
+        vfp_byte_size = byte_size / 2;
+        vfp_count = 2;
+      } else if (!GetReturnValuePassedInMemory(thread, reg_ctx, bit_width / 8,
+                                               value))
         return return_valobj_sp;
-        
-    bool is_signed;
-    bool is_complex;
-    uint32_t float_count;
-    bool is_vfp_candidate = false;
-    uint8_t vfp_count = 0;
-    uint8_t vfp_byte_size = 0;
-    
-    // Get the pointer to the first stack argument so we have a place to start 
-    // when reading data
-    
-    const RegisterInfo *r0_reg_info = reg_ctx->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1);
-    size_t bit_width = compiler_type.GetBitSize(&thread);
-    size_t byte_size = compiler_type.GetByteSize(&thread);
-
-    if (compiler_type.IsIntegerOrEnumerationType (is_signed))
-    {       
-        switch (bit_width)
-        {
-            default:
-                return return_valobj_sp;
-            case 64:
-            {
-                const RegisterInfo *r1_reg_info = reg_ctx->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG2);
-                uint64_t raw_value;
-                raw_value = reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX;
-                raw_value |= ((uint64_t)(reg_ctx->ReadRegisterAsUnsigned(r1_reg_info, 0) & UINT32_MAX)) << 32;
-                if (is_signed)
-                    value.GetScalar() = (int64_t)raw_value;
-                else
-                    value.GetScalar() = (uint64_t)raw_value;
-            }
-                break;
-            case 32:
-                if (is_signed)
-                    value.GetScalar() = (int32_t)(reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX);
-                else
-                    value.GetScalar() = (uint32_t)(reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX);
-                break;
-            case 16:
-                if (is_signed)
-                    value.GetScalar() = (int16_t)(reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT16_MAX);
-                else
-                    value.GetScalar() = (uint16_t)(reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT16_MAX);
-                break;
-            case 8:
-                if (is_signed)
-                    value.GetScalar() = (int8_t)(reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT8_MAX);
+    } else
+      // not handled yet
+      return return_valobj_sp;
+  } else if (compiler_type.IsAggregateType()) {
+    if (IsArmHardFloat(thread)) {
+      CompilerType base_type;
+      const uint32_t homogeneous_count =
+          compiler_type.IsHomogeneousAggregate(&base_type);
+
+      if (homogeneous_count > 0 && homogeneous_count <= 4) {
+        if (base_type.IsVectorType(nullptr, nullptr)) {
+          uint64_t base_byte_size = base_type.GetByteSize(nullptr);
+          if (base_byte_size == 8 || base_byte_size == 16) {
+            is_vfp_candidate = true;
+            vfp_byte_size = 8;
+            vfp_count =
+                (base_type.GetByteSize(nullptr) == 8 ? homogeneous_count
+                                                     : homogeneous_count * 2);
+          }
+        } else if (base_type.IsFloatingPointType(float_count, is_complex)) {
+          if (float_count == 1 && !is_complex) {
+            is_vfp_candidate = true;
+            vfp_byte_size = base_type.GetByteSize(nullptr);
+            vfp_count = homogeneous_count;
+          }
+        }
+      } else if (homogeneous_count == 0) {
+        const uint32_t num_children = compiler_type.GetNumFields();
+
+        if (num_children > 0 && num_children <= 2) {
+          uint32_t index = 0;
+          for (index = 0; index < num_children; index++) {
+            std::string name;
+            base_type =
+                compiler_type.GetFieldAtIndex(index, name, NULL, NULL, NULL);
+
+            if (base_type.IsFloatingPointType(float_count, is_complex)) {
+              if (float_count == 2 && is_complex) {
+                if (index != 0 &&
+                    vfp_byte_size != base_type.GetByteSize(nullptr))
+                  break;
                 else
-                    value.GetScalar() = (uint8_t)(reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT8_MAX);
+                  vfp_byte_size = base_type.GetByteSize(nullptr);
+              } else
                 break;
-        }
-    }
-    else if (compiler_type.IsPointerType ())
-    {
-        uint32_t ptr = thread.GetRegisterContext()->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX;
-        value.GetScalar() = ptr;
-    }
-    else if (compiler_type.IsVectorType(nullptr, nullptr))
-    {
-        if (IsArmHardFloat(thread) && (byte_size == 8 || byte_size == 16))
-        {
+            } else
+              break;
+          }
+
+          if (index == num_children) {
             is_vfp_candidate = true;
-            vfp_byte_size = 8;
-            vfp_count = (byte_size == 8?1:2);
-        }
-        else if (byte_size <= 16)
-        {
-            DataBufferHeap buffer(16, 0);
-            uint32_t* buffer_ptr = (uint32_t*)buffer.GetBytes();
-            
-            for (uint32_t i = 0; 4*i < byte_size; ++i)
-            {
-                const RegisterInfo *reg_info = reg_ctx->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1 + i);
-                buffer_ptr[i] = reg_ctx->ReadRegisterAsUnsigned(reg_info, 0) & UINT32_MAX;
-            }
-            value.SetBytes(buffer.GetBytes(), byte_size);
-        }
-        else
-        {
-            if (!GetReturnValuePassedInMemory(thread, reg_ctx, byte_size, value))
-                return return_valobj_sp;
+            vfp_byte_size = (vfp_byte_size >> 1);
+            vfp_count = (num_children << 1);
+          }
         }
+      }
     }
-    else if (compiler_type.IsFloatingPointType(float_count, is_complex))
-    {
-        if (float_count == 1 && !is_complex)
-        {
-            switch (bit_width)
-            {
-                default:
-                    return return_valobj_sp;
-                case 64:
-                {
-                    static_assert(sizeof(double) == sizeof(uint64_t), "");
-
-                    if (IsArmHardFloat(thread))
-                    {
-                        RegisterValue reg_value;
-                        const RegisterInfo *d0_reg_info = reg_ctx->GetRegisterInfoByName("d0", 0);
-                        reg_ctx->ReadRegister(d0_reg_info, reg_value);
-                        value.GetScalar() = reg_value.GetAsDouble();
-                    }
-                    else
-                    {
-                        uint64_t raw_value;
-                        const RegisterInfo *r1_reg_info = reg_ctx->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG2);
-                        raw_value = reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX;
-                        raw_value |= ((uint64_t)(reg_ctx->ReadRegisterAsUnsigned(r1_reg_info, 0) & UINT32_MAX)) << 32;
-                        value.GetScalar() = *reinterpret_cast<double*>(&raw_value);
-                    }
-                    break;
-                }
-                case 16: // Half precision returned after a conversion to single precision
-                case 32:
-                {
-                    static_assert(sizeof(float) == sizeof(uint32_t), "");
-
-                    if (IsArmHardFloat(thread))
-                    {
-                        RegisterValue reg_value;
-                        const RegisterInfo *s0_reg_info = reg_ctx->GetRegisterInfoByName("s0", 0);
-                        reg_ctx->ReadRegister(s0_reg_info, reg_value);
-                        value.GetScalar() = reg_value.GetAsFloat();
-                    }
-                    else
-                    {
-                        uint32_t raw_value;
-                        raw_value = reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX;
-                        value.GetScalar() = *reinterpret_cast<float*>(&raw_value);
-                    }
-                    break;
-                }
-            }
-        }
-        else if (is_complex && float_count == 2)
-        {
-            if (IsArmHardFloat(thread))
-            {
-                is_vfp_candidate = true;
-                vfp_byte_size = byte_size / 2;
-                vfp_count = 2;
-            }
-            else if (!GetReturnValuePassedInMemory(thread, reg_ctx, bit_width / 8, value))
-                return return_valobj_sp;
-        }
-        else
-            // not handled yet
-            return return_valobj_sp;
-    }
-    else if (compiler_type.IsAggregateType())
-    {
-        if (IsArmHardFloat(thread))
-        {
-            CompilerType base_type;
-            const uint32_t homogeneous_count = compiler_type.IsHomogeneousAggregate (&base_type);
-
-            if (homogeneous_count > 0 && homogeneous_count <= 4)
-            {
-                if (base_type.IsVectorType(nullptr, nullptr))
-                {
-                    uint64_t base_byte_size = base_type.GetByteSize(nullptr);
-                    if (base_byte_size == 8 || base_byte_size == 16)
-                    {
-                        is_vfp_candidate = true;
-                        vfp_byte_size = 8;
-                        vfp_count = (base_type.GetByteSize(nullptr) == 8 ? homogeneous_count : homogeneous_count * 2);
-                    }
-                }
-                else if (base_type.IsFloatingPointType(float_count, is_complex))
-                {
-                    if (float_count == 1 && !is_complex)
-                    {
-                        is_vfp_candidate = true;
-                        vfp_byte_size = base_type.GetByteSize(nullptr);
-                        vfp_count = homogeneous_count;
-                    }
-                }
-            }
-            else if (homogeneous_count == 0)
-            {
-                const uint32_t num_children = compiler_type.GetNumFields ();
-
-                if (num_children > 0 && num_children <=2)
-                {
-                    uint32_t index = 0;
-                    for (index = 0; index < num_children; index++)
-                    {
-                        std::string name;
-                        base_type = compiler_type.GetFieldAtIndex (index, name, NULL, NULL, NULL);
-
-                        if (base_type.IsFloatingPointType(float_count, is_complex))
-                        {
-                            if (float_count == 2 && is_complex)
-                            {
-                                if (index != 0 && vfp_byte_size != base_type.GetByteSize(nullptr))
-                                    break;
-                                else
-                                    vfp_byte_size = base_type.GetByteSize(nullptr);
-                            }
-                            else
-                                break;
-                        }
-                        else
-                            break;
-                    }
-
-                    if (index == num_children)
-                    {
-                        is_vfp_candidate = true;
-                        vfp_byte_size = (vfp_byte_size >> 1);
-                        vfp_count = (num_children << 1);
-                    }
-                }
-            }
-        }
 
-        if (byte_size <= 4)
-        {
-            RegisterValue r0_reg_value;
-            uint32_t raw_value = reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX;
-            value.SetBytes(&raw_value, byte_size);
-        }
-        else if (!is_vfp_candidate)
-        {
-            if (!GetReturnValuePassedInMemory(thread, reg_ctx, byte_size, value))
-                return return_valobj_sp;
-        }
-    }
-    else
-    {
-        // not handled yet
+    if (byte_size <= 4) {
+      RegisterValue r0_reg_value;
+      uint32_t raw_value =
+          reg_ctx->ReadRegisterAsUnsigned(r0_reg_info, 0) & UINT32_MAX;
+      value.SetBytes(&raw_value, byte_size);
+    } else if (!is_vfp_candidate) {
+      if (!GetReturnValuePassedInMemory(thread, reg_ctx, byte_size, value))
         return return_valobj_sp;
     }
-    
-    if (is_vfp_candidate)
-    {
-        ProcessSP process_sp (thread.GetProcess());
-        ByteOrder byte_order = process_sp->GetByteOrder();
-
-        DataBufferSP data_sp (new DataBufferHeap(byte_size, 0));
-        uint32_t data_offset = 0;
-
-        for (uint32_t reg_index = 0; reg_index < vfp_count; reg_index++)
-        {
-            uint32_t regnum = 0;
-
-            if (vfp_byte_size == 4)
-                regnum = dwarf_s0 + reg_index;
-            else if (vfp_byte_size == 8)
-                regnum = dwarf_d0 + reg_index;
-            else
-                break;
+  } else {
+    // not handled yet
+    return return_valobj_sp;
+  }
 
-            const RegisterInfo *reg_info = reg_ctx->GetRegisterInfo (eRegisterKindDWARF, regnum);
-            if (reg_info == NULL)
-                break;
+  if (is_vfp_candidate) {
+    ProcessSP process_sp(thread.GetProcess());
+    ByteOrder byte_order = process_sp->GetByteOrder();
+
+    DataBufferSP data_sp(new DataBufferHeap(byte_size, 0));
+    uint32_t data_offset = 0;
+
+    for (uint32_t reg_index = 0; reg_index < vfp_count; reg_index++) {
+      uint32_t regnum = 0;
+
+      if (vfp_byte_size == 4)
+        regnum = dwarf_s0 + reg_index;
+      else if (vfp_byte_size == 8)
+        regnum = dwarf_d0 + reg_index;
+      else
+        break;
+
+      const RegisterInfo *reg_info =
+          reg_ctx->GetRegisterInfo(eRegisterKindDWARF, regnum);
+      if (reg_info == NULL)
+        break;
+
+      RegisterValue reg_value;
+      if (!reg_ctx->ReadRegister(reg_info, reg_value))
+        break;
+
+      // Make sure we have enough room in "data_sp"
+      if ((data_offset + vfp_byte_size) <= data_sp->GetByteSize()) {
+        Error error;
+        const size_t bytes_copied = reg_value.GetAsMemoryData(
+            reg_info, data_sp->GetBytes() + data_offset, vfp_byte_size,
+            byte_order, error);
+        if (bytes_copied != vfp_byte_size)
+          break;
 
-            RegisterValue reg_value;
-            if (!reg_ctx->ReadRegister(reg_info, reg_value))
-                break;
+        data_offset += bytes_copied;
+      }
+    }
 
-            // Make sure we have enough room in "data_sp"
-            if ((data_offset + vfp_byte_size) <= data_sp->GetByteSize())
-            {
-                Error error;
-                const size_t bytes_copied = reg_value.GetAsMemoryData (reg_info,
-                                                                       data_sp->GetBytes() + data_offset,
-                                                                       vfp_byte_size,
-                                                                       byte_order,
-                                                                       error);
-                if (bytes_copied != vfp_byte_size)
-                    break;
+    if (data_offset == byte_size) {
+      DataExtractor data;
+      data.SetByteOrder(byte_order);
+      data.SetAddressByteSize(process_sp->GetAddressByteSize());
+      data.SetData(data_sp);
+
+      return ValueObjectConstResult::Create(&thread, compiler_type,
+                                            ConstString(""), data);
+    } else { // Some error occurred while getting values from registers
+      return return_valobj_sp;
+    }
+  }
 
-                data_offset += bytes_copied;
-            }
-        }
+  // If we get here, we have a valid Value, so make our ValueObject out of it:
 
-        if (data_offset == byte_size)
-        {
-            DataExtractor data;
-            data.SetByteOrder(byte_order);
-            data.SetAddressByteSize(process_sp->GetAddressByteSize());
-            data.SetData(data_sp);
+  return_valobj_sp = ValueObjectConstResult::Create(
+      thread.GetStackFrameAtIndex(0).get(), value, ConstString(""));
+  return return_valobj_sp;
+}
 
-            return ValueObjectConstResult::Create (&thread, compiler_type, ConstString(""), data);
-        }
-        else
-        {   // Some error occurred while getting values from registers
-            return return_valobj_sp;
-        }
-    }
+Error ABISysV_arm::SetReturnValueObject(lldb::StackFrameSP &frame_sp,
+                                        lldb::ValueObjectSP &new_value_sp) {
+  Error error;
+  if (!new_value_sp) {
+    error.SetErrorString("Empty value object for return value.");
+    return error;
+  }
 
-    // If we get here, we have a valid Value, so make our ValueObject out of it:
-    
-    return_valobj_sp = ValueObjectConstResult::Create(thread.GetStackFrameAtIndex(0).get(),
-                                                      value,
-                                                      ConstString(""));
-    return return_valobj_sp;
-}
+  CompilerType compiler_type = new_value_sp->GetCompilerType();
+  if (!compiler_type) {
+    error.SetErrorString("Null clang type for return value.");
+    return error;
+  }
 
-Error
-ABISysV_arm::SetReturnValueObject(lldb::StackFrameSP &frame_sp, lldb::ValueObjectSP &new_value_sp)
-{
-    Error error;
-    if (!new_value_sp)
-    {
-        error.SetErrorString("Empty value object for return value.");
-        return error;
-    }
-    
-    CompilerType compiler_type = new_value_sp->GetCompilerType();
-    if (!compiler_type)
-    {
-        error.SetErrorString ("Null clang type for return value.");
-        return error;
-    }
-    
-    Thread *thread = frame_sp->GetThread().get();
-    
-    bool is_signed;
-    uint32_t count;
-    bool is_complex;
-    
-    RegisterContext *reg_ctx = thread->GetRegisterContext().get();
-
-    bool set_it_simple = false;
-    if (compiler_type.IsIntegerOrEnumerationType (is_signed) || compiler_type.IsPointerType())
-    {
-        DataExtractor data;
-        Error data_error;
-        size_t num_bytes = new_value_sp->GetData(data, data_error);
-        if (data_error.Fail())
-        {
-            error.SetErrorStringWithFormat("Couldn't convert return value to raw data: %s", data_error.AsCString());
-            return error;
-        }
-        lldb::offset_t offset = 0;
-        if (num_bytes <= 8)
-        {
-            const RegisterInfo *r0_info = reg_ctx->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1);
-            if (num_bytes <= 4)
-            {
-                uint32_t raw_value = data.GetMaxU32(&offset, num_bytes);
-        
-                if (reg_ctx->WriteRegisterFromUnsigned (r0_info, raw_value))
-                    set_it_simple = true;
-            }
-            else
-            {
-                uint32_t raw_value = data.GetMaxU32(&offset, 4);
-        
-                if (reg_ctx->WriteRegisterFromUnsigned (r0_info, raw_value))
-                {
-                    const RegisterInfo *r1_info = reg_ctx->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG2);
-                    uint32_t raw_value = data.GetMaxU32(&offset, num_bytes - offset);
-                
-                    if (reg_ctx->WriteRegisterFromUnsigned (r1_info, raw_value))
-                        set_it_simple = true;
-                }
-            }
-        }
-        else
-        {
-            error.SetErrorString("We don't support returning longer than 64 bit integer values at present.");
-        }
+  Thread *thread = frame_sp->GetThread().get();
+
+  bool is_signed;
+  uint32_t count;
+  bool is_complex;
+
+  RegisterContext *reg_ctx = thread->GetRegisterContext().get();
+
+  bool set_it_simple = false;
+  if (compiler_type.IsIntegerOrEnumerationType(is_signed) ||
+      compiler_type.IsPointerType()) {
+    DataExtractor data;
+    Error data_error;
+    size_t num_bytes = new_value_sp->GetData(data, data_error);
+    if (data_error.Fail()) {
+      error.SetErrorStringWithFormat(
+          "Couldn't convert return value to raw data: %s",
+          data_error.AsCString());
+      return error;
     }
-    else if (compiler_type.IsFloatingPointType (count, is_complex))
-    {
-        if (is_complex)
-            error.SetErrorString ("We don't support returning complex values at present");
-        else
-            error.SetErrorString ("We don't support returning float values at present");
+    lldb::offset_t offset = 0;
+    if (num_bytes <= 8) {
+      const RegisterInfo *r0_info = reg_ctx->GetRegisterInfo(
+          eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1);
+      if (num_bytes <= 4) {
+        uint32_t raw_value = data.GetMaxU32(&offset, num_bytes);
+
+        if (reg_ctx->WriteRegisterFromUnsigned(r0_info, raw_value))
+          set_it_simple = true;
+      } else {
+        uint32_t raw_value = data.GetMaxU32(&offset, 4);
+
+        if (reg_ctx->WriteRegisterFromUnsigned(r0_info, raw_value)) {
+          const RegisterInfo *r1_info = reg_ctx->GetRegisterInfo(
+              eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG2);
+          uint32_t raw_value = data.GetMaxU32(&offset, num_bytes - offset);
+
+          if (reg_ctx->WriteRegisterFromUnsigned(r1_info, raw_value))
+            set_it_simple = true;
+        }
+      }
+    } else {
+      error.SetErrorString("We don't support returning longer than 64 bit "
+                           "integer values at present.");
     }
-    
-    if (!set_it_simple)
-        error.SetErrorString ("We only support setting simple integer return types at present.");
-    
-    return error;
+  } else if (compiler_type.IsFloatingPointType(count, is_complex)) {
+    if (is_complex)
+      error.SetErrorString(
+          "We don't support returning complex values at present");
+    else
+      error.SetErrorString(
+          "We don't support returning float values at present");
+  }
+
+  if (!set_it_simple)
+    error.SetErrorString(
+        "We only support setting simple integer return types at present.");
+
+  return error;
 }
 
-bool
-ABISysV_arm::CreateFunctionEntryUnwindPlan (UnwindPlan &unwind_plan)
-{
-    unwind_plan.Clear();
-    unwind_plan.SetRegisterKind (eRegisterKindDWARF);
-
-    uint32_t lr_reg_num = dwarf_lr;
-    uint32_t sp_reg_num = dwarf_sp;
-    uint32_t pc_reg_num = dwarf_pc;
-    
-    UnwindPlan::RowSP row(new UnwindPlan::Row);
-    
-    // Our Call Frame Address is the stack pointer value
-    row->GetCFAValue().SetIsRegisterPlusOffset (sp_reg_num, 0);
-    
-    // The previous PC is in the LR
-    row->SetRegisterLocationToRegister(pc_reg_num, lr_reg_num, true);
-    unwind_plan.AppendRow (row);
-    
-    // All other registers are the same.
-    
-    unwind_plan.SetSourceName ("arm at-func-entry default");
-    unwind_plan.SetSourcedFromCompiler (eLazyBoolNo);
+bool ABISysV_arm::CreateFunctionEntryUnwindPlan(UnwindPlan &unwind_plan) {
+  unwind_plan.Clear();
+  unwind_plan.SetRegisterKind(eRegisterKindDWARF);
 
-    return true;
+  uint32_t lr_reg_num = dwarf_lr;
+  uint32_t sp_reg_num = dwarf_sp;
+  uint32_t pc_reg_num = dwarf_pc;
+
+  UnwindPlan::RowSP row(new UnwindPlan::Row);
+
+  // Our Call Frame Address is the stack pointer value
+  row->GetCFAValue().SetIsRegisterPlusOffset(sp_reg_num, 0);
+
+  // The previous PC is in the LR
+  row->SetRegisterLocationToRegister(pc_reg_num, lr_reg_num, true);
+  unwind_plan.AppendRow(row);
+
+  // All other registers are the same.
+
+  unwind_plan.SetSourceName("arm at-func-entry default");
+  unwind_plan.SetSourcedFromCompiler(eLazyBoolNo);
+
+  return true;
 }
 
-bool
-ABISysV_arm::CreateDefaultUnwindPlan (UnwindPlan &unwind_plan)
-{
-    unwind_plan.Clear ();
-    unwind_plan.SetRegisterKind (eRegisterKindDWARF);
-
-    //TODO: Handle thumb
-    uint32_t fp_reg_num = dwarf_r11;
-    uint32_t pc_reg_num = dwarf_pc;
-    
-    UnwindPlan::RowSP row(new UnwindPlan::Row);
-    const int32_t ptr_size = 4;
-    
-    row->GetCFAValue().SetIsRegisterPlusOffset (fp_reg_num, 2 * ptr_size);
-    row->SetOffset (0);
-    
-    row->SetRegisterLocationToAtCFAPlusOffset(fp_reg_num, ptr_size * -2, true);
-    row->SetRegisterLocationToAtCFAPlusOffset(pc_reg_num, ptr_size * -1, true);
-    
-    unwind_plan.AppendRow (row);
-    unwind_plan.SetSourceName ("arm default unwind plan");
-    unwind_plan.SetSourcedFromCompiler (eLazyBoolNo);
-    unwind_plan.SetUnwindPlanValidAtAllInstructions (eLazyBoolNo);
+bool ABISysV_arm::CreateDefaultUnwindPlan(UnwindPlan &unwind_plan) {
+  unwind_plan.Clear();
+  unwind_plan.SetRegisterKind(eRegisterKindDWARF);
+
+  // TODO: Handle thumb
+  uint32_t fp_reg_num = dwarf_r11;
+  uint32_t pc_reg_num = dwarf_pc;
+
+  UnwindPlan::RowSP row(new UnwindPlan::Row);
+  const int32_t ptr_size = 4;
 
-    return true;
+  row->GetCFAValue().SetIsRegisterPlusOffset(fp_reg_num, 2 * ptr_size);
+  row->SetOffset(0);
+
+  row->SetRegisterLocationToAtCFAPlusOffset(fp_reg_num, ptr_size * -2, true);
+  row->SetRegisterLocationToAtCFAPlusOffset(pc_reg_num, ptr_size * -1, true);
+
+  unwind_plan.AppendRow(row);
+  unwind_plan.SetSourceName("arm default unwind plan");
+  unwind_plan.SetSourcedFromCompiler(eLazyBoolNo);
+  unwind_plan.SetUnwindPlanValidAtAllInstructions(eLazyBoolNo);
+
+  return true;
 }
 
 // cf. "ARMv6 Function Calling Conventions"
@@ -899,210 +1987,179 @@ ABISysV_arm::CreateDefaultUnwindPlan (Un
 //    d8-d15  preserved       (aka s16-s31, q4-q7)
 //    d16-d31 not preserved   (aka q8-q15)
 
-bool
-ABISysV_arm::RegisterIsVolatile (const RegisterInfo *reg_info)
-{
-    if (reg_info)
-    {
-        // Volatile registers are: r0, r1, r2, r3, r9, r12, r13 (aka sp)
-        const char *name = reg_info->name;
-        if (name[0] == 'r')
-        {
-            switch (name[1])
-            {
-                case '0': return name[2] == '\0'; // r0
-                case '1': 
-                    switch (name[2])
-                    {
-                    case '\0':
-                        return true; // r1
-                    case '2':
-                        return name[3] == '\0'; // r12
-                    default:
-                        break;
-                    }
-                    break;
-
-                case '2': return name[2] == '\0'; // r2
-                case '3': return name[2] == '\0'; // r3
-                default:
-                    break;
-            }
-        }
-        else if (name[0] == 'd')
-        {
-            switch (name[1])
-            {
-                case '0': 
-                    return name[2] == '\0'; // d0 is volatile
-
-                case '1':
-                    switch (name[2])
-                    {
-                    case '\0':
-                        return true; // d1 is volatile
-                    case '6':
-                    case '7':
-                    case '8':
-                    case '9':
-                        return name[3] == '\0'; // d16 - d19 are volatile
-                    default:
-                        break;
-                    }
-                    break;
-
-                case '2':
-                    switch (name[2])
-                    {
-                    case '\0':
-                        return true; // d2 is volatile
-                    case '0':
-                    case '1':
-                    case '2':
-                    case '3':
-                    case '4':
-                    case '5':
-                    case '6':
-                    case '7':
-                    case '8':
-                    case '9':
-                        return name[3] == '\0'; // d20 - d29 are volatile
-                    default:
-                        break;
-                    }
-                    break;
-
-                case '3':
-                    switch (name[2])
-                    {
-                    case '\0':
-                        return true; // d3 is volatile
-                    case '0':
-                    case '1':
-                        return name[3] == '\0'; // d30 - d31 are volatile
-                    default:
-                        break;
-                    }
-                    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':
-                    case '2':
-                    case '3':
-                    case '4':
-                    case '5':
-                        return name[3] == '\0'; // s10 - s15 are volatile
-                    default:
-                        break;
-                    }
-                    break;
-
-                case '2':
-                case '3':
-                case '4':
-                case '5':
-                case '6':
-                case '7':
-                case '8':
-                case '9':
-                    return name[2] == '\0'; // s2 - s9 are volatile
-
-                default:
-                    break;
-            }
-        }
-        else if (name[0] == 'q')
-        {
-            switch (name[1])
-            {
-                case '1':
-                    switch (name[2])
-                    {
-                        case '\0':
-                            return true;  // q1 is volatile
-                        case '0':
-                        case '1':
-                        case '2':
-                        case '3':
-                        case '4':
-                        case '5':
-                            return true; // q10-q15 are volatile
-                        default:
-                            return false;
-                    }
-                    break;
-
-                case '0':
-                case '2': 
-                case '3': 
-                    return name[2] == '\0'; // q0-q3 are volatile
-                case '8':
-                case '9':
-                    return name[2] == '\0'; // q8-q9 are volatile
-                default:
-                    break;
-            }
-        }
-        else if (name[0] == 's' && name[1] == 'p' && name[2] == '\0')
-            return true;
-    }
-    return false;
+bool ABISysV_arm::RegisterIsVolatile(const RegisterInfo *reg_info) {
+  if (reg_info) {
+    // Volatile registers are: r0, r1, r2, r3, r9, r12, r13 (aka sp)
+    const char *name = reg_info->name;
+    if (name[0] == 'r') {
+      switch (name[1]) {
+      case '0':
+        return name[2] == '\0'; // r0
+      case '1':
+        switch (name[2]) {
+        case '\0':
+          return true; // r1
+        case '2':
+          return name[3] == '\0'; // r12
+        default:
+          break;
+        }
+        break;
+
+      case '2':
+        return name[2] == '\0'; // r2
+      case '3':
+        return name[2] == '\0'; // r3
+      default:
+        break;
+      }
+    } else if (name[0] == 'd') {
+      switch (name[1]) {
+      case '0':
+        return name[2] == '\0'; // d0 is volatile
+
+      case '1':
+        switch (name[2]) {
+        case '\0':
+          return true; // d1 is volatile
+        case '6':
+        case '7':
+        case '8':
+        case '9':
+          return name[3] == '\0'; // d16 - d19 are volatile
+        default:
+          break;
+        }
+        break;
+
+      case '2':
+        switch (name[2]) {
+        case '\0':
+          return true; // d2 is volatile
+        case '0':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+        case '6':
+        case '7':
+        case '8':
+        case '9':
+          return name[3] == '\0'; // d20 - d29 are volatile
+        default:
+          break;
+        }
+        break;
+
+      case '3':
+        switch (name[2]) {
+        case '\0':
+          return true; // d3 is volatile
+        case '0':
+        case '1':
+          return name[3] == '\0'; // d30 - d31 are volatile
+        default:
+          break;
+        }
+        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':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+          return name[3] == '\0'; // s10 - s15 are volatile
+        default:
+          break;
+        }
+        break;
+
+      case '2':
+      case '3':
+      case '4':
+      case '5':
+      case '6':
+      case '7':
+      case '8':
+      case '9':
+        return name[2] == '\0'; // s2 - s9 are volatile
+
+      default:
+        break;
+      }
+    } else if (name[0] == 'q') {
+      switch (name[1]) {
+      case '1':
+        switch (name[2]) {
+        case '\0':
+          return true; // q1 is volatile
+        case '0':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+          return true; // q10-q15 are volatile
+        default:
+          return false;
+        }
+        break;
+
+      case '0':
+      case '2':
+      case '3':
+        return name[2] == '\0'; // q0-q3 are volatile
+      case '8':
+      case '9':
+        return name[2] == '\0'; // q8-q9 are volatile
+      default:
+        break;
+      }
+    } else if (name[0] == 's' && name[1] == 'p' && name[2] == '\0')
+      return true;
+  }
+  return false;
 }
 
-void
-ABISysV_arm::Initialize()
-{
-    PluginManager::RegisterPlugin (GetPluginNameStatic(),
-                                   "SysV ABI for arm targets",
-                                   CreateInstance);    
+void ABISysV_arm::Initialize() {
+  PluginManager::RegisterPlugin(GetPluginNameStatic(),
+                                "SysV ABI for arm targets", CreateInstance);
 }
 
-void
-ABISysV_arm::Terminate()
-{
-    PluginManager::UnregisterPlugin (CreateInstance);
+void ABISysV_arm::Terminate() {
+  PluginManager::UnregisterPlugin(CreateInstance);
 }
 
-lldb_private::ConstString
-ABISysV_arm::GetPluginNameStatic()
-{
-    static ConstString g_name("SysV-arm");
-    return g_name;
+lldb_private::ConstString ABISysV_arm::GetPluginNameStatic() {
+  static ConstString g_name("SysV-arm");
+  return g_name;
 }
 
 //------------------------------------------------------------------
 // PluginInterface protocol
 //------------------------------------------------------------------
 
-lldb_private::ConstString
-ABISysV_arm::GetPluginName()
-{
-    return GetPluginNameStatic();
+lldb_private::ConstString ABISysV_arm::GetPluginName() {
+  return GetPluginNameStatic();
 }
 
-uint32_t
-ABISysV_arm::GetPluginVersion()
-{
-    return 1;
-}
+uint32_t ABISysV_arm::GetPluginVersion() { return 1; }

Modified: lldb/trunk/source/Plugins/ABI/SysV-arm/ABISysV_arm.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ABI/SysV-arm/ABISysV_arm.h?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ABI/SysV-arm/ABISysV_arm.h (original)
+++ lldb/trunk/source/Plugins/ABI/SysV-arm/ABISysV_arm.h Tue Sep  6 15:57:50 2016
@@ -14,111 +14,89 @@
 // C++ Includes
 // Other libraries and framework includes
 // Project includes
-#include "lldb/lldb-private.h"
 #include "lldb/Target/ABI.h"
+#include "lldb/lldb-private.h"
 
-class ABISysV_arm : public lldb_private::ABI
-{
+class ABISysV_arm : public lldb_private::ABI {
 public:
-    ~ABISysV_arm() override = default;
+  ~ABISysV_arm() override = default;
+
+  size_t GetRedZoneSize() const override;
+
+  bool PrepareTrivialCall(lldb_private::Thread &thread, lldb::addr_t sp,
+                          lldb::addr_t func_addr, lldb::addr_t returnAddress,
+                          llvm::ArrayRef<lldb::addr_t> args) const override;
+
+  bool GetArgumentValues(lldb_private::Thread &thread,
+                         lldb_private::ValueList &values) const override;
+
+  lldb_private::Error
+  SetReturnValueObject(lldb::StackFrameSP &frame_sp,
+                       lldb::ValueObjectSP &new_value) override;
+
+  bool
+  CreateFunctionEntryUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
+
+  bool CreateDefaultUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
+
+  bool RegisterIsVolatile(const lldb_private::RegisterInfo *reg_info) override;
+
+  bool CallFrameAddressIsValid(lldb::addr_t cfa) override {
+    // Make sure the stack call frame addresses are are 4 byte aligned
+    if (cfa & (4ull - 1ull))
+      return false; // Not 4 byte aligned
+    if (cfa == 0)
+      return false; // Zero is not a valid stack address
+    return true;
+  }
+
+  bool CodeAddressIsValid(lldb::addr_t pc) override {
+    // Just make sure the address is a valid 32 bit address. Bit zero
+    // might be set due to Thumb function calls, so don't enforce 2 byte
+    // alignment
+    return pc <= UINT32_MAX;
+  }
+
+  lldb::addr_t FixCodeAddress(lldb::addr_t pc) override {
+    // ARM uses bit zero to signify a code address is thumb, so we must
+    // strip bit zero in any code addresses.
+    return pc & ~(lldb::addr_t)1;
+  }
+
+  const lldb_private::RegisterInfo *
+  GetRegisterInfoArray(uint32_t &count) override;
+
+  bool IsArmHardFloat(lldb_private::Thread &thread) const;
+
+  //------------------------------------------------------------------
+  // Static Functions
+  //------------------------------------------------------------------
+
+  static void Initialize();
+
+  static void Terminate();
+
+  static lldb::ABISP CreateInstance(const lldb_private::ArchSpec &arch);
+
+  static lldb_private::ConstString GetPluginNameStatic();
+
+  //------------------------------------------------------------------
+  // PluginInterface protocol
+  //------------------------------------------------------------------
+
+  lldb_private::ConstString GetPluginName() override;
 
-    size_t
-    GetRedZoneSize () const override;
+  uint32_t GetPluginVersion() override;
 
-    bool
-    PrepareTrivialCall (lldb_private::Thread &thread, 
-                        lldb::addr_t sp,
-                        lldb::addr_t func_addr,
-                        lldb::addr_t returnAddress, 
-                        llvm::ArrayRef<lldb::addr_t> args) const override;
-
-    bool
-    GetArgumentValues (lldb_private::Thread &thread,
-                       lldb_private::ValueList &values) const override;
-
-    lldb_private::Error
-    SetReturnValueObject(lldb::StackFrameSP &frame_sp, lldb::ValueObjectSP &new_value) override;
-
-    bool
-    CreateFunctionEntryUnwindPlan (lldb_private::UnwindPlan &unwind_plan) override;
-
-    bool
-    CreateDefaultUnwindPlan (lldb_private::UnwindPlan &unwind_plan) override;
-    
-    bool
-    RegisterIsVolatile (const lldb_private::RegisterInfo *reg_info) override;
-
-    bool
-    CallFrameAddressIsValid (lldb::addr_t cfa) override
-    {
-        // Make sure the stack call frame addresses are are 4 byte aligned
-        if (cfa & (4ull - 1ull))
-            return false;   // Not 4 byte aligned
-        if (cfa == 0)
-            return false;   // Zero is not a valid stack address
-        return true;
-    }
-    
-    bool
-    CodeAddressIsValid (lldb::addr_t pc) override
-    {
-        // Just make sure the address is a valid 32 bit address. Bit zero
-        // might be set due to Thumb function calls, so don't enforce 2 byte
-        // alignment
-        return pc <= UINT32_MAX;
-    }
-    
-    lldb::addr_t
-    FixCodeAddress (lldb::addr_t pc) override
-    {
-        // ARM uses bit zero to signify a code address is thumb, so we must
-        // strip bit zero in any code addresses.
-        return pc & ~(lldb::addr_t)1;
-    }
-
-    const lldb_private::RegisterInfo *
-    GetRegisterInfoArray (uint32_t &count) override;
-
-    bool
-    IsArmHardFloat (lldb_private::Thread &thread) const;
-
-    //------------------------------------------------------------------
-    // Static Functions
-    //------------------------------------------------------------------
-
-    static void
-    Initialize();
-    
-    static void
-    Terminate();
-    
-    static lldb::ABISP
-    CreateInstance (const lldb_private::ArchSpec &arch);
-    
-    static lldb_private::ConstString
-    GetPluginNameStatic();
-    
-    //------------------------------------------------------------------
-    // PluginInterface protocol
-    //------------------------------------------------------------------
-
-    lldb_private::ConstString
-    GetPluginName() override;
-    
-    uint32_t
-    GetPluginVersion() override;
-    
 protected:
-    lldb::ValueObjectSP
-    GetReturnValueObjectImpl(lldb_private::Thread &thread,
-                             lldb_private::CompilerType &ast_type) const override;
+  lldb::ValueObjectSP
+  GetReturnValueObjectImpl(lldb_private::Thread &thread,
+                           lldb_private::CompilerType &ast_type) const override;
 
 private:
-    ABISysV_arm() : 
-        lldb_private::ABI() 
-    {
-         // Call CreateInstance instead.
-    }
+  ABISysV_arm() : lldb_private::ABI() {
+    // Call CreateInstance instead.
+  }
 };
 
 #endif // liblldb_ABISysV_arm_h_

Modified: lldb/trunk/source/Plugins/ABI/SysV-arm64/ABISysV_arm64.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ABI/SysV-arm64/ABISysV_arm64.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ABI/SysV-arm64/ABISysV_arm64.cpp (original)
+++ lldb/trunk/source/Plugins/ABI/SysV-arm64/ABISysV_arm64.cpp Tue Sep  6 15:57:50 2016
@@ -38,1052 +38,2389 @@
 using namespace lldb;
 using namespace lldb_private;
 
-static RegisterInfo g_register_infos[] =
-{
-    //  NAME       ALT       SZ OFF ENCODING          FORMAT                   EH_FRAME             DWARF                  GENERIC                     PROCESS PLUGIN          LLDB NATIVE
-    //  ========== =======   == === =============     ===================      ===================  ====================== =========================== ======================= ======================
-    {   "x0",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x0,       LLDB_REGNUM_GENERIC_ARG1,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x1",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x1,       LLDB_REGNUM_GENERIC_ARG2,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x2",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x2,       LLDB_REGNUM_GENERIC_ARG3,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x3",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x3,       LLDB_REGNUM_GENERIC_ARG4,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x4",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x4,       LLDB_REGNUM_GENERIC_ARG5,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x5",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x5,       LLDB_REGNUM_GENERIC_ARG6,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x6",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x6,       LLDB_REGNUM_GENERIC_ARG7,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x7",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x7,       LLDB_REGNUM_GENERIC_ARG8,   LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x8",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x8,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x9",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x9,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x10",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x10,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x11",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x11,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x12",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x12,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x13",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x13,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x14",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x14,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x15",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x15,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x16",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x16,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x17",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x17,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x18",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x18,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x19",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x19,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x20",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x20,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x21",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x21,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x22",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x22,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x23",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x23,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x24",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x24,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x25",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x25,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x26",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x26,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x27",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x27,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "x28",     nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x28,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "fp",      "x29",     8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x29,      LLDB_REGNUM_GENERIC_FP,     LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "lr",      "x30",     8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x30,      LLDB_REGNUM_GENERIC_RA,     LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "sp",      "x31",     8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::x31,      LLDB_REGNUM_GENERIC_SP,     LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "pc",      nullptr,   8, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::pc,       LLDB_REGNUM_GENERIC_PC,     LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "cpsr",    "psr",     4, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, arm64_dwarf::cpsr,     LLDB_REGNUM_GENERIC_FLAGS,  LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-
-    {   "v0",      nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v0,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v1",      nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v1,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v2",      nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v2,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v3",      nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v3,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v4",      nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v4,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v5",      nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v5,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v6",      nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v6,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v7",      nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v7,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v8",      nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v8,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v9",      nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v9,       LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v10",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v10,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v11",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v11,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v12",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v12,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v13",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v13,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v14",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v14,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v15",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v15,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v16",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v16,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v17",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v17,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v18",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v18,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v19",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v19,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v20",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v20,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v21",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v21,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v22",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v22,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v23",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v23,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v24",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v24,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v25",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v25,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v26",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v26,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v27",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v27,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v28",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v28,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v29",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v29,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v30",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v30,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "v31",     nullptr,  16, 0, eEncodingVector , eFormatVectorOfUInt8,  { LLDB_INVALID_REGNUM, arm64_dwarf::v31,      LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-
-    {   "fpsr",    nullptr,   4, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "fpcr",    nullptr,   4, 0, eEncodingUint   , eFormatHex           , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,   LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-
-    {   "s0",      nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s1",      nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s2",      nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s3",      nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s4",      nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s5",      nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s6",      nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s7",      nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s8",      nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s9",      nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s10",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s11",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s12",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s13",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s14",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s15",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s16",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s17",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s18",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s19",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s20",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s21",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s22",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s23",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s24",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s25",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s26",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s27",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s28",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s29",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s30",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "s31",     nullptr,  4, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-
-    {   "d0",      nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d1",      nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d2",      nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d3",      nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d4",      nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d5",      nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d6",      nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d7",      nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d8",      nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d9",      nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d10",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d11",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d12",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d13",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d14",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d15",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d16",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d17",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d18",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d19",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d20",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d21",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d22",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d23",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d24",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d25",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d26",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d27",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d28",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d29",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d30",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 },
-    {   "d31",     nullptr,  8, 0, eEncodingIEEE754 , eFormatFloat         , { LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM,        LLDB_INVALID_REGNUM,    LLDB_INVALID_REGNUM }, nullptr, nullptr, nullptr, 0 }
-};
+static RegisterInfo g_register_infos[] = {
+    //  NAME       ALT       SZ OFF ENCODING          FORMAT
+    //  EH_FRAME             DWARF                  GENERIC
+    //  PROCESS PLUGIN          LLDB NATIVE
+    //  ========== =======   == === =============     ===================
+    //  ===================  ====================== ===========================
+    //  ======================= ======================
+    {"x0",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x0, LLDB_REGNUM_GENERIC_ARG1,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x1",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x1, LLDB_REGNUM_GENERIC_ARG2,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x2",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x2, LLDB_REGNUM_GENERIC_ARG3,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x3",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x3, LLDB_REGNUM_GENERIC_ARG4,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x4",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x4, LLDB_REGNUM_GENERIC_ARG5,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x5",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x5, LLDB_REGNUM_GENERIC_ARG6,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x6",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x6, LLDB_REGNUM_GENERIC_ARG7,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x7",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x7, LLDB_REGNUM_GENERIC_ARG8,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x8",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x8, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x9",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x9, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x10",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x10, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x11",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x11, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x12",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x12, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x13",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x13, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x14",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x14, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x15",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x15, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x16",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x16, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x17",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x17, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x18",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x18, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x19",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x19, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x20",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x20, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x21",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x21, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x22",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x22, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x23",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x23, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x24",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x24, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x25",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x25, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x26",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x26, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x27",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x27, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"x28",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x28, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"fp",
+     "x29",
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x29, LLDB_REGNUM_GENERIC_FP,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"lr",
+     "x30",
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x30, LLDB_REGNUM_GENERIC_RA,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"sp",
+     "x31",
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::x31, LLDB_REGNUM_GENERIC_SP,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"pc",
+     nullptr,
+     8,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::pc, LLDB_REGNUM_GENERIC_PC,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"cpsr",
+     "psr",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::cpsr, LLDB_REGNUM_GENERIC_FLAGS,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+
+    {"v0",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v0, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v1",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v1, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v2",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v2, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v3",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v3, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v4",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v4, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v5",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v5, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v6",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v6, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v7",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v7, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v8",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v8, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v9",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v9, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v10",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v10, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v11",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v11, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v12",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v12, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v13",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v13, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v14",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v14, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v15",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v15, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v16",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v16, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v17",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v17, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v18",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v18, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v19",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v19, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v20",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v20, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v21",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v21, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v22",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v22, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v23",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v23, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v24",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v24, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v25",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v25, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v26",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v26, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v27",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v27, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v28",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v28, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v29",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v29, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v30",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v30, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"v31",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, arm64_dwarf::v31, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+
+    {"fpsr",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"fpcr",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+
+    {"s0",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s1",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s2",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s3",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s4",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s5",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s6",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s7",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s8",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s9",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s10",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s11",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s12",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s13",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s14",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s15",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s16",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s17",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s18",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s19",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s20",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s21",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s22",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s23",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s24",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s25",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s26",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s27",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s28",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s29",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s30",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"s31",
+     nullptr,
+     4,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+
+    {"d0",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d1",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d2",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d3",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d4",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d5",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d6",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d7",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d8",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d9",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d10",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d11",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d12",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d13",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d14",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d15",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d16",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d17",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d18",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d19",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d20",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d21",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d22",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d23",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d24",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d25",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d26",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d27",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d28",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d29",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d30",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"d31",
+     nullptr,
+     8,
+     0,
+     eEncodingIEEE754,
+     eFormatFloat,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0}};
 
-static const uint32_t k_num_register_infos = llvm::array_lengthof(g_register_infos);
+static const uint32_t k_num_register_infos =
+    llvm::array_lengthof(g_register_infos);
 static bool g_register_info_names_constified = false;
 
 const lldb_private::RegisterInfo *
-ABISysV_arm64::GetRegisterInfoArray (uint32_t &count)
-{
-    // Make the C-string names and alt_names for the register infos into const 
-    // C-string values by having the ConstString unique the names in the global
-    // constant C-string pool.
-    if (!g_register_info_names_constified)
-    {
-        g_register_info_names_constified = true;
-        for (uint32_t i=0; i<k_num_register_infos; ++i)
-        {
-            if (g_register_infos[i].name)
-                g_register_infos[i].name = ConstString(g_register_infos[i].name).GetCString();
-            if (g_register_infos[i].alt_name)
-                g_register_infos[i].alt_name = ConstString(g_register_infos[i].alt_name).GetCString();
-        }
+ABISysV_arm64::GetRegisterInfoArray(uint32_t &count) {
+  // Make the C-string names and alt_names for the register infos into const
+  // C-string values by having the ConstString unique the names in the global
+  // constant C-string pool.
+  if (!g_register_info_names_constified) {
+    g_register_info_names_constified = true;
+    for (uint32_t i = 0; i < k_num_register_infos; ++i) {
+      if (g_register_infos[i].name)
+        g_register_infos[i].name =
+            ConstString(g_register_infos[i].name).GetCString();
+      if (g_register_infos[i].alt_name)
+        g_register_infos[i].alt_name =
+            ConstString(g_register_infos[i].alt_name).GetCString();
     }
-    count = k_num_register_infos;
-    return g_register_infos;
+  }
+  count = k_num_register_infos;
+  return g_register_infos;
 }
 
-bool
-ABISysV_arm64::GetPointerReturnRegister (const char *&name)
-{
-    name = "x0";
-    return true;
+bool ABISysV_arm64::GetPointerReturnRegister(const char *&name) {
+  name = "x0";
+  return true;
 }
 
-size_t
-ABISysV_arm64::GetRedZoneSize () const
-{
-    return 128;
-}
+size_t ABISysV_arm64::GetRedZoneSize() const { return 128; }
 
 //------------------------------------------------------------------
 // Static Functions
 //------------------------------------------------------------------
 
 ABISP
-ABISysV_arm64::CreateInstance (const ArchSpec &arch)
-{
-    static ABISP g_abi_sp;
-    const llvm::Triple::ArchType arch_type = arch.GetTriple().getArch();
-    const llvm::Triple::VendorType vendor_type = arch.GetTriple().getVendor();
-
-    if (vendor_type != llvm::Triple::Apple)
-    {
-	    if (arch_type == llvm::Triple::aarch64)
-        {
-            if (!g_abi_sp)
-                g_abi_sp.reset (new ABISysV_arm64);
-            return g_abi_sp;
-        }
+ABISysV_arm64::CreateInstance(const ArchSpec &arch) {
+  static ABISP g_abi_sp;
+  const llvm::Triple::ArchType arch_type = arch.GetTriple().getArch();
+  const llvm::Triple::VendorType vendor_type = arch.GetTriple().getVendor();
+
+  if (vendor_type != llvm::Triple::Apple) {
+    if (arch_type == llvm::Triple::aarch64) {
+      if (!g_abi_sp)
+        g_abi_sp.reset(new ABISysV_arm64);
+      return g_abi_sp;
     }
+  }
 
-    return ABISP();
+  return ABISP();
 }
 
-bool
-ABISysV_arm64::PrepareTrivialCall (Thread &thread,
-                                   addr_t sp, 
-                                   addr_t func_addr, 
-                                   addr_t return_addr, 
-                                   llvm::ArrayRef<addr_t> args) const
-{
-    RegisterContext *reg_ctx = thread.GetRegisterContext().get();
-    if (!reg_ctx)
-        return false;
-
-    Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
-
-    if (log)
-    {
-        StreamString s;
-        s.Printf("ABISysV_x86_64::PrepareTrivialCall (tid = 0x%" PRIx64 ", sp = 0x%" PRIx64 ", func_addr = 0x%" PRIx64 ", return_addr = 0x%" PRIx64,
-                 thread.GetID(),
-                 (uint64_t)sp,
-                 (uint64_t)func_addr,
-                 (uint64_t)return_addr);
-
-        for (size_t i = 0; i < args.size(); ++i)
-            s.Printf (", arg%d = 0x%" PRIx64, static_cast<int>(i + 1), args[i]);
-        s.PutCString (")");
-        log->PutCString(s.GetString().c_str());
-    }
-
-    // x0 - x7 contain first 8 simple args
-    if (args.size() > 8)
-        return false;
+bool ABISysV_arm64::PrepareTrivialCall(Thread &thread, addr_t sp,
+                                       addr_t func_addr, addr_t return_addr,
+                                       llvm::ArrayRef<addr_t> args) const {
+  RegisterContext *reg_ctx = thread.GetRegisterContext().get();
+  if (!reg_ctx)
+    return false;
+
+  Log *log(lldb_private::GetLogIfAllCategoriesSet(LIBLLDB_LOG_EXPRESSIONS));
+
+  if (log) {
+    StreamString s;
+    s.Printf("ABISysV_x86_64::PrepareTrivialCall (tid = 0x%" PRIx64
+             ", sp = 0x%" PRIx64 ", func_addr = 0x%" PRIx64
+             ", return_addr = 0x%" PRIx64,
+             thread.GetID(), (uint64_t)sp, (uint64_t)func_addr,
+             (uint64_t)return_addr);
 
     for (size_t i = 0; i < args.size(); ++i)
-    {
-        const RegisterInfo *reg_info = reg_ctx->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1 + i);
-        if (log)
-            log->Printf("About to write arg%d (0x%" PRIx64 ") into %s",
-                        static_cast<int>(i + 1), args[i], reg_info->name);
-        if (!reg_ctx->WriteRegisterFromUnsigned(reg_info, args[i]))
-            return false;
-    }
-
-    // Set "lr" to the return address
-    if (!reg_ctx->WriteRegisterFromUnsigned (reg_ctx->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_RA), return_addr))
-        return false;
-
-    // Set "sp" to the requested value
-    if (!reg_ctx->WriteRegisterFromUnsigned (reg_ctx->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_SP), sp))
-        return false;
-
-    // Set "pc" to the address requested
-    if (!reg_ctx->WriteRegisterFromUnsigned (reg_ctx->GetRegisterInfo(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC), func_addr))
-        return false;
+      s.Printf(", arg%d = 0x%" PRIx64, static_cast<int>(i + 1), args[i]);
+    s.PutCString(")");
+    log->PutCString(s.GetString().c_str());
+  }
+
+  // x0 - x7 contain first 8 simple args
+  if (args.size() > 8)
+    return false;
+
+  for (size_t i = 0; i < args.size(); ++i) {
+    const RegisterInfo *reg_info = reg_ctx->GetRegisterInfo(
+        eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1 + i);
+    if (log)
+      log->Printf("About to write arg%d (0x%" PRIx64 ") into %s",
+                  static_cast<int>(i + 1), args[i], reg_info->name);
+    if (!reg_ctx->WriteRegisterFromUnsigned(reg_info, args[i]))
+      return false;
+  }
+
+  // Set "lr" to the return address
+  if (!reg_ctx->WriteRegisterFromUnsigned(
+          reg_ctx->GetRegisterInfo(eRegisterKindGeneric,
+                                   LLDB_REGNUM_GENERIC_RA),
+          return_addr))
+    return false;
+
+  // Set "sp" to the requested value
+  if (!reg_ctx->WriteRegisterFromUnsigned(
+          reg_ctx->GetRegisterInfo(eRegisterKindGeneric,
+                                   LLDB_REGNUM_GENERIC_SP),
+          sp))
+    return false;
+
+  // Set "pc" to the address requested
+  if (!reg_ctx->WriteRegisterFromUnsigned(
+          reg_ctx->GetRegisterInfo(eRegisterKindGeneric,
+                                   LLDB_REGNUM_GENERIC_PC),
+          func_addr))
+    return false;
 
-    return true;
+  return true;
 }
 
-//TODO: We dont support fp/SIMD arguments in v0-v7
-bool
-ABISysV_arm64::GetArgumentValues (Thread &thread, ValueList &values) const
-{
-    uint32_t num_values = values.GetSize();
-    
-    ExecutionContext exe_ctx (thread.shared_from_this());
-    
-    // Extract the register context so we can read arguments from registers
-    
-    RegisterContext *reg_ctx = thread.GetRegisterContext().get();
-    
-    if (!reg_ctx)
+// TODO: We dont support fp/SIMD arguments in v0-v7
+bool ABISysV_arm64::GetArgumentValues(Thread &thread, ValueList &values) const {
+  uint32_t num_values = values.GetSize();
+
+  ExecutionContext exe_ctx(thread.shared_from_this());
+
+  // Extract the register context so we can read arguments from registers
+
+  RegisterContext *reg_ctx = thread.GetRegisterContext().get();
+
+  if (!reg_ctx)
+    return false;
+
+  addr_t sp = 0;
+
+  for (uint32_t value_idx = 0; value_idx < num_values; ++value_idx) {
+    // We currently only support extracting values with Clang QualTypes.
+    // Do we care about others?
+    Value *value = values.GetValueAtIndex(value_idx);
+
+    if (!value)
+      return false;
+
+    CompilerType value_type = value->GetCompilerType();
+    if (value_type) {
+      bool is_signed = false;
+      size_t bit_width = 0;
+      if (value_type.IsIntegerOrEnumerationType(is_signed)) {
+        bit_width = value_type.GetBitSize(&thread);
+      } else if (value_type.IsPointerOrReferenceType()) {
+        bit_width = value_type.GetBitSize(&thread);
+      } else {
+        // We only handle integer, pointer and reference types currently...
         return false;
+      }
 
-    addr_t sp = 0;
+      if (bit_width <= (exe_ctx.GetProcessRef().GetAddressByteSize() * 8)) {
+        if (value_idx < 8) {
+          // Arguments 1-8 are in x0-x7...
+          const RegisterInfo *reg_info = nullptr;
+          reg_info = reg_ctx->GetRegisterInfo(
+              eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1 + value_idx);
 
-    for (uint32_t value_idx = 0; value_idx < num_values; ++value_idx)
-    {
-        // We currently only support extracting values with Clang QualTypes.
-        // Do we care about others?
-        Value *value = values.GetValueAtIndex(value_idx);
-        
-        if (!value)
-            return false;
-        
-        CompilerType value_type = value->GetCompilerType();
-        if (value_type)
-        {
-            bool is_signed = false;
-            size_t bit_width = 0;
-            if (value_type.IsIntegerOrEnumerationType (is_signed))
-            {
-                bit_width = value_type.GetBitSize(&thread);
-            }
-            else if (value_type.IsPointerOrReferenceType ())
-            {
-                bit_width = value_type.GetBitSize(&thread);
-            }
-            else
-            {
-                // We only handle integer, pointer and reference types currently...
+          if (reg_info) {
+            RegisterValue reg_value;
+
+            if (reg_ctx->ReadRegister(reg_info, reg_value)) {
+              if (is_signed)
+                reg_value.SignExtend(bit_width);
+              if (!reg_value.GetScalarValue(value->GetScalar()))
                 return false;
+              continue;
             }
-            
-            if (bit_width <= (exe_ctx.GetProcessRef().GetAddressByteSize() * 8))
-            {
-                if (value_idx < 8)
-                {
-                    // Arguments 1-8 are in x0-x7...
-                    const RegisterInfo *reg_info = nullptr;
-                    reg_info= reg_ctx->GetRegisterInfo (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1 + value_idx);
-                    
-                    if (reg_info)
-                    {
-                        RegisterValue reg_value;
-                        
-                        if (reg_ctx->ReadRegister(reg_info, reg_value))
-                        {
-                            if (is_signed)
-                                reg_value.SignExtend(bit_width);
-                            if (!reg_value.GetScalarValue(value->GetScalar()))
-                                return false;
-                            continue;
-                        }
-                    }
-                    return false;
-                }
-                else
-                {
-                    //TODO: Verify for stack layout for SysV
-                    if (sp == 0)
-                    {
-                        // Read the stack pointer if we already haven't read it
-                        sp = reg_ctx->GetSP(0);
-                        if (sp == 0)
-                            return false;
-                    }
+          }
+          return false;
+        } else {
+          // TODO: Verify for stack layout for SysV
+          if (sp == 0) {
+            // Read the stack pointer if we already haven't read it
+            sp = reg_ctx->GetSP(0);
+            if (sp == 0)
+              return false;
+          }
+
+          // Arguments 5 on up are on the stack
+          const uint32_t arg_byte_size = (bit_width + (8 - 1)) / 8;
+          Error error;
+          if (!exe_ctx.GetProcessRef().ReadScalarIntegerFromMemory(
+                  sp, arg_byte_size, is_signed, value->GetScalar(), error))
+            return false;
 
-                    // Arguments 5 on up are on the stack
-                    const uint32_t arg_byte_size = (bit_width + (8-1)) / 8;
-                    Error error;
-                    if (!exe_ctx.GetProcessRef().ReadScalarIntegerFromMemory(sp, arg_byte_size, is_signed, value->GetScalar(), error))
-                        return false;
-                    
-                    sp += arg_byte_size;
-                    // Align up to the next 8 byte boundary if needed
-                    if (sp % 8)
-                    {
-                        sp >>= 3;
-                        sp += 1;
-                        sp <<= 3;
-                    }
-                }
-            }
+          sp += arg_byte_size;
+          // Align up to the next 8 byte boundary if needed
+          if (sp % 8) {
+            sp >>= 3;
+            sp += 1;
+            sp <<= 3;
+          }
         }
+      }
     }
-    return true;
+  }
+  return true;
 }
 
-Error
-ABISysV_arm64::SetReturnValueObject(lldb::StackFrameSP &frame_sp, lldb::ValueObjectSP &new_value_sp)
-{
-    Error error;
-    if (!new_value_sp)
-    {
-        error.SetErrorString("Empty value object for return value.");
-        return error;
-    }
-    
-    CompilerType return_value_type = new_value_sp->GetCompilerType();
-    if (!return_value_type)
-    {
-        error.SetErrorString ("Null clang type for return value.");
-        return error;
+Error ABISysV_arm64::SetReturnValueObject(lldb::StackFrameSP &frame_sp,
+                                          lldb::ValueObjectSP &new_value_sp) {
+  Error error;
+  if (!new_value_sp) {
+    error.SetErrorString("Empty value object for return value.");
+    return error;
+  }
+
+  CompilerType return_value_type = new_value_sp->GetCompilerType();
+  if (!return_value_type) {
+    error.SetErrorString("Null clang type for return value.");
+    return error;
+  }
+
+  Thread *thread = frame_sp->GetThread().get();
+
+  RegisterContext *reg_ctx = thread->GetRegisterContext().get();
+
+  if (reg_ctx) {
+    DataExtractor data;
+    Error data_error;
+    const uint64_t byte_size = new_value_sp->GetData(data, data_error);
+    if (data_error.Fail()) {
+      error.SetErrorStringWithFormat(
+          "Couldn't convert return value to raw data: %s",
+          data_error.AsCString());
+      return error;
     }
 
-    Thread *thread = frame_sp->GetThread().get();
-    
-    RegisterContext *reg_ctx = thread->GetRegisterContext().get();
-    
-    if (reg_ctx)
-    {
-        DataExtractor data;
-        Error data_error;
-        const uint64_t byte_size = new_value_sp->GetData(data, data_error);
-        if (data_error.Fail())
-        {
-            error.SetErrorStringWithFormat("Couldn't convert return value to raw data: %s", data_error.AsCString());
-            return error;
-        }
+    const uint32_t type_flags = return_value_type.GetTypeInfo(nullptr);
+    if (type_flags & eTypeIsScalar || type_flags & eTypeIsPointer) {
+      if (type_flags & eTypeIsInteger || type_flags & eTypeIsPointer) {
+        // Extract the register context so we can read arguments from registers
+        lldb::offset_t offset = 0;
+        if (byte_size <= 16) {
+          const RegisterInfo *x0_info = reg_ctx->GetRegisterInfo(
+              eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1);
+          if (byte_size <= 8) {
+            uint64_t raw_value = data.GetMaxU64(&offset, byte_size);
+
+            if (!reg_ctx->WriteRegisterFromUnsigned(x0_info, raw_value))
+              error.SetErrorString("failed to write register x0");
+          } else {
+            uint64_t raw_value = data.GetMaxU64(&offset, 8);
+
+            if (reg_ctx->WriteRegisterFromUnsigned(x0_info, raw_value)) {
+              const RegisterInfo *x1_info = reg_ctx->GetRegisterInfo(
+                  eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG2);
+              raw_value = data.GetMaxU64(&offset, byte_size - offset);
 
-        const uint32_t type_flags = return_value_type.GetTypeInfo(nullptr);
-        if (type_flags & eTypeIsScalar ||
-            type_flags & eTypeIsPointer)
-        {
-            if (type_flags & eTypeIsInteger ||
-                type_flags & eTypeIsPointer )
-            {
-                // Extract the register context so we can read arguments from registers
-                lldb::offset_t offset = 0;
-                if (byte_size <= 16)
-                {
-                    const RegisterInfo *x0_info = reg_ctx->GetRegisterInfo (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1);
-                    if (byte_size <= 8)
-                    {
-                        uint64_t raw_value = data.GetMaxU64(&offset, byte_size);
-                        
-                        if (!reg_ctx->WriteRegisterFromUnsigned (x0_info, raw_value))
-                            error.SetErrorString ("failed to write register x0");
-                    }
-                    else
-                    {
-                        uint64_t raw_value = data.GetMaxU64(&offset, 8);
-                        
-                        if (reg_ctx->WriteRegisterFromUnsigned (x0_info, raw_value))
-                        {
-                            const RegisterInfo *x1_info = reg_ctx->GetRegisterInfo (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG2);
-                            raw_value = data.GetMaxU64(&offset, byte_size - offset);
-                            
-                            if (!reg_ctx->WriteRegisterFromUnsigned (x1_info, raw_value))
-                                error.SetErrorString ("failed to write register x1");
-                        }
-                    }
-                }
-                else
-                {
-                    error.SetErrorString("We don't support returning longer than 128 bit integer values at present.");
-                }
+              if (!reg_ctx->WriteRegisterFromUnsigned(x1_info, raw_value))
+                error.SetErrorString("failed to write register x1");
             }
-            else if (type_flags & eTypeIsFloat)
-            {
-                if (type_flags & eTypeIsComplex)
-                {
-                    // Don't handle complex yet.
-                    error.SetErrorString ("returning complex float values are not supported");
-                }
-                else
-                {
-                    const RegisterInfo *v0_info = reg_ctx->GetRegisterInfoByName("v0", 0);
-
-                    if (v0_info)
-                    {
-                        if (byte_size <= 16)
-                        {
-                            if (byte_size <= RegisterValue::GetMaxByteSize())
-                            {
-                                RegisterValue reg_value;
-                                error = reg_value.SetValueFromData (v0_info, data, 0, true);
-                                if (error.Success())
-                                {
-                                    if (!reg_ctx->WriteRegister (v0_info, reg_value))
-                                        error.SetErrorString ("failed to write register v0");
-                                }
-                            }
-                            else
-                            {
-                                error.SetErrorStringWithFormat ("returning float values with a byte size of %" PRIu64 " are not supported", byte_size);
-                            }
-                        }
-                        else
-                        {
-                            error.SetErrorString("returning float values longer than 128 bits are not supported");            
-                        }
-                    }
-                    else
-                    {
-                        error.SetErrorString("v0 register is not available on this target");
-                    }
+          }
+        } else {
+          error.SetErrorString("We don't support returning longer than 128 bit "
+                               "integer values at present.");
+        }
+      } else if (type_flags & eTypeIsFloat) {
+        if (type_flags & eTypeIsComplex) {
+          // Don't handle complex yet.
+          error.SetErrorString(
+              "returning complex float values are not supported");
+        } else {
+          const RegisterInfo *v0_info = reg_ctx->GetRegisterInfoByName("v0", 0);
+
+          if (v0_info) {
+            if (byte_size <= 16) {
+              if (byte_size <= RegisterValue::GetMaxByteSize()) {
+                RegisterValue reg_value;
+                error = reg_value.SetValueFromData(v0_info, data, 0, true);
+                if (error.Success()) {
+                  if (!reg_ctx->WriteRegister(v0_info, reg_value))
+                    error.SetErrorString("failed to write register v0");
                 }
+              } else {
+                error.SetErrorStringWithFormat(
+                    "returning float values with a byte size of %" PRIu64
+                    " are not supported",
+                    byte_size);
+              }
+            } else {
+              error.SetErrorString("returning float values longer than 128 "
+                                   "bits are not supported");
             }
+          } else {
+            error.SetErrorString("v0 register is not available on this target");
+          }
         }
-        else if (type_flags & eTypeIsVector)
-        {
-            if (byte_size > 0)
-            {
-                const RegisterInfo *v0_info = reg_ctx->GetRegisterInfoByName("v0", 0);
-                
-                if (v0_info)
-                {
-                    if (byte_size <= v0_info->byte_size)
-                    {
-                        RegisterValue reg_value;
-                        error = reg_value.SetValueFromData (v0_info, data, 0, true);
-                        if (error.Success())
-                        {
-                            if (!reg_ctx->WriteRegister (v0_info, reg_value))
-                                error.SetErrorString ("failed to write register v0");
-                        }
-                    }
-                }
+      }
+    } else if (type_flags & eTypeIsVector) {
+      if (byte_size > 0) {
+        const RegisterInfo *v0_info = reg_ctx->GetRegisterInfoByName("v0", 0);
+
+        if (v0_info) {
+          if (byte_size <= v0_info->byte_size) {
+            RegisterValue reg_value;
+            error = reg_value.SetValueFromData(v0_info, data, 0, true);
+            if (error.Success()) {
+              if (!reg_ctx->WriteRegister(v0_info, reg_value))
+                error.SetErrorString("failed to write register v0");
             }
+          }
         }
+      }
     }
-    else
-    {
-        error.SetErrorString("no registers are available");        
-    }
-    
-    return error;
+  } else {
+    error.SetErrorString("no registers are available");
+  }
+
+  return error;
 }
 
-bool
-ABISysV_arm64::CreateFunctionEntryUnwindPlan (UnwindPlan &unwind_plan)
-{
-    unwind_plan.Clear();
-    unwind_plan.SetRegisterKind (eRegisterKindDWARF);
-    
-    uint32_t lr_reg_num = arm64_dwarf::lr;
-    uint32_t sp_reg_num = arm64_dwarf::sp;
-    uint32_t pc_reg_num = arm64_dwarf::pc;
-    
-    UnwindPlan::RowSP row(new UnwindPlan::Row);
-    
-    // Our previous Call Frame Address is the stack pointer
-    row->GetCFAValue().SetIsRegisterPlusOffset (sp_reg_num, 0);
-    
-    // Our previous PC is in the LR
-    row->SetRegisterLocationToRegister(pc_reg_num, lr_reg_num, true);
-    
-    unwind_plan.AppendRow (row);
-    
-    // All other registers are the same.
-    
-    unwind_plan.SetSourceName ("arm64 at-func-entry default");
-    unwind_plan.SetSourcedFromCompiler (eLazyBoolNo);
+bool ABISysV_arm64::CreateFunctionEntryUnwindPlan(UnwindPlan &unwind_plan) {
+  unwind_plan.Clear();
+  unwind_plan.SetRegisterKind(eRegisterKindDWARF);
+
+  uint32_t lr_reg_num = arm64_dwarf::lr;
+  uint32_t sp_reg_num = arm64_dwarf::sp;
+  uint32_t pc_reg_num = arm64_dwarf::pc;
+
+  UnwindPlan::RowSP row(new UnwindPlan::Row);
+
+  // Our previous Call Frame Address is the stack pointer
+  row->GetCFAValue().SetIsRegisterPlusOffset(sp_reg_num, 0);
+
+  // Our previous PC is in the LR
+  row->SetRegisterLocationToRegister(pc_reg_num, lr_reg_num, true);
 
-    return true;
+  unwind_plan.AppendRow(row);
+
+  // All other registers are the same.
+
+  unwind_plan.SetSourceName("arm64 at-func-entry default");
+  unwind_plan.SetSourcedFromCompiler(eLazyBoolNo);
+
+  return true;
 }
 
-bool
-ABISysV_arm64::CreateDefaultUnwindPlan (UnwindPlan &unwind_plan)
-{
-    unwind_plan.Clear();
-    unwind_plan.SetRegisterKind (eRegisterKindDWARF);
-    
-    uint32_t fp_reg_num = arm64_dwarf::fp;
-    uint32_t pc_reg_num = arm64_dwarf::pc;
-
-    UnwindPlan::RowSP row(new UnwindPlan::Row);    
-    const int32_t ptr_size = 8;
-    
-    row->GetCFAValue().SetIsRegisterPlusOffset (fp_reg_num, 2 * ptr_size);
-    row->SetOffset (0);
-    
-    row->SetRegisterLocationToAtCFAPlusOffset(fp_reg_num, ptr_size * -2, true);
-    row->SetRegisterLocationToAtCFAPlusOffset(pc_reg_num, ptr_size * -1, true);
-    
-    unwind_plan.AppendRow (row);
-    unwind_plan.SetSourceName ("arm64 default unwind plan");
-    unwind_plan.SetSourcedFromCompiler (eLazyBoolNo);
-    unwind_plan.SetUnwindPlanValidAtAllInstructions (eLazyBoolNo);
+bool ABISysV_arm64::CreateDefaultUnwindPlan(UnwindPlan &unwind_plan) {
+  unwind_plan.Clear();
+  unwind_plan.SetRegisterKind(eRegisterKindDWARF);
+
+  uint32_t fp_reg_num = arm64_dwarf::fp;
+  uint32_t pc_reg_num = arm64_dwarf::pc;
+
+  UnwindPlan::RowSP row(new UnwindPlan::Row);
+  const int32_t ptr_size = 8;
 
-    return true;
+  row->GetCFAValue().SetIsRegisterPlusOffset(fp_reg_num, 2 * ptr_size);
+  row->SetOffset(0);
+
+  row->SetRegisterLocationToAtCFAPlusOffset(fp_reg_num, ptr_size * -2, true);
+  row->SetRegisterLocationToAtCFAPlusOffset(pc_reg_num, ptr_size * -1, true);
+
+  unwind_plan.AppendRow(row);
+  unwind_plan.SetSourceName("arm64 default unwind plan");
+  unwind_plan.SetSourcedFromCompiler(eLazyBoolNo);
+  unwind_plan.SetUnwindPlanValidAtAllInstructions(eLazyBoolNo);
+
+  return true;
 }
 
-// AAPCS64 (Procedure Call Standard for the ARM 64-bit Architecture) says 
-// registers x19 through x28 and sp are callee preserved.  
-// v8-v15 are non-volatile (and specifically only the lower 8 bytes of these regs),
+// AAPCS64 (Procedure Call Standard for the ARM 64-bit Architecture) says
+// registers x19 through x28 and sp are callee preserved.
+// v8-v15 are non-volatile (and specifically only the lower 8 bytes of these
+// regs),
 // the rest of the fp/SIMD registers are volatile.
 
 // We treat x29 as callee preserved also, else the unwinder won't try to
 // retrieve fp saves.
 
-bool
-ABISysV_arm64::RegisterIsVolatile (const RegisterInfo *reg_info)
-{
-    if (reg_info)
-    {
-        const char *name = reg_info->name;
-
-        // Sometimes we'll be called with the "alternate" name for these registers;
-        // recognize them as non-volatile.
-
-        if (name[0] == 'p' && name[1] == 'c')        // pc
-            return false;
-        if (name[0] == 'f' && name[1] == 'p')        // fp
-            return false;
-        if (name[0] == 's' && name[1] == 'p')        // sp
-            return false;
-        if (name[0] == 'l' && name[1] == 'r')        // lr
-            return false;
-
-        if (name[0] == 'x')
-        {
-            // Volatile registers: x0-x18
-            // Although documentation says only x19-28 + sp are callee saved
-            // We ll also have to treat x30 as non-volatile.
-            // Each dwarf frame has its own value of lr.
-            // Return false for the non-volatile gpr regs, true for everything else
-            switch (name[1])
-            {
-                case '1':
-                    switch (name[2])
-                    {
-                        case '9': 
-                            return false;             // x19 is non-volatile
-                        default:
-                          return true;
-                    }
-                        break;
-                case '2':
-                    switch (name[2])
-                    {
-                        case '0':
-                        case '1': 
-                        case '2':
-                        case '3':
-                        case '4':
-                        case '5':
-                        case '6':
-                        case '7':
-                        case '8': 
-                            return false;             // x20 - 28 are non-volatile
-                        case '9': 
-                            return false;             // x29 aka fp treat as non-volatile
-                        default:
-                            return true;
-                    }
-                case '3':                             // x30 (lr) and x31 (sp) treat as non-volatile
-                    if (name[2] == '0' || name[2] == '1')
-                      return false;
-                    break;
-                default:
-                    return true;                      // all volatile cases not handled above fall here.
-            }
+bool ABISysV_arm64::RegisterIsVolatile(const RegisterInfo *reg_info) {
+  if (reg_info) {
+    const char *name = reg_info->name;
+
+    // Sometimes we'll be called with the "alternate" name for these registers;
+    // recognize them as non-volatile.
+
+    if (name[0] == 'p' && name[1] == 'c') // pc
+      return false;
+    if (name[0] == 'f' && name[1] == 'p') // fp
+      return false;
+    if (name[0] == 's' && name[1] == 'p') // sp
+      return false;
+    if (name[0] == 'l' && name[1] == 'r') // lr
+      return false;
+
+    if (name[0] == 'x') {
+      // Volatile registers: x0-x18
+      // Although documentation says only x19-28 + sp are callee saved
+      // We ll also have to treat x30 as non-volatile.
+      // Each dwarf frame has its own value of lr.
+      // Return false for the non-volatile gpr regs, true for everything else
+      switch (name[1]) {
+      case '1':
+        switch (name[2]) {
+        case '9':
+          return false; // x19 is non-volatile
+        default:
+          return true;
         }
-        else if (name[0] == 'v' || name[0] == 's' || name[0] == 'd')
-        {
-            // Volatile registers: v0-7, v16-v31
-            // Return false for non-volatile fp/SIMD regs, true for everything else
-            switch (name[1])
-            {
-                case '8':
-                case '9':
-                    return false; // v8-v9 are non-volatile
-                case '1':
-                    switch (name[2])
-                    {
-                        case '0':
-                        case '1':
-                        case '2':
-                        case '3':
-                        case '4':
-                        case '5':
-                            return false; // v10-v15 are non-volatile
-                        default:
-                            return true;
-                    }
-                default:
-                    return true;
-            }
+        break;
+      case '2':
+        switch (name[2]) {
+        case '0':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+        case '6':
+        case '7':
+        case '8':
+          return false; // x20 - 28 are non-volatile
+        case '9':
+          return false; // x29 aka fp treat as non-volatile
+        default:
+          return true;
         }
+      case '3': // x30 (lr) and x31 (sp) treat as non-volatile
+        if (name[2] == '0' || name[2] == '1')
+          return false;
+        break;
+      default:
+        return true; // all volatile cases not handled above fall here.
+      }
+    } else if (name[0] == 'v' || name[0] == 's' || name[0] == 'd') {
+      // Volatile registers: v0-7, v16-v31
+      // Return false for non-volatile fp/SIMD regs, true for everything else
+      switch (name[1]) {
+      case '8':
+      case '9':
+        return false; // v8-v9 are non-volatile
+      case '1':
+        switch (name[2]) {
+        case '0':
+        case '1':
+        case '2':
+        case '3':
+        case '4':
+        case '5':
+          return false; // v10-v15 are non-volatile
+        default:
+          return true;
+        }
+      default:
+        return true;
+      }
     }
-    return true;
+  }
+  return true;
 }
 
-static bool
-LoadValueFromConsecutiveGPRRegisters (ExecutionContext &exe_ctx,
-                                      RegisterContext *reg_ctx,
-                                      const CompilerType &value_type,
-                                      bool is_return_value, // false => parameter, true => return value
-                                      uint32_t &NGRN,       // NGRN (see ABI documentation)
-                                      uint32_t &NSRN,       // NSRN (see ABI documentation)
-                                      DataExtractor &data)
-{
-    const size_t byte_size = value_type.GetByteSize(nullptr);
-    
-    if (byte_size == 0)
+static bool LoadValueFromConsecutiveGPRRegisters(
+    ExecutionContext &exe_ctx, RegisterContext *reg_ctx,
+    const CompilerType &value_type,
+    bool is_return_value, // false => parameter, true => return value
+    uint32_t &NGRN,       // NGRN (see ABI documentation)
+    uint32_t &NSRN,       // NSRN (see ABI documentation)
+    DataExtractor &data) {
+  const size_t byte_size = value_type.GetByteSize(nullptr);
+
+  if (byte_size == 0)
+    return false;
+
+  std::unique_ptr<DataBufferHeap> heap_data_ap(
+      new DataBufferHeap(byte_size, 0));
+  const ByteOrder byte_order = exe_ctx.GetProcessRef().GetByteOrder();
+  Error error;
+
+  CompilerType base_type;
+  const uint32_t homogeneous_count =
+      value_type.IsHomogeneousAggregate(&base_type);
+  if (homogeneous_count > 0 && homogeneous_count <= 8) {
+    // Make sure we have enough registers
+    if (NSRN < 8 && (8 - NSRN) >= homogeneous_count) {
+      if (!base_type)
         return false;
+      const size_t base_byte_size = base_type.GetByteSize(nullptr);
+      uint32_t data_offset = 0;
 
-    std::unique_ptr<DataBufferHeap> heap_data_ap (new DataBufferHeap(byte_size, 0));
-    const ByteOrder byte_order = exe_ctx.GetProcessRef().GetByteOrder();
-    Error error;
-
-    CompilerType base_type;
-    const uint32_t homogeneous_count = value_type.IsHomogeneousAggregate (&base_type);
-    if (homogeneous_count > 0 && homogeneous_count <= 8)
-    {
-        // Make sure we have enough registers
-        if (NSRN < 8 && (8-NSRN) >= homogeneous_count)
-        {
-            if (!base_type)
-                return false;
-            const size_t base_byte_size = base_type.GetByteSize(nullptr);
-            uint32_t data_offset = 0;
+      for (uint32_t i = 0; i < homogeneous_count; ++i) {
+        char v_name[8];
+        ::snprintf(v_name, sizeof(v_name), "v%u", NSRN);
+        const RegisterInfo *reg_info =
+            reg_ctx->GetRegisterInfoByName(v_name, 0);
+        if (reg_info == nullptr)
+          return false;
 
-            for (uint32_t i=0; i<homogeneous_count; ++i)
-            {
-                char v_name[8];
-                ::snprintf (v_name, sizeof(v_name), "v%u", NSRN);
-                const RegisterInfo *reg_info = reg_ctx->GetRegisterInfoByName(v_name, 0);
-                if (reg_info == nullptr)
-                    return false;
-                
-                if (base_byte_size > reg_info->byte_size)
-                    return false;
-                
-                RegisterValue reg_value;
-                
-                if (!reg_ctx->ReadRegister(reg_info, reg_value))
-                    return false;
-                
-                // Make sure we have enough room in "heap_data_ap"
-                if ((data_offset + base_byte_size) <= heap_data_ap->GetByteSize())
-                {
-                    const size_t bytes_copied = reg_value.GetAsMemoryData (reg_info,
-                                                                           heap_data_ap->GetBytes()+data_offset,
-                                                                           base_byte_size,
-                                                                           byte_order,
-                                                                           error);
-                    if (bytes_copied != base_byte_size)
-                        return false;
-                    data_offset += bytes_copied;
-                    ++NSRN;
-                }
-                else
-                    return false;
-            }
-            data.SetByteOrder(byte_order);
-            data.SetAddressByteSize(exe_ctx.GetProcessRef().GetAddressByteSize());
-            data.SetData(DataBufferSP (heap_data_ap.release()));
-            return true;
-        }
+        if (base_byte_size > reg_info->byte_size)
+          return false;
+
+        RegisterValue reg_value;
+
+        if (!reg_ctx->ReadRegister(reg_info, reg_value))
+          return false;
+
+        // Make sure we have enough room in "heap_data_ap"
+        if ((data_offset + base_byte_size) <= heap_data_ap->GetByteSize()) {
+          const size_t bytes_copied = reg_value.GetAsMemoryData(
+              reg_info, heap_data_ap->GetBytes() + data_offset, base_byte_size,
+              byte_order, error);
+          if (bytes_copied != base_byte_size)
+            return false;
+          data_offset += bytes_copied;
+          ++NSRN;
+        } else
+          return false;
+      }
+      data.SetByteOrder(byte_order);
+      data.SetAddressByteSize(exe_ctx.GetProcessRef().GetAddressByteSize());
+      data.SetData(DataBufferSP(heap_data_ap.release()));
+      return true;
     }
+  }
 
-    const size_t max_reg_byte_size = 16;
-    if (byte_size <= max_reg_byte_size)
-    {
-        size_t bytes_left = byte_size;
-        uint32_t data_offset = 0;
-        while (data_offset < byte_size)
-        {
-            if (NGRN >= 8)
-                return false;
+  const size_t max_reg_byte_size = 16;
+  if (byte_size <= max_reg_byte_size) {
+    size_t bytes_left = byte_size;
+    uint32_t data_offset = 0;
+    while (data_offset < byte_size) {
+      if (NGRN >= 8)
+        return false;
 
-            const RegisterInfo *reg_info = reg_ctx->GetRegisterInfo (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1 + NGRN);
-            if (reg_info == nullptr)
-                return false;
+      const RegisterInfo *reg_info = reg_ctx->GetRegisterInfo(
+          eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1 + NGRN);
+      if (reg_info == nullptr)
+        return false;
 
-            RegisterValue reg_value;
-            
-            if (!reg_ctx->ReadRegister(reg_info, reg_value))
-                return false;
-            
-            const size_t curr_byte_size = std::min<size_t>(8,bytes_left);
-            const size_t bytes_copied = reg_value.GetAsMemoryData (reg_info, heap_data_ap->GetBytes()+data_offset, curr_byte_size, byte_order, error);
-            if (bytes_copied == 0)
-                return false;
-            if (bytes_copied >= bytes_left)
-                break;
-            data_offset += bytes_copied;
-            bytes_left -= bytes_copied;
-            ++NGRN;
-        }
+      RegisterValue reg_value;
+
+      if (!reg_ctx->ReadRegister(reg_info, reg_value))
+        return false;
+
+      const size_t curr_byte_size = std::min<size_t>(8, bytes_left);
+      const size_t bytes_copied = reg_value.GetAsMemoryData(
+          reg_info, heap_data_ap->GetBytes() + data_offset, curr_byte_size,
+          byte_order, error);
+      if (bytes_copied == 0)
+        return false;
+      if (bytes_copied >= bytes_left)
+        break;
+      data_offset += bytes_copied;
+      bytes_left -= bytes_copied;
+      ++NGRN;
     }
-    else
-    {        
-        const RegisterInfo *reg_info = nullptr;
-        if (is_return_value)
-        {
-            // We are assuming we are decoding this immediately after returning
-            // from a function call and that the address of the structure is in x8
-            reg_info = reg_ctx->GetRegisterInfoByName("x8", 0);
-        }
-        else
-        {
-            // We are assuming we are stopped at the first instruction in a function
-            // and that the ABI is being respected so all parameters appear where they
-            // should be (functions with no external linkage can legally violate the ABI).
-            if (NGRN >= 8)
-                return false;
-            
-            reg_info = reg_ctx->GetRegisterInfo (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1 + NGRN);
-            if (reg_info == nullptr)
-                return false;
-            ++NGRN;
-        }
+  } else {
+    const RegisterInfo *reg_info = nullptr;
+    if (is_return_value) {
+      // We are assuming we are decoding this immediately after returning
+      // from a function call and that the address of the structure is in x8
+      reg_info = reg_ctx->GetRegisterInfoByName("x8", 0);
+    } else {
+      // We are assuming we are stopped at the first instruction in a function
+      // and that the ABI is being respected so all parameters appear where they
+      // should be (functions with no external linkage can legally violate the
+      // ABI).
+      if (NGRN >= 8)
+        return false;
 
-        if (reg_info == nullptr)
-            return false;
+      reg_info = reg_ctx->GetRegisterInfo(eRegisterKindGeneric,
+                                          LLDB_REGNUM_GENERIC_ARG1 + NGRN);
+      if (reg_info == nullptr)
+        return false;
+      ++NGRN;
+    }
 
-        const lldb::addr_t value_addr = reg_ctx->ReadRegisterAsUnsigned(reg_info, LLDB_INVALID_ADDRESS);
+    if (reg_info == nullptr)
+      return false;
 
-        if (value_addr == LLDB_INVALID_ADDRESS)
-            return false;
+    const lldb::addr_t value_addr =
+        reg_ctx->ReadRegisterAsUnsigned(reg_info, LLDB_INVALID_ADDRESS);
 
-        if (exe_ctx.GetProcessRef().ReadMemory (value_addr,
-                                                heap_data_ap->GetBytes(),
-                                                heap_data_ap->GetByteSize(),
-                                                error) != heap_data_ap->GetByteSize())
-        {
-            return false;
-        }
+    if (value_addr == LLDB_INVALID_ADDRESS)
+      return false;
+
+    if (exe_ctx.GetProcessRef().ReadMemory(
+            value_addr, heap_data_ap->GetBytes(), heap_data_ap->GetByteSize(),
+            error) != heap_data_ap->GetByteSize()) {
+      return false;
     }
+  }
 
-    data.SetByteOrder(byte_order);
-    data.SetAddressByteSize(exe_ctx.GetProcessRef().GetAddressByteSize());
-    data.SetData(DataBufferSP (heap_data_ap.release()));
-    return true;
+  data.SetByteOrder(byte_order);
+  data.SetAddressByteSize(exe_ctx.GetProcessRef().GetAddressByteSize());
+  data.SetData(DataBufferSP(heap_data_ap.release()));
+  return true;
 }
 
-ValueObjectSP
-ABISysV_arm64::GetReturnValueObjectImpl (Thread &thread, CompilerType &return_compiler_type) const
-{
-    ValueObjectSP return_valobj_sp;
-    Value value;
-    
-    ExecutionContext exe_ctx (thread.shared_from_this());
-    if (exe_ctx.GetTargetPtr() == nullptr || exe_ctx.GetProcessPtr() == nullptr)
-        return return_valobj_sp;
-
-    //value.SetContext (Value::eContextTypeClangType, return_compiler_type);
-    value.SetCompilerType(return_compiler_type);
-    
-    RegisterContext *reg_ctx = thread.GetRegisterContext().get();
-    if (!reg_ctx)
-        return return_valobj_sp;
-    
-    const size_t byte_size = return_compiler_type.GetByteSize(nullptr);
-
-    const uint32_t type_flags = return_compiler_type.GetTypeInfo(nullptr);
-    if (type_flags & eTypeIsScalar ||
-        type_flags & eTypeIsPointer)
-    {
-        value.SetValueType(Value::eValueTypeScalar);
-        
-        bool success = false;
-        if (type_flags & eTypeIsInteger ||
-            type_flags & eTypeIsPointer )
-        {
-            // Extract the register context so we can read arguments from registers
-            if (byte_size <= 8)
+ValueObjectSP ABISysV_arm64::GetReturnValueObjectImpl(
+    Thread &thread, CompilerType &return_compiler_type) const {
+  ValueObjectSP return_valobj_sp;
+  Value value;
+
+  ExecutionContext exe_ctx(thread.shared_from_this());
+  if (exe_ctx.GetTargetPtr() == nullptr || exe_ctx.GetProcessPtr() == nullptr)
+    return return_valobj_sp;
+
+  // value.SetContext (Value::eContextTypeClangType, return_compiler_type);
+  value.SetCompilerType(return_compiler_type);
+
+  RegisterContext *reg_ctx = thread.GetRegisterContext().get();
+  if (!reg_ctx)
+    return return_valobj_sp;
+
+  const size_t byte_size = return_compiler_type.GetByteSize(nullptr);
+
+  const uint32_t type_flags = return_compiler_type.GetTypeInfo(nullptr);
+  if (type_flags & eTypeIsScalar || type_flags & eTypeIsPointer) {
+    value.SetValueType(Value::eValueTypeScalar);
+
+    bool success = false;
+    if (type_flags & eTypeIsInteger || type_flags & eTypeIsPointer) {
+      // Extract the register context so we can read arguments from registers
+      if (byte_size <= 8) {
+        const RegisterInfo *x0_reg_info = nullptr;
+        x0_reg_info = reg_ctx->GetRegisterInfo(eRegisterKindGeneric,
+                                               LLDB_REGNUM_GENERIC_ARG1);
+        if (x0_reg_info) {
+          uint64_t raw_value =
+              thread.GetRegisterContext()->ReadRegisterAsUnsigned(x0_reg_info,
+                                                                  0);
+          const bool is_signed = (type_flags & eTypeIsSigned) != 0;
+          switch (byte_size) {
+          default:
+            break;
+          case 16: // uint128_t
+            // In register x0 and x1
             {
-                const RegisterInfo *x0_reg_info = nullptr;
-                x0_reg_info = reg_ctx->GetRegisterInfo (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG1);
-                if (x0_reg_info)
-                {
-                    uint64_t raw_value = thread.GetRegisterContext()->ReadRegisterAsUnsigned(x0_reg_info, 0);
-                    const bool is_signed = (type_flags & eTypeIsSigned) != 0;
-                    switch (byte_size)
-                    {
-                        default:
-                            break;
-                        case 16: // uint128_t
-                            // In register x0 and x1
-                            {
-                                const RegisterInfo *x1_reg_info = nullptr;
-                                x1_reg_info = reg_ctx->GetRegisterInfo (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_ARG2);
-
-                                if (x1_reg_info)
-                                {
-                                    if (byte_size <= x0_reg_info->byte_size + x1_reg_info->byte_size)
-                                    {
-                                        std::unique_ptr<DataBufferHeap> heap_data_ap (new DataBufferHeap(byte_size, 0));
-                                        const ByteOrder byte_order = exe_ctx.GetProcessRef().GetByteOrder();
-                                        RegisterValue x0_reg_value;
-                                        RegisterValue x1_reg_value;
-                                        if (reg_ctx->ReadRegister(x0_reg_info, x0_reg_value) &&
-                                            reg_ctx->ReadRegister(x1_reg_info, x1_reg_value))
-                                        {
-                                            Error error;
-                                            if (x0_reg_value.GetAsMemoryData (x0_reg_info, heap_data_ap->GetBytes()+0, 8, byte_order, error) &&
-                                                x1_reg_value.GetAsMemoryData (x1_reg_info, heap_data_ap->GetBytes()+8, 8, byte_order, error))
-                                            {
-                                                DataExtractor data (DataBufferSP (heap_data_ap.release()),
-                                                                    byte_order,
-                                                                    exe_ctx.GetProcessRef().GetAddressByteSize());
-                                                
-                                                return_valobj_sp = ValueObjectConstResult::Create (&thread,
-                                                                                                   return_compiler_type,
-                                                                                                   ConstString(""),
-                                                                                                   data);
-                                                return return_valobj_sp;
-                                            }
-                                        }
-                                    }
-                                }
-                            }
-                            break;
-                        case sizeof(uint64_t):
-                            if (is_signed)
-                                value.GetScalar() = (int64_t)(raw_value);
-                            else
-                                value.GetScalar() = (uint64_t)(raw_value);
-                            success = true;
-                            break;
-                            
-                        case sizeof(uint32_t):
-                            if (is_signed)
-                                value.GetScalar() = (int32_t)(raw_value & UINT32_MAX);
-                            else
-                                value.GetScalar() = (uint32_t)(raw_value & UINT32_MAX);
-                            success = true;
-                            break;
-                            
-                        case sizeof(uint16_t):
-                            if (is_signed)
-                                value.GetScalar() = (int16_t)(raw_value & UINT16_MAX);
-                            else
-                                value.GetScalar() = (uint16_t)(raw_value & UINT16_MAX);
-                            success = true;
-                            break;
-                            
-                        case sizeof(uint8_t):
-                            if (is_signed)
-                                value.GetScalar() = (int8_t)(raw_value & UINT8_MAX);
-                            else
-                                value.GetScalar() = (uint8_t)(raw_value & UINT8_MAX);
-                            success = true;
-                            break;
+              const RegisterInfo *x1_reg_info = nullptr;
+              x1_reg_info = reg_ctx->GetRegisterInfo(eRegisterKindGeneric,
+                                                     LLDB_REGNUM_GENERIC_ARG2);
+
+              if (x1_reg_info) {
+                if (byte_size <=
+                    x0_reg_info->byte_size + x1_reg_info->byte_size) {
+                  std::unique_ptr<DataBufferHeap> heap_data_ap(
+                      new DataBufferHeap(byte_size, 0));
+                  const ByteOrder byte_order =
+                      exe_ctx.GetProcessRef().GetByteOrder();
+                  RegisterValue x0_reg_value;
+                  RegisterValue x1_reg_value;
+                  if (reg_ctx->ReadRegister(x0_reg_info, x0_reg_value) &&
+                      reg_ctx->ReadRegister(x1_reg_info, x1_reg_value)) {
+                    Error error;
+                    if (x0_reg_value.GetAsMemoryData(
+                            x0_reg_info, heap_data_ap->GetBytes() + 0, 8,
+                            byte_order, error) &&
+                        x1_reg_value.GetAsMemoryData(
+                            x1_reg_info, heap_data_ap->GetBytes() + 8, 8,
+                            byte_order, error)) {
+                      DataExtractor data(
+                          DataBufferSP(heap_data_ap.release()), byte_order,
+                          exe_ctx.GetProcessRef().GetAddressByteSize());
+
+                      return_valobj_sp = ValueObjectConstResult::Create(
+                          &thread, return_compiler_type, ConstString(""), data);
+                      return return_valobj_sp;
                     }
+                  }
                 }
+              }
             }
-        }
-        else if (type_flags & eTypeIsFloat)
-        {
-            if (type_flags & eTypeIsComplex)
-            {
-                // Don't handle complex yet.
-            }
+            break;
+          case sizeof(uint64_t):
+            if (is_signed)
+              value.GetScalar() = (int64_t)(raw_value);
             else
-            {
-                if (byte_size <= sizeof(long double))
-                {
-                    const RegisterInfo *v0_reg_info = reg_ctx->GetRegisterInfoByName("v0", 0);
-                    RegisterValue v0_value;
-                    if (reg_ctx->ReadRegister (v0_reg_info, v0_value))
-                    {
-                        DataExtractor data;
-                        if (v0_value.GetData(data))
-                        {
-                            lldb::offset_t offset = 0;
-                            if (byte_size == sizeof(float))
-                            {
-                                value.GetScalar() = data.GetFloat(&offset);
-                                success = true;
-                            }
-                            else if (byte_size == sizeof(double))
-                            {
-                                value.GetScalar() = data.GetDouble(&offset);
-                                success = true;
-                            }
-                            else if (byte_size == sizeof(long double))
-                            {
-                                value.GetScalar() = data.GetLongDouble(&offset);
-                                success = true;
-                            }
-                        }
-                    }
-                }
+              value.GetScalar() = (uint64_t)(raw_value);
+            success = true;
+            break;
+
+          case sizeof(uint32_t):
+            if (is_signed)
+              value.GetScalar() = (int32_t)(raw_value & UINT32_MAX);
+            else
+              value.GetScalar() = (uint32_t)(raw_value & UINT32_MAX);
+            success = true;
+            break;
+
+          case sizeof(uint16_t):
+            if (is_signed)
+              value.GetScalar() = (int16_t)(raw_value & UINT16_MAX);
+            else
+              value.GetScalar() = (uint16_t)(raw_value & UINT16_MAX);
+            success = true;
+            break;
+
+          case sizeof(uint8_t):
+            if (is_signed)
+              value.GetScalar() = (int8_t)(raw_value & UINT8_MAX);
+            else
+              value.GetScalar() = (uint8_t)(raw_value & UINT8_MAX);
+            success = true;
+            break;
+          }
+        }
+      }
+    } else if (type_flags & eTypeIsFloat) {
+      if (type_flags & eTypeIsComplex) {
+        // Don't handle complex yet.
+      } else {
+        if (byte_size <= sizeof(long double)) {
+          const RegisterInfo *v0_reg_info =
+              reg_ctx->GetRegisterInfoByName("v0", 0);
+          RegisterValue v0_value;
+          if (reg_ctx->ReadRegister(v0_reg_info, v0_value)) {
+            DataExtractor data;
+            if (v0_value.GetData(data)) {
+              lldb::offset_t offset = 0;
+              if (byte_size == sizeof(float)) {
+                value.GetScalar() = data.GetFloat(&offset);
+                success = true;
+              } else if (byte_size == sizeof(double)) {
+                value.GetScalar() = data.GetDouble(&offset);
+                success = true;
+              } else if (byte_size == sizeof(long double)) {
+                value.GetScalar() = data.GetLongDouble(&offset);
+                success = true;
+              }
             }
+          }
         }
-        
-        if (success)
-            return_valobj_sp = ValueObjectConstResult::Create (thread.GetStackFrameAtIndex(0).get(),
-                                                               value,
-                                                               ConstString(""));
+      }
     }
-    else if (type_flags & eTypeIsVector)
-    {
-        if (byte_size > 0)
-        {
-            const RegisterInfo *v0_info = reg_ctx->GetRegisterInfoByName("v0", 0);
-            
-            if (v0_info)
-            {
-                if (byte_size <= v0_info->byte_size)
-                {
-                    std::unique_ptr<DataBufferHeap> heap_data_ap (new DataBufferHeap(byte_size, 0));
-                    const ByteOrder byte_order = exe_ctx.GetProcessRef().GetByteOrder();
-                    RegisterValue reg_value;
-                    if (reg_ctx->ReadRegister(v0_info, reg_value))
-                    {
-                        Error error;
-                        if (reg_value.GetAsMemoryData (v0_info,
-                                                       heap_data_ap->GetBytes(),
-                                                       heap_data_ap->GetByteSize(),
-                                                       byte_order,
-                                                       error))
-                        {
-                            DataExtractor data (DataBufferSP (heap_data_ap.release()),
-                                                byte_order,
-                                                exe_ctx.GetProcessRef().GetAddressByteSize());
-                            return_valobj_sp = ValueObjectConstResult::Create (&thread,
-                                                                               return_compiler_type,
-                                                                               ConstString(""),
-                                                                               data);
-                        }
-                    }
-                }
+
+    if (success)
+      return_valobj_sp = ValueObjectConstResult::Create(
+          thread.GetStackFrameAtIndex(0).get(), value, ConstString(""));
+  } else if (type_flags & eTypeIsVector) {
+    if (byte_size > 0) {
+      const RegisterInfo *v0_info = reg_ctx->GetRegisterInfoByName("v0", 0);
+
+      if (v0_info) {
+        if (byte_size <= v0_info->byte_size) {
+          std::unique_ptr<DataBufferHeap> heap_data_ap(
+              new DataBufferHeap(byte_size, 0));
+          const ByteOrder byte_order = exe_ctx.GetProcessRef().GetByteOrder();
+          RegisterValue reg_value;
+          if (reg_ctx->ReadRegister(v0_info, reg_value)) {
+            Error error;
+            if (reg_value.GetAsMemoryData(v0_info, heap_data_ap->GetBytes(),
+                                          heap_data_ap->GetByteSize(),
+                                          byte_order, error)) {
+              DataExtractor data(DataBufferSP(heap_data_ap.release()),
+                                 byte_order,
+                                 exe_ctx.GetProcessRef().GetAddressByteSize());
+              return_valobj_sp = ValueObjectConstResult::Create(
+                  &thread, return_compiler_type, ConstString(""), data);
             }
+          }
         }
+      }
     }
-    else if (type_flags & eTypeIsStructUnion ||
-             type_flags & eTypeIsClass)
-    {
-        DataExtractor data;
-        
-        uint32_t NGRN = 0;  // Search ABI docs for NGRN
-        uint32_t NSRN = 0;  // Search ABI docs for NSRN
-        const bool is_return_value = true;
-        if (LoadValueFromConsecutiveGPRRegisters (exe_ctx, reg_ctx, return_compiler_type, is_return_value, NGRN, NSRN, data))
-        {
-            return_valobj_sp = ValueObjectConstResult::Create (&thread,
-                                                               return_compiler_type,
-                                                               ConstString(""),
-                                                               data);            
-        }
+  } else if (type_flags & eTypeIsStructUnion || type_flags & eTypeIsClass) {
+    DataExtractor data;
+
+    uint32_t NGRN = 0; // Search ABI docs for NGRN
+    uint32_t NSRN = 0; // Search ABI docs for NSRN
+    const bool is_return_value = true;
+    if (LoadValueFromConsecutiveGPRRegisters(
+            exe_ctx, reg_ctx, return_compiler_type, is_return_value, NGRN, NSRN,
+            data)) {
+      return_valobj_sp = ValueObjectConstResult::Create(
+          &thread, return_compiler_type, ConstString(""), data);
     }
-    return return_valobj_sp;
+  }
+  return return_valobj_sp;
 }
 
-void
-ABISysV_arm64::Initialize()
-{
-    PluginManager::RegisterPlugin (GetPluginNameStatic(),
-                                   "SysV ABI for AArch64 targets",
-                                   CreateInstance);    
+void ABISysV_arm64::Initialize() {
+  PluginManager::RegisterPlugin(GetPluginNameStatic(),
+                                "SysV ABI for AArch64 targets", CreateInstance);
 }
 
-void
-ABISysV_arm64::Terminate()
-{
-    PluginManager::UnregisterPlugin (CreateInstance);
+void ABISysV_arm64::Terminate() {
+  PluginManager::UnregisterPlugin(CreateInstance);
 }
 
-lldb_private::ConstString
-ABISysV_arm64::GetPluginNameStatic()
-{
-    static ConstString g_name("SysV-arm64");
-    return g_name;
+lldb_private::ConstString ABISysV_arm64::GetPluginNameStatic() {
+  static ConstString g_name("SysV-arm64");
+  return g_name;
 }
 
 //------------------------------------------------------------------
 // PluginInterface protocol
 //------------------------------------------------------------------
 
-ConstString
-ABISysV_arm64::GetPluginName()
-{
-    return GetPluginNameStatic();
-}
+ConstString ABISysV_arm64::GetPluginName() { return GetPluginNameStatic(); }
 
-uint32_t
-ABISysV_arm64::GetPluginVersion()
-{
-    return 1;
-}
+uint32_t ABISysV_arm64::GetPluginVersion() { return 1; }

Modified: lldb/trunk/source/Plugins/ABI/SysV-arm64/ABISysV_arm64.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ABI/SysV-arm64/ABISysV_arm64.h?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ABI/SysV-arm64/ABISysV_arm64.h (original)
+++ lldb/trunk/source/Plugins/ABI/SysV-arm64/ABISysV_arm64.h Tue Sep  6 15:57:50 2016
@@ -14,114 +14,96 @@
 // C++ Includes
 // Other libraries and framework includes
 // Project includes
-#include "lldb/lldb-private.h"
 #include "lldb/Target/ABI.h"
+#include "lldb/lldb-private.h"
 
-class ABISysV_arm64 : public lldb_private::ABI
-{
+class ABISysV_arm64 : public lldb_private::ABI {
 public:
-    ~ABISysV_arm64() override = default;
+  ~ABISysV_arm64() override = default;
+
+  size_t GetRedZoneSize() const override;
+
+  bool PrepareTrivialCall(lldb_private::Thread &thread, lldb::addr_t sp,
+                          lldb::addr_t functionAddress,
+                          lldb::addr_t returnAddress,
+                          llvm::ArrayRef<lldb::addr_t> args) const override;
+
+  bool GetArgumentValues(lldb_private::Thread &thread,
+                         lldb_private::ValueList &values) const override;
+
+  lldb_private::Error
+  SetReturnValueObject(lldb::StackFrameSP &frame_sp,
+                       lldb::ValueObjectSP &new_value) override;
+
+  bool
+  CreateFunctionEntryUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
+
+  bool CreateDefaultUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
+
+  bool RegisterIsVolatile(const lldb_private::RegisterInfo *reg_info) override;
+
+  // The arm64 ABI requires that stack frames be 16 byte aligned.
+  // When there is a trap handler on the stack, e.g. _sigtramp in userland
+  // code, we've seen that the stack pointer is often not aligned properly
+  // before the handler is invoked.  This means that lldb will stop the unwind
+  // early -- before the function which caused the trap.
+  //
+  // To work around this, we relax that alignment to be just word-size
+  // (8-bytes).
+  // Whitelisting the trap handlers for user space would be easy (_sigtramp) but
+  // in other environments there can be a large number of different functions
+  // involved in async traps.
+  bool CallFrameAddressIsValid(lldb::addr_t cfa) override {
+    // Make sure the stack call frame addresses are are 8 byte aligned
+    if (cfa & (8ull - 1ull))
+      return false; // Not 8 byte aligned
+    if (cfa == 0)
+      return false; // Zero is not a valid stack address
+    return true;
+  }
+
+  bool CodeAddressIsValid(lldb::addr_t pc) override {
+    if (pc & (4ull - 1ull))
+      return false; // Not 4 byte aligned
+
+    // Anything else if fair game..
+    return true;
+  }
+
+  const lldb_private::RegisterInfo *
+  GetRegisterInfoArray(uint32_t &count) override;
+
+  bool GetPointerReturnRegister(const char *&name) override;
+
+  //------------------------------------------------------------------
+  // Static Functions
+  //------------------------------------------------------------------
+
+  static void Initialize();
+
+  static void Terminate();
+
+  static lldb::ABISP CreateInstance(const lldb_private::ArchSpec &arch);
+
+  static lldb_private::ConstString GetPluginNameStatic();
+
+  //------------------------------------------------------------------
+  // PluginInterface protocol
+  //------------------------------------------------------------------
+
+  lldb_private::ConstString GetPluginName() override;
 
-    size_t
-    GetRedZoneSize () const override;
+  uint32_t GetPluginVersion() override;
 
-    bool
-    PrepareTrivialCall (lldb_private::Thread &thread, 
-                        lldb::addr_t sp,
-                        lldb::addr_t functionAddress,
-                        lldb::addr_t returnAddress, 
-                        llvm::ArrayRef<lldb::addr_t> args) const override;
-
-    bool
-    GetArgumentValues (lldb_private::Thread &thread,
-                       lldb_private::ValueList &values) const override;
-
-    lldb_private::Error
-    SetReturnValueObject(lldb::StackFrameSP &frame_sp, lldb::ValueObjectSP &new_value) override;
-
-    bool
-    CreateFunctionEntryUnwindPlan (lldb_private::UnwindPlan &unwind_plan) override;
-
-    bool
-    CreateDefaultUnwindPlan (lldb_private::UnwindPlan &unwind_plan) override;
-    
-    bool
-    RegisterIsVolatile (const lldb_private::RegisterInfo *reg_info) override;
-
-    // The arm64 ABI requires that stack frames be 16 byte aligned.
-    // When there is a trap handler on the stack, e.g. _sigtramp in userland
-    // code, we've seen that the stack pointer is often not aligned properly
-    // before the handler is invoked.  This means that lldb will stop the unwind
-    // early -- before the function which caused the trap.
-    //
-    // To work around this, we relax that alignment to be just word-size (8-bytes).
-    // Whitelisting the trap handlers for user space would be easy (_sigtramp) but
-    // in other environments there can be a large number of different functions
-    // involved in async traps.
-    bool
-    CallFrameAddressIsValid (lldb::addr_t cfa) override
-    {
-        // Make sure the stack call frame addresses are are 8 byte aligned
-        if (cfa & (8ull - 1ull))
-            return false;   // Not 8 byte aligned
-        if (cfa == 0)
-            return false;   // Zero is not a valid stack address
-        return true;
-    }
-    
-    bool
-    CodeAddressIsValid (lldb::addr_t pc) override
-    {
-        if (pc & (4ull - 1ull))
-            return false;   // Not 4 byte aligned
-        
-        // Anything else if fair game..
-        return true;
-    }
-
-    const lldb_private::RegisterInfo *
-    GetRegisterInfoArray (uint32_t &count) override;
-    
-    bool
-    GetPointerReturnRegister (const char *&name) override;
-
-    //------------------------------------------------------------------
-    // Static Functions
-    //------------------------------------------------------------------
-
-    static void
-    Initialize();
-    
-    static void
-    Terminate();
-    
-    static lldb::ABISP
-    CreateInstance (const lldb_private::ArchSpec &arch);
-    
-    static lldb_private::ConstString
-    GetPluginNameStatic();
-    
-    //------------------------------------------------------------------
-    // PluginInterface protocol
-    //------------------------------------------------------------------
-
-    lldb_private::ConstString
-    GetPluginName() override;
-    
-    uint32_t
-    GetPluginVersion() override;
-    
 protected:
-    lldb::ValueObjectSP
-    GetReturnValueObjectImpl(lldb_private::Thread &thread,
-                             lldb_private::CompilerType &ast_type) const override;
+  lldb::ValueObjectSP
+  GetReturnValueObjectImpl(lldb_private::Thread &thread,
+                           lldb_private::CompilerType &ast_type) const override;
 
 private:
-    ABISysV_arm64() : 
-        lldb_private::ABI() 
-    {
-         // Call CreateInstance instead.
-    }
+  ABISysV_arm64() : lldb_private::ABI() {
+    // Call CreateInstance instead.
+  }
 };
 
 #endif // liblldb_ABISysV_arm64_h_

Modified: lldb/trunk/source/Plugins/ABI/SysV-hexagon/ABISysV_hexagon.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ABI/SysV-hexagon/ABISysV_hexagon.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ABI/SysV-hexagon/ABISysV_hexagon.cpp (original)
+++ lldb/trunk/source/Plugins/ABI/SysV-hexagon/ABISysV_hexagon.cpp Tue Sep  6 15:57:50 2016
@@ -25,190 +25,1023 @@
 #include "lldb/Core/RegisterValue.h"
 #include "lldb/Core/Value.h"
 #include "lldb/Core/ValueObjectConstResult.h"
-#include "lldb/Core/ValueObjectRegister.h"
 #include "lldb/Core/ValueObjectMemory.h"
+#include "lldb/Core/ValueObjectRegister.h"
 #include "lldb/Symbol/UnwindPlan.h"
-#include "lldb/Target/Target.h"
 #include "lldb/Target/Process.h"
 #include "lldb/Target/RegisterContext.h"
 #include "lldb/Target/StackFrame.h"
+#include "lldb/Target/Target.h"
 #include "lldb/Target/Thread.h"
 
 using namespace lldb;
 using namespace lldb_private;
 
-static RegisterInfo g_register_infos[] = 
-{
+static RegisterInfo g_register_infos[] = {
     // hexagon-core.xml
-    { "r00"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, {  0,  0, LLDB_INVALID_REGNUM,     0,  0 }, nullptr, nullptr, nullptr, 0 },
-    { "r01"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, {  1,  1, LLDB_INVALID_REGNUM,     1,  1 }, nullptr, nullptr, nullptr, 0 },
-    { "r02"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, {  2,  2, LLDB_INVALID_REGNUM,     2,  2 }, nullptr, nullptr, nullptr, 0 },
-    { "r03"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, {  3,  3, LLDB_INVALID_REGNUM,     3,  3 }, nullptr, nullptr, nullptr, 0 },
-    { "r04"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, {  4,  4, LLDB_INVALID_REGNUM,     4,  4 }, nullptr, nullptr, nullptr, 0 },
-    { "r05"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, {  5,  5, LLDB_INVALID_REGNUM,     5,  5 }, nullptr, nullptr, nullptr, 0 },
-    { "r06"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, {  6,  6, LLDB_INVALID_REGNUM,     6,  6 }, nullptr, nullptr, nullptr, 0 },
-    { "r07"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, {  7,  7, LLDB_INVALID_REGNUM,     7,  7 }, nullptr, nullptr, nullptr, 0 },
-    { "r08"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, {  8,  8, LLDB_INVALID_REGNUM,     8,  8 }, nullptr, nullptr, nullptr, 0 },
-    { "r09"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, {  9,  9, LLDB_INVALID_REGNUM,     9,  9 }, nullptr, nullptr, nullptr, 0 },
-    { "r10"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 10, 10, LLDB_INVALID_REGNUM,    10, 10 }, nullptr, nullptr, nullptr, 0 },
-    { "r11"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 11, 11, LLDB_INVALID_REGNUM,    11, 11 }, nullptr, nullptr, nullptr, 0 },
-    { "r12"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 12, 12, LLDB_INVALID_REGNUM,    12, 12 }, nullptr, nullptr, nullptr, 0 },
-    { "r13"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 13, 13, LLDB_INVALID_REGNUM,    13, 13 }, nullptr, nullptr, nullptr, 0 },
-    { "r14"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 14, 14, LLDB_INVALID_REGNUM,    14, 14 }, nullptr, nullptr, nullptr, 0 },
-    { "r15"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 15, 15, LLDB_INVALID_REGNUM,    15, 15 }, nullptr, nullptr, nullptr, 0 },
-    { "r16"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 16, 16, LLDB_INVALID_REGNUM,    16, 16 }, nullptr, nullptr, nullptr, 0 },
-    { "r17"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 17, 17, LLDB_INVALID_REGNUM,    17, 17 }, nullptr, nullptr, nullptr, 0 },
-    { "r18"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 18, 18, LLDB_INVALID_REGNUM,    18, 18 }, nullptr, nullptr, nullptr, 0 },
-    { "r19"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 19, 19, LLDB_INVALID_REGNUM,    19, 19 }, nullptr, nullptr, nullptr, 0 },
-    { "r20"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 20, 20, LLDB_INVALID_REGNUM,    20, 20 }, nullptr, nullptr, nullptr, 0 },
-    { "r21"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 21, 21, LLDB_INVALID_REGNUM,    21, 21 }, nullptr, nullptr, nullptr, 0 },
-    { "r22"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 22, 22, LLDB_INVALID_REGNUM,    22, 22 }, nullptr, nullptr, nullptr, 0 },
-    { "r23"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 23, 23, LLDB_INVALID_REGNUM,    23, 23 }, nullptr, nullptr, nullptr, 0 },
-    { "r24"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 24, 24, LLDB_INVALID_REGNUM,    24, 24 }, nullptr, nullptr, nullptr, 0 },
-    { "r25"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 25, 25, LLDB_INVALID_REGNUM,    25, 25 }, nullptr, nullptr, nullptr, 0 },
-    { "r26"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 26, 26, LLDB_INVALID_REGNUM,    26, 26 }, nullptr, nullptr, nullptr, 0 },
-    { "r27"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 27, 27, LLDB_INVALID_REGNUM,    27, 27 }, nullptr, nullptr, nullptr, 0 },
-    { "r28"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 28, 28, LLDB_INVALID_REGNUM,    28, 28 }, nullptr, nullptr, nullptr, 0 },
-    { "sp"  ,"r29", 4, 0, eEncodingUint, eFormatAddressInfo, { 29, 29, LLDB_REGNUM_GENERIC_SP, 29, 29 }, nullptr, nullptr, nullptr, 0 },
-    { "fp"  ,"r30", 4, 0, eEncodingUint, eFormatAddressInfo, { 30, 30, LLDB_REGNUM_GENERIC_FP, 30, 30 }, nullptr, nullptr, nullptr, 0 },
-    { "lr"  ,"r31", 4, 0, eEncodingUint, eFormatAddressInfo, { 31, 31, LLDB_REGNUM_GENERIC_RA, 31, 31 }, nullptr, nullptr, nullptr, 0 },
-    { "sa0"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 32, 32, LLDB_INVALID_REGNUM,    32, 32 }, nullptr, nullptr, nullptr, 0 },
-    { "lc0"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 33, 33, LLDB_INVALID_REGNUM,    33, 33 }, nullptr, nullptr, nullptr, 0 },
-    { "sa1"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 34, 34, LLDB_INVALID_REGNUM,    34, 34 }, nullptr, nullptr, nullptr, 0 },
-    { "lc1"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 35, 35, LLDB_INVALID_REGNUM,    35, 35 }, nullptr, nullptr, nullptr, 0 },
+    {"r00",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {0, 0, LLDB_INVALID_REGNUM, 0, 0},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r01",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {1, 1, LLDB_INVALID_REGNUM, 1, 1},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r02",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {2, 2, LLDB_INVALID_REGNUM, 2, 2},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r03",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {3, 3, LLDB_INVALID_REGNUM, 3, 3},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r04",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {4, 4, LLDB_INVALID_REGNUM, 4, 4},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r05",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {5, 5, LLDB_INVALID_REGNUM, 5, 5},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r06",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {6, 6, LLDB_INVALID_REGNUM, 6, 6},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r07",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {7, 7, LLDB_INVALID_REGNUM, 7, 7},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r08",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {8, 8, LLDB_INVALID_REGNUM, 8, 8},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r09",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {9, 9, LLDB_INVALID_REGNUM, 9, 9},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r10",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {10, 10, LLDB_INVALID_REGNUM, 10, 10},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r11",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {11, 11, LLDB_INVALID_REGNUM, 11, 11},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r12",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {12, 12, LLDB_INVALID_REGNUM, 12, 12},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r13",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {13, 13, LLDB_INVALID_REGNUM, 13, 13},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r14",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {14, 14, LLDB_INVALID_REGNUM, 14, 14},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r15",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {15, 15, LLDB_INVALID_REGNUM, 15, 15},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r16",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {16, 16, LLDB_INVALID_REGNUM, 16, 16},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r17",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {17, 17, LLDB_INVALID_REGNUM, 17, 17},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r18",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {18, 18, LLDB_INVALID_REGNUM, 18, 18},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r19",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {19, 19, LLDB_INVALID_REGNUM, 19, 19},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r20",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {20, 20, LLDB_INVALID_REGNUM, 20, 20},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r21",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {21, 21, LLDB_INVALID_REGNUM, 21, 21},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r22",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {22, 22, LLDB_INVALID_REGNUM, 22, 22},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r23",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {23, 23, LLDB_INVALID_REGNUM, 23, 23},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r24",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {24, 24, LLDB_INVALID_REGNUM, 24, 24},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r25",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {25, 25, LLDB_INVALID_REGNUM, 25, 25},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r26",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {26, 26, LLDB_INVALID_REGNUM, 26, 26},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r27",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {27, 27, LLDB_INVALID_REGNUM, 27, 27},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"r28",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {28, 28, LLDB_INVALID_REGNUM, 28, 28},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"sp",
+     "r29",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {29, 29, LLDB_REGNUM_GENERIC_SP, 29, 29},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"fp",
+     "r30",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {30, 30, LLDB_REGNUM_GENERIC_FP, 30, 30},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"lr",
+     "r31",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {31, 31, LLDB_REGNUM_GENERIC_RA, 31, 31},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"sa0",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {32, 32, LLDB_INVALID_REGNUM, 32, 32},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"lc0",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {33, 33, LLDB_INVALID_REGNUM, 33, 33},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"sa1",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {34, 34, LLDB_INVALID_REGNUM, 34, 34},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"lc1",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {35, 35, LLDB_INVALID_REGNUM, 35, 35},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
     // --> hexagon-v4/5/55/56-sim.xml
-    { "p3_0"  , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 36, 36, LLDB_INVALID_REGNUM,    36, 36 }, nullptr, nullptr, nullptr, 0 },
-// PADDING {
-    { "p00"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 37, 37, LLDB_INVALID_REGNUM,    37, 37 }, nullptr, nullptr, nullptr, 0 },
-// }
-    { "m0"    , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 38, 38, LLDB_INVALID_REGNUM,    38, 38 }, nullptr, nullptr, nullptr, 0 },
-    { "m1"    , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 39, 39, LLDB_INVALID_REGNUM,    39, 39 }, nullptr, nullptr, nullptr, 0 },
-    { "usr"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 40, 40, LLDB_INVALID_REGNUM,    40, 40 }, nullptr, nullptr, nullptr, 0 },
-    { "pc"    , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 41, 41, LLDB_REGNUM_GENERIC_PC, 41, 41 }, nullptr, nullptr, nullptr, 0 },
-    { "ugp"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 42, 42, LLDB_INVALID_REGNUM,    42, 42 }, nullptr, nullptr, nullptr, 0 },
-    { "gp"    , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 43, 43, LLDB_INVALID_REGNUM,    43, 43 }, nullptr, nullptr, nullptr, 0 },
-    { "cs0"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 44, 44, LLDB_INVALID_REGNUM,    44, 44 }, nullptr, nullptr, nullptr, 0 },
-    { "cs1"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 45, 45, LLDB_INVALID_REGNUM,    45, 45 }, nullptr, nullptr, nullptr, 0 },
-// PADDING {
-    { "p01"   , "", 4, 0, eEncodingInvalid, eFormatInvalid,     { 46, 46, LLDB_INVALID_REGNUM,    46, 46 }, nullptr, nullptr, nullptr, 0 },
-    { "p02"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 47, 47, LLDB_INVALID_REGNUM,    47, 47 }, nullptr, nullptr, nullptr, 0 },
-    { "p03"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 48, 48, LLDB_INVALID_REGNUM,    48, 48 }, nullptr, nullptr, nullptr, 0 },
-    { "p04"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 49, 49, LLDB_INVALID_REGNUM,    49, 49 }, nullptr, nullptr, nullptr, 0 },
-    { "p05"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 50, 50, LLDB_INVALID_REGNUM,    50, 50 }, nullptr, nullptr, nullptr, 0 },
-    { "p06"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 51, 51, LLDB_INVALID_REGNUM,    51, 51 }, nullptr, nullptr, nullptr, 0 },
-    { "p07"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 52, 52, LLDB_INVALID_REGNUM,    52, 52 }, nullptr, nullptr, nullptr, 0 },
-    { "p08"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 53, 53, LLDB_INVALID_REGNUM,    53, 53 }, nullptr, nullptr, nullptr, 0 },
-    { "p09"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 54, 54, LLDB_INVALID_REGNUM,    54, 54 }, nullptr, nullptr, nullptr, 0 },
-    { "p10"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 55, 55, LLDB_INVALID_REGNUM,    55, 55 }, nullptr, nullptr, nullptr, 0 },
-    { "p11"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 56, 56, LLDB_INVALID_REGNUM,    56, 56 }, nullptr, nullptr, nullptr, 0 },
-    { "p12"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 57, 57, LLDB_INVALID_REGNUM,    57, 57 }, nullptr, nullptr, nullptr, 0 },
-    { "p13"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 58, 58, LLDB_INVALID_REGNUM,    58, 58 }, nullptr, nullptr, nullptr, 0 },
-    { "p14"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 59, 59, LLDB_INVALID_REGNUM,    59, 59 }, nullptr, nullptr, nullptr, 0 },
-    { "p15"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 60, 60, LLDB_INVALID_REGNUM,    60, 60 }, nullptr, nullptr, nullptr, 0 },
-    { "p16"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 61, 61, LLDB_INVALID_REGNUM,    61, 61 }, nullptr, nullptr, nullptr, 0 },
-    { "p17"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 62, 62, LLDB_INVALID_REGNUM,    62, 62 }, nullptr, nullptr, nullptr, 0 },
-    { "p18"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 63, 63, LLDB_INVALID_REGNUM,    63, 63 }, nullptr, nullptr, nullptr, 0 },
-// }
-    { "sgp0"  , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 64, 64, LLDB_INVALID_REGNUM,    64, 64 }, nullptr, nullptr, nullptr, 0 },
-// PADDING {
-    { "p19"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 65, 65, LLDB_INVALID_REGNUM,    65, 65 }, nullptr, nullptr, nullptr, 0 },
-// }
-    { "stid"  , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 66, 66, LLDB_INVALID_REGNUM,    66, 66 }, nullptr, nullptr, nullptr, 0 },
-    { "elr"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 67, 67, LLDB_INVALID_REGNUM,    67, 67 }, nullptr, nullptr, nullptr, 0 },
-    { "badva0", "", 4, 0, eEncodingUint, eFormatAddressInfo, { 68, 68, LLDB_INVALID_REGNUM,    68, 68 }, nullptr, nullptr, nullptr, 0 },
-    { "badva1", "", 4, 0, eEncodingUint, eFormatAddressInfo, { 69, 69, LLDB_INVALID_REGNUM,    69, 69 }, nullptr, nullptr, nullptr, 0 },
-    { "ssr"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 70, 70, LLDB_INVALID_REGNUM,    70, 70 }, nullptr, nullptr, nullptr, 0 },
-    { "ccr"   , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 71, 71, LLDB_INVALID_REGNUM,    71, 71 }, nullptr, nullptr, nullptr, 0 },
-    { "htid"  , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 72, 72, LLDB_INVALID_REGNUM,    72, 72 }, nullptr, nullptr, nullptr, 0 },
-// PADDING {
-    { "p20"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 73, 73, LLDB_INVALID_REGNUM,    73, 73 }, nullptr, nullptr, nullptr, 0 },
-// }
-    { "imask" , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 74, 74, LLDB_INVALID_REGNUM,    74, 74 }, nullptr, nullptr, nullptr, 0 },
-// PADDING {
-    { "p21"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 75, 75, LLDB_INVALID_REGNUM,    75, 75 }, nullptr, nullptr, nullptr, 0 },
-    { "p22"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 76, 76, LLDB_INVALID_REGNUM,    76, 76 }, nullptr, nullptr, nullptr, 0 },
-    { "p23"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 77, 77, LLDB_INVALID_REGNUM,    77, 77 }, nullptr, nullptr, nullptr, 0 },
-    { "p24"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 78, 78, LLDB_INVALID_REGNUM,    78, 78 }, nullptr, nullptr, nullptr, 0 },
-    { "p25"   , "", 4, 0, eEncodingInvalid, eFormatInvalid, { 79, 79, LLDB_INVALID_REGNUM,    79, 79 }, nullptr, nullptr, nullptr, 0 },
- // }
-    { "g0"    , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 80, 80, LLDB_INVALID_REGNUM,    80, 80 }, nullptr, nullptr, nullptr, 0 },
-    { "g1"    , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 81, 81, LLDB_INVALID_REGNUM,    81, 81 }, nullptr, nullptr, nullptr, 0 },
-    { "g2"    , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 82, 82, LLDB_INVALID_REGNUM,    82, 82 }, nullptr, nullptr, nullptr, 0 },
-    { "g3"    , "", 4, 0, eEncodingUint, eFormatAddressInfo, { 83, 83, LLDB_INVALID_REGNUM,    83, 83 }, nullptr, nullptr, nullptr, 0 }
-};
+    {"p3_0",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {36, 36, LLDB_INVALID_REGNUM, 36, 36},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    // PADDING {
+    {"p00",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {37, 37, LLDB_INVALID_REGNUM, 37, 37},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    // }
+    {"m0",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {38, 38, LLDB_INVALID_REGNUM, 38, 38},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"m1",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {39, 39, LLDB_INVALID_REGNUM, 39, 39},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"usr",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {40, 40, LLDB_INVALID_REGNUM, 40, 40},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"pc",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {41, 41, LLDB_REGNUM_GENERIC_PC, 41, 41},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ugp",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {42, 42, LLDB_INVALID_REGNUM, 42, 42},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"gp",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {43, 43, LLDB_INVALID_REGNUM, 43, 43},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"cs0",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {44, 44, LLDB_INVALID_REGNUM, 44, 44},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"cs1",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {45, 45, LLDB_INVALID_REGNUM, 45, 45},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    // PADDING {
+    {"p01",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {46, 46, LLDB_INVALID_REGNUM, 46, 46},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"p02",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {47, 47, LLDB_INVALID_REGNUM, 47, 47},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"p03",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {48, 48, LLDB_INVALID_REGNUM, 48, 48},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"p04",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {49, 49, LLDB_INVALID_REGNUM, 49, 49},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"p05",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {50, 50, LLDB_INVALID_REGNUM, 50, 50},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"p06",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {51, 51, LLDB_INVALID_REGNUM, 51, 51},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"p07",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {52, 52, LLDB_INVALID_REGNUM, 52, 52},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"p08",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {53, 53, LLDB_INVALID_REGNUM, 53, 53},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"p09",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {54, 54, LLDB_INVALID_REGNUM, 54, 54},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"p10",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {55, 55, LLDB_INVALID_REGNUM, 55, 55},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"p11",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {56, 56, LLDB_INVALID_REGNUM, 56, 56},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"p12",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {57, 57, LLDB_INVALID_REGNUM, 57, 57},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"p13",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {58, 58, LLDB_INVALID_REGNUM, 58, 58},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"p14",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {59, 59, LLDB_INVALID_REGNUM, 59, 59},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"p15",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {60, 60, LLDB_INVALID_REGNUM, 60, 60},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"p16",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {61, 61, LLDB_INVALID_REGNUM, 61, 61},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"p17",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {62, 62, LLDB_INVALID_REGNUM, 62, 62},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"p18",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {63, 63, LLDB_INVALID_REGNUM, 63, 63},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    // }
+    {"sgp0",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {64, 64, LLDB_INVALID_REGNUM, 64, 64},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    // PADDING {
+    {"p19",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {65, 65, LLDB_INVALID_REGNUM, 65, 65},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    // }
+    {"stid",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {66, 66, LLDB_INVALID_REGNUM, 66, 66},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"elr",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {67, 67, LLDB_INVALID_REGNUM, 67, 67},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"badva0",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {68, 68, LLDB_INVALID_REGNUM, 68, 68},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"badva1",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {69, 69, LLDB_INVALID_REGNUM, 69, 69},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ssr",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {70, 70, LLDB_INVALID_REGNUM, 70, 70},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ccr",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {71, 71, LLDB_INVALID_REGNUM, 71, 71},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"htid",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {72, 72, LLDB_INVALID_REGNUM, 72, 72},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    // PADDING {
+    {"p20",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {73, 73, LLDB_INVALID_REGNUM, 73, 73},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    // }
+    {"imask",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {74, 74, LLDB_INVALID_REGNUM, 74, 74},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    // PADDING {
+    {"p21",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {75, 75, LLDB_INVALID_REGNUM, 75, 75},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"p22",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {76, 76, LLDB_INVALID_REGNUM, 76, 76},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"p23",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {77, 77, LLDB_INVALID_REGNUM, 77, 77},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"p24",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {78, 78, LLDB_INVALID_REGNUM, 78, 78},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"p25",
+     "",
+     4,
+     0,
+     eEncodingInvalid,
+     eFormatInvalid,
+     {79, 79, LLDB_INVALID_REGNUM, 79, 79},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    // }
+    {"g0",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {80, 80, LLDB_INVALID_REGNUM, 80, 80},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"g1",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {81, 81, LLDB_INVALID_REGNUM, 81, 81},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"g2",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {82, 82, LLDB_INVALID_REGNUM, 82, 82},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"g3",
+     "",
+     4,
+     0,
+     eEncodingUint,
+     eFormatAddressInfo,
+     {83, 83, LLDB_INVALID_REGNUM, 83, 83},
+     nullptr,
+     nullptr,
+     nullptr,
+     0}};
 
-static const uint32_t k_num_register_infos = sizeof(g_register_infos)/sizeof(RegisterInfo);
+static const uint32_t k_num_register_infos =
+    sizeof(g_register_infos) / sizeof(RegisterInfo);
 static bool g_register_info_names_constified = false;
 
 const lldb_private::RegisterInfo *
-ABISysV_hexagon::GetRegisterInfoArray ( uint32_t &count )
-{
-    // Make the C-string names and alt_names for the register infos into const 
-    // C-string values by having the ConstString unique the names in the global
-    // constant C-string pool.
-    if (!g_register_info_names_constified)
-    {
-        g_register_info_names_constified = true;
-        for (uint32_t i=0; i<k_num_register_infos; ++i)
-        {
-            if (g_register_infos[i].name)
-                g_register_infos[i].name = ConstString(g_register_infos[i].name).GetCString();
-            if (g_register_infos[i].alt_name)
-                g_register_infos[i].alt_name = ConstString(g_register_infos[i].alt_name).GetCString();
-        }
+ABISysV_hexagon::GetRegisterInfoArray(uint32_t &count) {
+  // Make the C-string names and alt_names for the register infos into const
+  // C-string values by having the ConstString unique the names in the global
+  // constant C-string pool.
+  if (!g_register_info_names_constified) {
+    g_register_info_names_constified = true;
+    for (uint32_t i = 0; i < k_num_register_infos; ++i) {
+      if (g_register_infos[i].name)
+        g_register_infos[i].name =
+            ConstString(g_register_infos[i].name).GetCString();
+      if (g_register_infos[i].alt_name)
+        g_register_infos[i].alt_name =
+            ConstString(g_register_infos[i].alt_name).GetCString();
     }
-    count = k_num_register_infos;
-    return g_register_infos;
+  }
+  count = k_num_register_infos;
+  return g_register_infos;
 }
 
 /*
     http://en.wikipedia.org/wiki/Red_zone_%28computing%29
 
-    In computing, a red zone is a fixed size area in memory beyond the stack pointer that has not been
-    "allocated". This region of memory is not to be modified by interrupt/exception/signal handlers.
-    This allows the space to be used for temporary data without the extra overhead of modifying the
-    stack pointer. The x86-64 ABI mandates a 128 byte red zone.[1] The OpenRISC toolchain assumes a
+    In computing, a red zone is a fixed size area in memory beyond the stack
+   pointer that has not been
+    "allocated". This region of memory is not to be modified by
+   interrupt/exception/signal handlers.
+    This allows the space to be used for temporary data without the extra
+   overhead of modifying the
+    stack pointer. The x86-64 ABI mandates a 128 byte red zone.[1] The OpenRISC
+   toolchain assumes a
     128 byte red zone though it is not documented.
 */
-size_t
-ABISysV_hexagon::GetRedZoneSize () const
-{
-    return 0;
-}
+size_t ABISysV_hexagon::GetRedZoneSize() const { return 0; }
 
 //------------------------------------------------------------------
 // Static Functions
 //------------------------------------------------------------------
 
 ABISP
-ABISysV_hexagon::CreateInstance ( const ArchSpec &arch )
-{
-    static ABISP g_abi_sp;
-    if (arch.GetTriple().getArch() == llvm::Triple::hexagon)
-    {
-        if (!g_abi_sp)
-            g_abi_sp.reset (new ABISysV_hexagon);
-        return g_abi_sp;
-    }
-    return ABISP();
+ABISysV_hexagon::CreateInstance(const ArchSpec &arch) {
+  static ABISP g_abi_sp;
+  if (arch.GetTriple().getArch() == llvm::Triple::hexagon) {
+    if (!g_abi_sp)
+      g_abi_sp.reset(new ABISysV_hexagon);
+    return g_abi_sp;
+  }
+  return ABISP();
 }
 
-bool
-ABISysV_hexagon::PrepareTrivialCall ( Thread &thread, 
-                                      lldb::addr_t  sp    , 
-                                      lldb::addr_t  pc    , 
-                                      lldb::addr_t  ra    , 
-                                      llvm::ArrayRef<addr_t> args ) const
-{
-    // we don't use the traditional trivial call specialized for jit
-    return false;
+bool ABISysV_hexagon::PrepareTrivialCall(Thread &thread, lldb::addr_t sp,
+                                         lldb::addr_t pc, lldb::addr_t ra,
+                                         llvm::ArrayRef<addr_t> args) const {
+  // we don't use the traditional trivial call specialized for jit
+  return false;
 }
 
 /*
 
 // AD:
 //  . safeguard the current stack
-//  . how can we know that the called function will create its own frame properly?
+//  . how can we know that the called function will create its own frame
+properly?
 //  . we could manually make a new stack first:
 //      2. push RA
 //      3. push FP
@@ -216,11 +1049,15 @@ ABISysV_hexagon::PrepareTrivialCall ( Th
 //      5. SP = SP ( since no locals in our temp frame )
 
 // AD 6/05/2014
-//  . variable argument list parameters are not passed via registers, they are passed on
-//    the stack.  This presents us with a problem, since we need to know when the valist
+//  . variable argument list parameters are not passed via registers, they are
+passed on
+//    the stack.  This presents us with a problem, since we need to know when
+the valist
 //    starts.  Currently I can find out if a function is varg, but not how many
-//    real parameters it takes.  Thus I don't know when to start spilling the vargs.  For
-//    the time being, to progress, I will assume that it takes on real parameter before
+//    real parameters it takes.  Thus I don't know when to start spilling the
+vargs.  For
+//    the time being, to progress, I will assume that it takes on real parameter
+before
 //    the vargs list starts.
 
 // AD 06/05/2014
@@ -231,208 +1068,195 @@ ABISysV_hexagon::PrepareTrivialCall ( Th
 
 */
 #define HEX_ABI_DEBUG 0
-bool
-ABISysV_hexagon::PrepareTrivialCall ( Thread &thread, 
-                                      lldb::addr_t  sp  , 
-                                      lldb::addr_t  pc  , 
-                                      lldb::addr_t  ra  , 
-                                      llvm::Type   &prototype,
-                                      llvm::ArrayRef<ABI::CallArgument> args) const
-{
-    // default number of register passed arguments for varg functions
-    const int nVArgRegParams = 1;
-    Error error;
-
-    // grab the process so we have access to the memory for spilling
-    lldb::ProcessSP proc = thread.GetProcess( );
-
-    // get the register context for modifying all of the registers
-    RegisterContext *reg_ctx = thread.GetRegisterContext().get();
-    if (!reg_ctx)
-        return false;
-    
-    uint32_t pc_reg = reg_ctx->ConvertRegisterKindToRegisterNumber(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC);
-    if (pc_reg == LLDB_INVALID_REGNUM)
-        return false;
-
-    uint32_t ra_reg = reg_ctx->ConvertRegisterKindToRegisterNumber(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_RA);
-    if (ra_reg == LLDB_INVALID_REGNUM)
-        return false;
-
-    uint32_t sp_reg = reg_ctx->ConvertRegisterKindToRegisterNumber(eRegisterKindGeneric, LLDB_REGNUM_GENERIC_SP);
-    if (sp_reg == LLDB_INVALID_REGNUM)
-        return false;
-
-    // push host data onto target
-    for ( size_t i = 0; i < args.size( ); i++ )
-    {
-        const ABI::CallArgument &arg = args[i];
-        // skip over target values
-        if ( arg.type == ABI::CallArgument::TargetValue )
-            continue;
-        // round up to 8 byte multiple
-        size_t argSize = ( arg.size | 0x7 ) + 1;
-
-        // create space on the stack for this data
-        sp -= argSize;
-
-        // write this argument onto the stack of the host process
-        proc->WriteMemory( sp, arg.data_ap.get(), arg.size, error );
-        if ( error.Fail( ) )
-            return false;
-
-        // update the argument with the target pointer
-        //XXX: This is a gross hack for getting around the const
-        *const_cast<lldb::addr_t*>(&arg.value) = sp;
-    }
+bool ABISysV_hexagon::PrepareTrivialCall(
+    Thread &thread, lldb::addr_t sp, lldb::addr_t pc, lldb::addr_t ra,
+    llvm::Type &prototype, llvm::ArrayRef<ABI::CallArgument> args) const {
+  // default number of register passed arguments for varg functions
+  const int nVArgRegParams = 1;
+  Error error;
+
+  // grab the process so we have access to the memory for spilling
+  lldb::ProcessSP proc = thread.GetProcess();
+
+  // get the register context for modifying all of the registers
+  RegisterContext *reg_ctx = thread.GetRegisterContext().get();
+  if (!reg_ctx)
+    return false;
+
+  uint32_t pc_reg = reg_ctx->ConvertRegisterKindToRegisterNumber(
+      eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC);
+  if (pc_reg == LLDB_INVALID_REGNUM)
+    return false;
+
+  uint32_t ra_reg = reg_ctx->ConvertRegisterKindToRegisterNumber(
+      eRegisterKindGeneric, LLDB_REGNUM_GENERIC_RA);
+  if (ra_reg == LLDB_INVALID_REGNUM)
+    return false;
+
+  uint32_t sp_reg = reg_ctx->ConvertRegisterKindToRegisterNumber(
+      eRegisterKindGeneric, LLDB_REGNUM_GENERIC_SP);
+  if (sp_reg == LLDB_INVALID_REGNUM)
+    return false;
+
+  // push host data onto target
+  for (size_t i = 0; i < args.size(); i++) {
+    const ABI::CallArgument &arg = args[i];
+    // skip over target values
+    if (arg.type == ABI::CallArgument::TargetValue)
+      continue;
+    // round up to 8 byte multiple
+    size_t argSize = (arg.size | 0x7) + 1;
+
+    // create space on the stack for this data
+    sp -= argSize;
+
+    // write this argument onto the stack of the host process
+    proc->WriteMemory(sp, arg.data_ap.get(), arg.size, error);
+    if (error.Fail())
+      return false;
+
+    // update the argument with the target pointer
+    // XXX: This is a gross hack for getting around the const
+    *const_cast<lldb::addr_t *>(&arg.value) = sp;
+  }
 
 #if HEX_ABI_DEBUG
-    // print the original stack pointer
-    printf( "sp : %04" PRIx64 " \n", sp );
+  // print the original stack pointer
+  printf("sp : %04" PRIx64 " \n", sp);
 #endif
 
-    // make sure number of parameters matches prototype
-    assert( prototype.getFunctionNumParams( ) == args.size( ) );
+  // make sure number of parameters matches prototype
+  assert(prototype.getFunctionNumParams() == args.size());
 
-    // check if this is a variable argument function
-    bool isVArg = prototype.isFunctionVarArg();
+  // check if this is a variable argument function
+  bool isVArg = prototype.isFunctionVarArg();
 
-    // number of arguments passed by register
-    int nRegArgs = nVArgRegParams;
-    if (! isVArg )
-    {
-        // number of arguments is limited by [R0 : R5] space
-        nRegArgs = args.size( );
-        if ( nRegArgs > 6 )
-            nRegArgs = 6;
-    }
+  // number of arguments passed by register
+  int nRegArgs = nVArgRegParams;
+  if (!isVArg) {
+    // number of arguments is limited by [R0 : R5] space
+    nRegArgs = args.size();
+    if (nRegArgs > 6)
+      nRegArgs = 6;
+  }
+
+  // pass arguments that are passed via registers
+  for (int i = 0; i < nRegArgs; i++) {
+    // get the parameter as a u32
+    uint32_t param = (uint32_t)args[i].value;
+    // write argument into register
+    if (!reg_ctx->WriteRegisterFromUnsigned(i, param))
+      return false;
+  }
+
+  // number of arguments to spill onto stack
+  int nSpillArgs = args.size() - nRegArgs;
+  // make space on the stack for arguments
+  sp -= 4 * nSpillArgs;
+  // align stack on an 8 byte boundary
+  if (sp & 7)
+    sp -= 4;
+
+  // arguments that are passed on the stack
+  for (size_t i = nRegArgs, offs = 0; i < args.size(); i++) {
+    // get the parameter as a u32
+    uint32_t param = (uint32_t)args[i].value;
+    // write argument to stack
+    proc->WriteMemory(sp + offs, (void *)&param, sizeof(param), error);
+    if (!error.Success())
+      return false;
+    //
+    offs += 4;
+  }
+
+  // update registers with current function call state
+  reg_ctx->WriteRegisterFromUnsigned(pc_reg, pc);
+  reg_ctx->WriteRegisterFromUnsigned(ra_reg, ra);
+  reg_ctx->WriteRegisterFromUnsigned(sp_reg, sp);
 
-    // pass arguments that are passed via registers
-    for ( int i = 0; i < nRegArgs; i++ )
-    {
-        // get the parameter as a u32
-        uint32_t param = (uint32_t)args[i].value;
-        // write argument into register
-        if (!reg_ctx->WriteRegisterFromUnsigned( i, param ))
-            return false;
-    }
+#if HEX_ABI_DEBUG
+  // quick and dirty stack dumper for debugging
+  for (int i = -8; i < 8; i++) {
+    uint32_t data = 0;
+    lldb::addr_t addr = sp + i * 4;
+    proc->ReadMemory(addr, (void *)&data, sizeof(data), error);
+    printf("\n0x%04" PRIx64 " 0x%08x ", addr, data);
+    if (i == 0)
+      printf("<<-- sp");
+  }
+  printf("\n");
+#endif
 
-    // number of arguments to spill onto stack
-    int nSpillArgs = args.size( ) - nRegArgs;
-    // make space on the stack for arguments
-    sp -= 4 * nSpillArgs;
-    // align stack on an 8 byte boundary
-    if ( sp & 7 )
-        sp -= 4;
-
-    // arguments that are passed on the stack
-    for ( size_t i = nRegArgs, offs=0; i < args.size( ); i++ )
-    {
-        // get the parameter as a u32
-        uint32_t param = (uint32_t)args[i].value;
-        // write argument to stack
-        proc->WriteMemory( sp + offs, (void*)&param, sizeof( param ), error );
-        if ( !error.Success( ) )
-            return false;
-        // 
-        offs += 4;
-    }
+  return true;
+}
 
-    // update registers with current function call state
-    reg_ctx->WriteRegisterFromUnsigned(pc_reg, pc);
-    reg_ctx->WriteRegisterFromUnsigned(ra_reg, ra);
-    reg_ctx->WriteRegisterFromUnsigned(sp_reg, sp);
+bool ABISysV_hexagon::GetArgumentValues(Thread &thread,
+                                        ValueList &values) const {
+  return false;
+}
 
-#if HEX_ABI_DEBUG
-    // quick and dirty stack dumper for debugging
-    for ( int i = -8; i < 8; i++ )
-    {
-        uint32_t data = 0;
-        lldb::addr_t addr = sp + i * 4;
-        proc->ReadMemory( addr, (void*)&data, sizeof( data ), error );
-        printf( "\n0x%04" PRIx64 " 0x%08x ", addr, data );
-        if ( i == 0 ) printf( "<<-- sp" );
-    }
-    printf( "\n" );
-#endif 
-    
-    return true;
+Error ABISysV_hexagon::SetReturnValueObject(lldb::StackFrameSP &frame_sp,
+                                            lldb::ValueObjectSP &new_value_sp) {
+  Error error;
+  return error;
 }
 
-bool
-ABISysV_hexagon::GetArgumentValues ( Thread &thread, ValueList &values ) const
-{
-    return false;
+ValueObjectSP ABISysV_hexagon::GetReturnValueObjectSimple(
+    Thread &thread, CompilerType &return_compiler_type) const {
+  ValueObjectSP return_valobj_sp;
+  return return_valobj_sp;
 }
 
-Error
-ABISysV_hexagon::SetReturnValueObject ( lldb::StackFrameSP &frame_sp, lldb::ValueObjectSP &new_value_sp )
-{
-    Error error;
-    return error;
-}
-
-ValueObjectSP
-ABISysV_hexagon::GetReturnValueObjectSimple ( Thread &thread, CompilerType &return_compiler_type ) const
-{
-    ValueObjectSP return_valobj_sp;
-    return return_valobj_sp;
-}
-
-ValueObjectSP
-ABISysV_hexagon::GetReturnValueObjectImpl ( Thread &thread, CompilerType &return_compiler_type ) const
-{
-    ValueObjectSP return_valobj_sp;
-    return return_valobj_sp;
+ValueObjectSP ABISysV_hexagon::GetReturnValueObjectImpl(
+    Thread &thread, CompilerType &return_compiler_type) const {
+  ValueObjectSP return_valobj_sp;
+  return return_valobj_sp;
 }
 
 // called when we are on the first instruction of a new function
 // for hexagon the return address is in RA (R31)
-bool
-ABISysV_hexagon::CreateFunctionEntryUnwindPlan ( UnwindPlan &unwind_plan )
-{
-    unwind_plan.Clear();
-    unwind_plan.SetRegisterKind(eRegisterKindGeneric);
-    unwind_plan.SetReturnAddressRegister(LLDB_REGNUM_GENERIC_RA);
-    
-    UnwindPlan::RowSP row(new UnwindPlan::Row);
-
-    // Our Call Frame Address is the stack pointer value
-    row->GetCFAValue().SetIsRegisterPlusOffset (LLDB_REGNUM_GENERIC_SP, 4);
-    row->SetOffset(0);
-
-    // The previous PC is in the LR
-    row->SetRegisterLocationToRegister(LLDB_REGNUM_GENERIC_PC, LLDB_REGNUM_GENERIC_RA, true);
-    unwind_plan.AppendRow(row);
-    
-    unwind_plan.SetSourceName("hexagon at-func-entry default");
-    unwind_plan.SetSourcedFromCompiler(eLazyBoolNo);
-    return true;
-}
-
-bool
-ABISysV_hexagon::CreateDefaultUnwindPlan ( UnwindPlan &unwind_plan )
-{
-    unwind_plan.Clear();
-    unwind_plan.SetRegisterKind(eRegisterKindGeneric);
-
-    uint32_t fp_reg_num = LLDB_REGNUM_GENERIC_FP;
-    uint32_t sp_reg_num = LLDB_REGNUM_GENERIC_SP;
-    uint32_t pc_reg_num = LLDB_REGNUM_GENERIC_PC;
-
-    UnwindPlan::RowSP row(new UnwindPlan::Row);
-
-    row->GetCFAValue().SetIsRegisterPlusOffset (LLDB_REGNUM_GENERIC_FP, 8);
-
-    row->SetRegisterLocationToAtCFAPlusOffset(fp_reg_num,-8, true);
-    row->SetRegisterLocationToAtCFAPlusOffset(pc_reg_num,-4, true);
-    row->SetRegisterLocationToIsCFAPlusOffset(sp_reg_num, 0, true);
-
-    unwind_plan.AppendRow(row);
-    unwind_plan.SetSourceName("hexagon default unwind plan");
-    unwind_plan.SetSourcedFromCompiler(eLazyBoolNo);
-    unwind_plan.SetUnwindPlanValidAtAllInstructions(eLazyBoolNo);
-    return true;
+bool ABISysV_hexagon::CreateFunctionEntryUnwindPlan(UnwindPlan &unwind_plan) {
+  unwind_plan.Clear();
+  unwind_plan.SetRegisterKind(eRegisterKindGeneric);
+  unwind_plan.SetReturnAddressRegister(LLDB_REGNUM_GENERIC_RA);
+
+  UnwindPlan::RowSP row(new UnwindPlan::Row);
+
+  // Our Call Frame Address is the stack pointer value
+  row->GetCFAValue().SetIsRegisterPlusOffset(LLDB_REGNUM_GENERIC_SP, 4);
+  row->SetOffset(0);
+
+  // The previous PC is in the LR
+  row->SetRegisterLocationToRegister(LLDB_REGNUM_GENERIC_PC,
+                                     LLDB_REGNUM_GENERIC_RA, true);
+  unwind_plan.AppendRow(row);
+
+  unwind_plan.SetSourceName("hexagon at-func-entry default");
+  unwind_plan.SetSourcedFromCompiler(eLazyBoolNo);
+  return true;
+}
+
+bool ABISysV_hexagon::CreateDefaultUnwindPlan(UnwindPlan &unwind_plan) {
+  unwind_plan.Clear();
+  unwind_plan.SetRegisterKind(eRegisterKindGeneric);
+
+  uint32_t fp_reg_num = LLDB_REGNUM_GENERIC_FP;
+  uint32_t sp_reg_num = LLDB_REGNUM_GENERIC_SP;
+  uint32_t pc_reg_num = LLDB_REGNUM_GENERIC_PC;
+
+  UnwindPlan::RowSP row(new UnwindPlan::Row);
+
+  row->GetCFAValue().SetIsRegisterPlusOffset(LLDB_REGNUM_GENERIC_FP, 8);
+
+  row->SetRegisterLocationToAtCFAPlusOffset(fp_reg_num, -8, true);
+  row->SetRegisterLocationToAtCFAPlusOffset(pc_reg_num, -4, true);
+  row->SetRegisterLocationToIsCFAPlusOffset(sp_reg_num, 0, true);
+
+  unwind_plan.AppendRow(row);
+  unwind_plan.SetSourceName("hexagon default unwind plan");
+  unwind_plan.SetSourcedFromCompiler(eLazyBoolNo);
+  unwind_plan.SetUnwindPlanValidAtAllInstructions(eLazyBoolNo);
+  return true;
 }
 
 /*
@@ -449,118 +1273,92 @@ ABISysV_hexagon::CreateDefaultUnwindPlan
     b = R14 - R15 and R28 are used by the procedure linkage table
     c = R29 - R31 are saved and restored by allocframe() and deallocframe()
 */
-bool
-ABISysV_hexagon::RegisterIsVolatile ( const RegisterInfo *reg_info )
-{
-    return !RegisterIsCalleeSaved( reg_info );
+bool ABISysV_hexagon::RegisterIsVolatile(const RegisterInfo *reg_info) {
+  return !RegisterIsCalleeSaved(reg_info);
 }
 
-bool
-ABISysV_hexagon::RegisterIsCalleeSaved ( const RegisterInfo *reg_info )
-{
-    int reg = ((reg_info->byte_offset) / 4);
+bool ABISysV_hexagon::RegisterIsCalleeSaved(const RegisterInfo *reg_info) {
+  int reg = ((reg_info->byte_offset) / 4);
 
-    bool save  = (reg >= 16) && (reg <= 27);
-         save |= (reg >= 29) && (reg <= 32);
+  bool save = (reg >= 16) && (reg <= 27);
+  save |= (reg >= 29) && (reg <= 32);
 
-    return save;
+  return save;
 }
 
-void
-ABISysV_hexagon::Initialize()
-{
-    PluginManager::RegisterPlugin
-    (
-        GetPluginNameStatic(), 
-        "System V ABI for hexagon targets",
-        CreateInstance
-    );
+void ABISysV_hexagon::Initialize() {
+  PluginManager::RegisterPlugin(GetPluginNameStatic(),
+                                "System V ABI for hexagon targets",
+                                CreateInstance);
 }
 
-void
-ABISysV_hexagon::Terminate()
-{
-    PluginManager::UnregisterPlugin( CreateInstance );
+void ABISysV_hexagon::Terminate() {
+  PluginManager::UnregisterPlugin(CreateInstance);
 }
 
-lldb_private::ConstString
-ABISysV_hexagon::GetPluginNameStatic()
-{
-    static ConstString g_name( "sysv-hexagon" );
-    return g_name;
+lldb_private::ConstString ABISysV_hexagon::GetPluginNameStatic() {
+  static ConstString g_name("sysv-hexagon");
+  return g_name;
 }
 
 //------------------------------------------------------------------
 // PluginInterface protocol
 //------------------------------------------------------------------
 
-lldb_private::ConstString
-ABISysV_hexagon::GetPluginName()
-{
-    return GetPluginNameStatic();
+lldb_private::ConstString ABISysV_hexagon::GetPluginName() {
+  return GetPluginNameStatic();
 }
 
-uint32_t
-ABISysV_hexagon::GetPluginVersion()
-{
-    return 1;
-}
+uint32_t ABISysV_hexagon::GetPluginVersion() { return 1; }
 
 // get value object specialized to work with llvm IR types
 lldb::ValueObjectSP
-ABISysV_hexagon::GetReturnValueObjectImpl( lldb_private::Thread &thread, llvm::Type &retType ) const
-{
-    Value value;
-    ValueObjectSP vObjSP;
-
-    // get the current register context
-    RegisterContext *reg_ctx = thread.GetRegisterContext().get();
-    if (!reg_ctx)
-        return vObjSP;
-
-    // for now just pop R0 to find the return value
-    const lldb_private::RegisterInfo *r0_info = reg_ctx->GetRegisterInfoAtIndex( 0 );
-    if ( r0_info == nullptr )
-        return vObjSP;
-    
-    // void return type
-    if ( retType.isVoidTy( ) )
-    {
-        value.GetScalar( ) = 0;
-    }
-    // integer / pointer return type
-    else
-    if ( retType.isIntegerTy( ) || retType.isPointerTy( ) )
-    {
-        // read r0 register value
-        lldb_private::RegisterValue r0_value;
-        if ( !reg_ctx->ReadRegister( r0_info, r0_value ) )
-            return vObjSP;
-
-        // push r0 into value
-        uint32_t r0_u32 = r0_value.GetAsUInt32( );
-
-        // account for integer size
-        if ( retType.isIntegerTy() && retType.isSized() )
-        {
-            uint64_t size = retType.getScalarSizeInBits( );
-            uint64_t mask = ( 1ull << size ) - 1;
-            // mask out higher order bits then the type we expect
-            r0_u32 &= mask;
-        }
+ABISysV_hexagon::GetReturnValueObjectImpl(lldb_private::Thread &thread,
+                                          llvm::Type &retType) const {
+  Value value;
+  ValueObjectSP vObjSP;
+
+  // get the current register context
+  RegisterContext *reg_ctx = thread.GetRegisterContext().get();
+  if (!reg_ctx)
+    return vObjSP;
 
-        value.GetScalar( ) = r0_u32;
+  // for now just pop R0 to find the return value
+  const lldb_private::RegisterInfo *r0_info =
+      reg_ctx->GetRegisterInfoAtIndex(0);
+  if (r0_info == nullptr)
+    return vObjSP;
+
+  // void return type
+  if (retType.isVoidTy()) {
+    value.GetScalar() = 0;
+  }
+  // integer / pointer return type
+  else if (retType.isIntegerTy() || retType.isPointerTy()) {
+    // read r0 register value
+    lldb_private::RegisterValue r0_value;
+    if (!reg_ctx->ReadRegister(r0_info, r0_value))
+      return vObjSP;
+
+    // push r0 into value
+    uint32_t r0_u32 = r0_value.GetAsUInt32();
+
+    // account for integer size
+    if (retType.isIntegerTy() && retType.isSized()) {
+      uint64_t size = retType.getScalarSizeInBits();
+      uint64_t mask = (1ull << size) - 1;
+      // mask out higher order bits then the type we expect
+      r0_u32 &= mask;
     }
-    // unsupported return type
-    else
-        return vObjSP;
-
-    // pack the value into a ValueObjectSP
-    vObjSP = ValueObjectConstResult::Create
-    (
-        thread.GetStackFrameAtIndex(0).get(),
-        value,
-        ConstString("")
-    );
+
+    value.GetScalar() = r0_u32;
+  }
+  // unsupported return type
+  else
     return vObjSP;
+
+  // pack the value into a ValueObjectSP
+  vObjSP = ValueObjectConstResult::Create(thread.GetStackFrameAtIndex(0).get(),
+                                          value, ConstString(""));
+  return vObjSP;
 }

Modified: lldb/trunk/source/Plugins/ABI/SysV-hexagon/ABISysV_hexagon.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ABI/SysV-hexagon/ABISysV_hexagon.h?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ABI/SysV-hexagon/ABISysV_hexagon.h (original)
+++ lldb/trunk/source/Plugins/ABI/SysV-hexagon/ABISysV_hexagon.h Tue Sep  6 15:57:50 2016
@@ -1,4 +1,5 @@
-//===-- ABISysV_hexagon.h ----------------------------------------*- C++ -*-===//
+//===-- ABISysV_hexagon.h ----------------------------------------*- C++
+//-*-===//
 //
 //                     The LLVM Compiler Infrastructure
 //
@@ -14,124 +15,100 @@
 // C++ Includes
 // Other libraries and framework includes
 // Project includes
-#include "lldb/lldb-private.h"
 #include "lldb/Target/ABI.h"
+#include "lldb/lldb-private.h"
 
-class ABISysV_hexagon :
-    public lldb_private::ABI
-{
+class ABISysV_hexagon : public lldb_private::ABI {
 public:
-    ~ABISysV_hexagon() override = default;
+  ~ABISysV_hexagon() override = default;
+
+  size_t GetRedZoneSize() const override;
+
+  bool PrepareTrivialCall(lldb_private::Thread &thread, lldb::addr_t sp,
+                          lldb::addr_t functionAddress,
+                          lldb::addr_t returnAddress,
+                          llvm::ArrayRef<lldb::addr_t> args) const override;
+
+  // special thread plan for GDB style non-jit function calls
+  bool
+  PrepareTrivialCall(lldb_private::Thread &thread, lldb::addr_t sp,
+                     lldb::addr_t functionAddress, lldb::addr_t returnAddress,
+                     llvm::Type &prototype,
+                     llvm::ArrayRef<ABI::CallArgument> args) const override;
+
+  bool GetArgumentValues(lldb_private::Thread &thread,
+                         lldb_private::ValueList &values) const override;
+
+  lldb_private::Error
+  SetReturnValueObject(lldb::StackFrameSP &frame_sp,
+                       lldb::ValueObjectSP &new_value) override;
+
+  lldb::ValueObjectSP
+  GetReturnValueObjectImpl(lldb_private::Thread &thread,
+                           lldb_private::CompilerType &type) const override;
+
+  // specialized to work with llvm IR types
+  lldb::ValueObjectSP GetReturnValueObjectImpl(lldb_private::Thread &thread,
+                                               llvm::Type &type) const override;
+
+  bool
+  CreateFunctionEntryUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
+
+  bool CreateDefaultUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
+
+  bool RegisterIsVolatile(const lldb_private::RegisterInfo *reg_info) override;
+
+  bool CallFrameAddressIsValid(lldb::addr_t cfa) override {
+    // Make sure the stack call frame addresses are 8 byte aligned
+    if (cfa & 0x07)
+      return false; // Not 8 byte aligned
+    if (cfa == 0)
+      return false; // Zero is not a valid stack address
+    return true;
+  }
+
+  bool CodeAddressIsValid(lldb::addr_t pc) override {
+    // We have a 64 bit address space, so anything is valid as opcodes
+    // aren't fixed width...
+    return true;
+  }
+
+  const lldb_private::RegisterInfo *
+  GetRegisterInfoArray(uint32_t &count) override;
+
+  //------------------------------------------------------------------
+  // Static Functions
+  //------------------------------------------------------------------
+
+  static void Initialize();
+
+  static void Terminate();
+
+  static lldb::ABISP CreateInstance(const lldb_private::ArchSpec &arch);
 
-    size_t
-    GetRedZoneSize() const override;
+  static lldb_private::ConstString GetPluginNameStatic();
 
-    bool
-    PrepareTrivialCall(lldb_private::Thread &thread,
-                       lldb::addr_t sp,
-                       lldb::addr_t functionAddress,
-                       lldb::addr_t returnAddress,
-                       llvm::ArrayRef<lldb::addr_t> args) const override;
-    
-    // special thread plan for GDB style non-jit function calls
-    bool
-    PrepareTrivialCall(lldb_private::Thread &thread, 
-                       lldb::addr_t sp,
-                       lldb::addr_t functionAddress,
-                       lldb::addr_t returnAddress,
-                       llvm::Type &prototype,
-                       llvm::ArrayRef<ABI::CallArgument> args) const override;
-
-    bool
-    GetArgumentValues(lldb_private::Thread &thread,
-                       lldb_private::ValueList &values) const override;
-    
-    lldb_private::Error
-    SetReturnValueObject(lldb::StackFrameSP &frame_sp,
-                         lldb::ValueObjectSP &new_value) override;
-
-    lldb::ValueObjectSP
-    GetReturnValueObjectImpl(lldb_private::Thread &thread,
-                             lldb_private::CompilerType &type) const override;
-        
-    // specialized to work with llvm IR types
-    lldb::ValueObjectSP
-    GetReturnValueObjectImpl(lldb_private::Thread &thread, llvm::Type &type) const override;
-
-    bool
-    CreateFunctionEntryUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
-    
-    bool
-    CreateDefaultUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
-        
-    bool
-    RegisterIsVolatile(const lldb_private::RegisterInfo *reg_info) override;
-
-    bool
-    CallFrameAddressIsValid(lldb::addr_t cfa) override
-    {
-        // Make sure the stack call frame addresses are 8 byte aligned
-        if (cfa & 0x07)
-            return false;   // Not 8 byte aligned
-        if (cfa == 0)
-            return false;   // Zero is not a valid stack address
-        return true;
-    }
-    
-    bool
-    CodeAddressIsValid(lldb::addr_t pc) override
-    {
-        // We have a 64 bit address space, so anything is valid as opcodes
-        // aren't fixed width...
-        return true;
-    }
-
-    const lldb_private::RegisterInfo *
-    GetRegisterInfoArray(uint32_t &count) override;
-
-    //------------------------------------------------------------------
-    // Static Functions
-    //------------------------------------------------------------------
-
-    static void
-    Initialize();
-
-    static void
-    Terminate();
-
-    static lldb::ABISP
-    CreateInstance ( const lldb_private::ArchSpec &arch );
-
-    static lldb_private::ConstString
-    GetPluginNameStatic();
-    
-    //------------------------------------------------------------------
-    // PluginInterface protocol
-    //------------------------------------------------------------------
+  //------------------------------------------------------------------
+  // PluginInterface protocol
+  //------------------------------------------------------------------
 
-    lldb_private::ConstString
-    GetPluginName() override;
+  lldb_private::ConstString GetPluginName() override;
 
-    uint32_t
-    GetPluginVersion() override;
+  uint32_t GetPluginVersion() override;
 
 protected:
-    void
-    CreateRegisterMapIfNeeded();
+  void CreateRegisterMapIfNeeded();
 
-    lldb::ValueObjectSP
-    GetReturnValueObjectSimple(lldb_private::Thread &thread,
-                               lldb_private::CompilerType &ast_type) const;
+  lldb::ValueObjectSP
+  GetReturnValueObjectSimple(lldb_private::Thread &thread,
+                             lldb_private::CompilerType &ast_type) const;
 
-    bool
-    RegisterIsCalleeSaved (const lldb_private::RegisterInfo *reg_info);
+  bool RegisterIsCalleeSaved(const lldb_private::RegisterInfo *reg_info);
 
 private:
-    ABISysV_hexagon() : 
-        lldb_private::ABI() 
-    {
-         // Call CreateInstance instead.
-    }
+  ABISysV_hexagon() : lldb_private::ABI() {
+    // Call CreateInstance instead.
+  }
 };
 
 #endif // liblldb_ABISysV_hexagon_h_

Modified: lldb/trunk/source/Plugins/ABI/SysV-i386/ABISysV_i386.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ABI/SysV-i386/ABISysV_i386.cpp?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ABI/SysV-i386/ABISysV_i386.cpp (original)
+++ lldb/trunk/source/Plugins/ABI/SysV-i386/ABISysV_i386.cpp Tue Sep  6 15:57:50 2016
@@ -2,7 +2,8 @@
 //
 //                   The LLVM Compiler Infrastructure
 //
-// This file is distributed under the University of Illinois Open Source License.
+// This file is distributed under the University of Illinois Open Source
+// License.
 // See LICENSE.TXT for details.
 //===----------------------------------------------------------------------===//
 
@@ -24,13 +25,13 @@
 #include "lldb/Core/RegisterValue.h"
 #include "lldb/Core/Value.h"
 #include "lldb/Core/ValueObjectConstResult.h"
-#include "lldb/Core/ValueObjectRegister.h"
 #include "lldb/Core/ValueObjectMemory.h"
+#include "lldb/Core/ValueObjectRegister.h"
 #include "lldb/Symbol/UnwindPlan.h"
-#include "lldb/Target/Target.h"
 #include "lldb/Target/Process.h"
 #include "lldb/Target/RegisterContext.h"
 #include "lldb/Target/StackFrame.h"
+#include "lldb/Target/Target.h"
 #include "lldb/Target/Thread.h"
 
 using namespace lldb;
@@ -58,132 +59,674 @@ using namespace lldb_private;
 // Comment: Table 2.14 is followed till 'mm' entries.
 // After that, all entries are ignored here.
 
-enum dwarf_regnums
-{
-    dwarf_eax = 0,
-    dwarf_ecx,
-    dwarf_edx,
-    dwarf_ebx,
-    dwarf_esp,
-    dwarf_ebp,
-    dwarf_esi,
-    dwarf_edi,
-    dwarf_eip,
-    dwarf_eflags,
-
-    dwarf_st0 = 11,
-    dwarf_st1,
-    dwarf_st2,
-    dwarf_st3,
-    dwarf_st4,
-    dwarf_st5,
-    dwarf_st6,
-    dwarf_st7,
-
-    dwarf_xmm0 = 21,
-    dwarf_xmm1,
-    dwarf_xmm2,
-    dwarf_xmm3,
-    dwarf_xmm4,
-    dwarf_xmm5,
-    dwarf_xmm6,
-    dwarf_xmm7,
-    dwarf_ymm0 = dwarf_xmm0,
-    dwarf_ymm1 = dwarf_xmm1,
-    dwarf_ymm2 = dwarf_xmm2,
-    dwarf_ymm3 = dwarf_xmm3,
-    dwarf_ymm4 = dwarf_xmm4,
-    dwarf_ymm5 = dwarf_xmm5,
-    dwarf_ymm6 = dwarf_xmm6,
-    dwarf_ymm7 = dwarf_xmm7,
-
-    dwarf_mm0 = 29,
-    dwarf_mm1,
-    dwarf_mm2,
-    dwarf_mm3,
-    dwarf_mm4,
-    dwarf_mm5,
-    dwarf_mm6,
-    dwarf_mm7
+enum dwarf_regnums {
+  dwarf_eax = 0,
+  dwarf_ecx,
+  dwarf_edx,
+  dwarf_ebx,
+  dwarf_esp,
+  dwarf_ebp,
+  dwarf_esi,
+  dwarf_edi,
+  dwarf_eip,
+  dwarf_eflags,
+
+  dwarf_st0 = 11,
+  dwarf_st1,
+  dwarf_st2,
+  dwarf_st3,
+  dwarf_st4,
+  dwarf_st5,
+  dwarf_st6,
+  dwarf_st7,
+
+  dwarf_xmm0 = 21,
+  dwarf_xmm1,
+  dwarf_xmm2,
+  dwarf_xmm3,
+  dwarf_xmm4,
+  dwarf_xmm5,
+  dwarf_xmm6,
+  dwarf_xmm7,
+  dwarf_ymm0 = dwarf_xmm0,
+  dwarf_ymm1 = dwarf_xmm1,
+  dwarf_ymm2 = dwarf_xmm2,
+  dwarf_ymm3 = dwarf_xmm3,
+  dwarf_ymm4 = dwarf_xmm4,
+  dwarf_ymm5 = dwarf_xmm5,
+  dwarf_ymm6 = dwarf_xmm6,
+  dwarf_ymm7 = dwarf_xmm7,
+
+  dwarf_mm0 = 29,
+  dwarf_mm1,
+  dwarf_mm2,
+  dwarf_mm3,
+  dwarf_mm4,
+  dwarf_mm5,
+  dwarf_mm6,
+  dwarf_mm7
 };
 
-static RegisterInfo g_register_infos[] =
-{
-  //  NAME      ALT         SZ OFF ENCODING         FORMAT                  EH_FRAME                 DWARF                      GENERIC                PROCESS PLUGIN          LLDB NATIVE            VALUE REGS    INVALIDATE REGS
-  //  ======    =======     == === =============    ============          ===================== =====================    ============================ ====================  ======================    ==========    ===============
-    { "eax",    nullptr,    4,  0, eEncodingUint  , eFormatHex          , {     dwarf_eax       ,     dwarf_eax           , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "ebx"   , nullptr,    4,  0, eEncodingUint  , eFormatHex          , {     dwarf_ebx       ,     dwarf_ebx           , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "ecx"   , nullptr,    4,  0, eEncodingUint  , eFormatHex          , {     dwarf_ecx       ,     dwarf_ecx           , LLDB_REGNUM_GENERIC_ARG4  , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "edx"   , nullptr,    4,  0, eEncodingUint  , eFormatHex          , {     dwarf_edx       ,     dwarf_edx           , LLDB_REGNUM_GENERIC_ARG3  , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "esi"   , nullptr,    4,  0, eEncodingUint  , eFormatHex          , {     dwarf_esi       ,     dwarf_esi           , LLDB_REGNUM_GENERIC_ARG2  , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "edi"   , nullptr,    4,  0, eEncodingUint  , eFormatHex          , {     dwarf_edi       ,     dwarf_edi           , LLDB_REGNUM_GENERIC_ARG1  , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "ebp"   , "fp",       4,  0, eEncodingUint  , eFormatHex          , {     dwarf_ebp       ,     dwarf_ebp           , LLDB_REGNUM_GENERIC_FP    , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "esp"   , "sp",       4,  0, eEncodingUint  , eFormatHex          , {     dwarf_esp       ,     dwarf_esp           , LLDB_REGNUM_GENERIC_SP    , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "eip"   , "pc",       4,  0, eEncodingUint  , eFormatHex          , {     dwarf_eip       ,     dwarf_eip           , LLDB_REGNUM_GENERIC_PC    , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "eflags", nullptr,    4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM     , LLDB_REGNUM_GENERIC_FLAGS , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "cs"    , nullptr,    4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM     , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "ss"    , nullptr,    4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM     , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "ds"    , nullptr,    4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM     , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "es"    , nullptr,    4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM     , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "fs"    , nullptr,    4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM     , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "gs"    , nullptr,    4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM     , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "st0"   , nullptr,   10,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_st0           , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "st1"   , nullptr,   10,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_st1           , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "st2"   , nullptr,   10,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_st2           , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "st3"   , nullptr,   10,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_st3           , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "st4"   , nullptr,   10,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_st4           , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "st5"   , nullptr,   10,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_st5           , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "st6"   , nullptr,   10,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_st6           , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "st7"   , nullptr,   10,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_st7           , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "fctrl" , nullptr,    4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM     , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "fstat" , nullptr,    4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM     , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "ftag"  , nullptr,    4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM     , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "fiseg" , nullptr,    4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM     , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "fioff" , nullptr,    4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM     , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "foseg" , nullptr,    4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM     , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "fooff" , nullptr,    4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM     , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "fop"   , nullptr,    4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM     , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "xmm0"  , nullptr,   16,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_xmm0          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "xmm1"  , nullptr,   16,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_xmm1          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "xmm2"  , nullptr,   16,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_xmm2          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "xmm3"  , nullptr,   16,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_xmm3          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "xmm4"  , nullptr,   16,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_xmm4          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "xmm5"  , nullptr,   16,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_xmm5          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "xmm6"  , nullptr,   16,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_xmm6          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "xmm7"  , nullptr,   16,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_xmm7          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "mxcsr" , nullptr,    4,  0, eEncodingUint  , eFormatHex          , { LLDB_INVALID_REGNUM , LLDB_INVALID_REGNUM     , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "ymm0"  , nullptr,   32,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_ymm0          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "ymm1"  , nullptr,   32,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_ymm1          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "ymm2"  , nullptr,   32,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_ymm2          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "ymm3"  , nullptr,   32,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_ymm3          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "ymm4"  , nullptr,   32,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_ymm4          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "ymm5"  , nullptr,   32,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_ymm5          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "ymm6"  , nullptr,   32,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_ymm6          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0},
-    { "ymm7"  , nullptr,   32,  0, eEncodingVector, eFormatVectorOfUInt8, { LLDB_INVALID_REGNUM ,     dwarf_ymm7          , LLDB_INVALID_REGNUM       , LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM },      nullptr, nullptr, nullptr, 0}
-};
+static RegisterInfo g_register_infos[] = {
+    //  NAME      ALT         SZ OFF ENCODING         FORMAT
+    //  EH_FRAME                 DWARF                      GENERIC
+    //  PROCESS PLUGIN          LLDB NATIVE            VALUE REGS    INVALIDATE
+    //  REGS
+    //  ======    =======     == === =============    ============
+    //  ===================== =====================
+    //  ============================ ====================
+    //  ======================    ==========    ===============
+    {"eax",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {dwarf_eax, dwarf_eax, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ebx",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {dwarf_ebx, dwarf_ebx, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ecx",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {dwarf_ecx, dwarf_ecx, LLDB_REGNUM_GENERIC_ARG4, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"edx",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {dwarf_edx, dwarf_edx, LLDB_REGNUM_GENERIC_ARG3, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"esi",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {dwarf_esi, dwarf_esi, LLDB_REGNUM_GENERIC_ARG2, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"edi",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {dwarf_edi, dwarf_edi, LLDB_REGNUM_GENERIC_ARG1, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ebp",
+     "fp",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {dwarf_ebp, dwarf_ebp, LLDB_REGNUM_GENERIC_FP, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"esp",
+     "sp",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {dwarf_esp, dwarf_esp, LLDB_REGNUM_GENERIC_SP, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"eip",
+     "pc",
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {dwarf_eip, dwarf_eip, LLDB_REGNUM_GENERIC_PC, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"eflags",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_REGNUM_GENERIC_FLAGS,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"cs",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ss",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ds",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"es",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"fs",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"gs",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"st0",
+     nullptr,
+     10,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_st0, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"st1",
+     nullptr,
+     10,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_st1, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"st2",
+     nullptr,
+     10,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_st2, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"st3",
+     nullptr,
+     10,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_st3, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"st4",
+     nullptr,
+     10,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_st4, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"st5",
+     nullptr,
+     10,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_st5, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"st6",
+     nullptr,
+     10,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_st6, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"st7",
+     nullptr,
+     10,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_st7, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"fctrl",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"fstat",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ftag",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"fiseg",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"fioff",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"foseg",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"fooff",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"fop",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"xmm0",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_xmm0, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"xmm1",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_xmm1, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"xmm2",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_xmm2, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"xmm3",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_xmm3, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"xmm4",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_xmm4, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"xmm5",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_xmm5, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"xmm6",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_xmm6, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"xmm7",
+     nullptr,
+     16,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_xmm7, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"mxcsr",
+     nullptr,
+     4,
+     0,
+     eEncodingUint,
+     eFormatHex,
+     {LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ymm0",
+     nullptr,
+     32,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_ymm0, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ymm1",
+     nullptr,
+     32,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_ymm1, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ymm2",
+     nullptr,
+     32,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_ymm2, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ymm3",
+     nullptr,
+     32,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_ymm3, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ymm4",
+     nullptr,
+     32,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_ymm4, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ymm5",
+     nullptr,
+     32,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_ymm5, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ymm6",
+     nullptr,
+     32,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_ymm6, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0},
+    {"ymm7",
+     nullptr,
+     32,
+     0,
+     eEncodingVector,
+     eFormatVectorOfUInt8,
+     {LLDB_INVALID_REGNUM, dwarf_ymm7, LLDB_INVALID_REGNUM, LLDB_INVALID_REGNUM,
+      LLDB_INVALID_REGNUM},
+     nullptr,
+     nullptr,
+     nullptr,
+     0}};
 
-static const uint32_t k_num_register_infos = llvm::array_lengthof(g_register_infos);
+static const uint32_t k_num_register_infos =
+    llvm::array_lengthof(g_register_infos);
 static bool g_register_info_names_constified = false;
 
 const lldb_private::RegisterInfo *
-ABISysV_i386::GetRegisterInfoArray (uint32_t &count)
-{
-    // Make the C-string names and alt_names for the register infos into const
-    // C-string values by having the ConstString unique the names in the global
-    // constant C-string pool.
-    if (!g_register_info_names_constified)
-    {
-        g_register_info_names_constified = true;
-        for (uint32_t i=0; i<k_num_register_infos; ++i)
-        {
-            if (g_register_infos[i].name)
-                g_register_infos[i].name = ConstString(g_register_infos[i].name).GetCString();
-            if (g_register_infos[i].alt_name)
-                g_register_infos[i].alt_name = ConstString(g_register_infos[i].alt_name).GetCString();
-        }
+ABISysV_i386::GetRegisterInfoArray(uint32_t &count) {
+  // Make the C-string names and alt_names for the register infos into const
+  // C-string values by having the ConstString unique the names in the global
+  // constant C-string pool.
+  if (!g_register_info_names_constified) {
+    g_register_info_names_constified = true;
+    for (uint32_t i = 0; i < k_num_register_infos; ++i) {
+      if (g_register_infos[i].name)
+        g_register_infos[i].name =
+            ConstString(g_register_infos[i].name).GetCString();
+      if (g_register_infos[i].alt_name)
+        g_register_infos[i].alt_name =
+            ConstString(g_register_infos[i].alt_name).GetCString();
     }
-    count = k_num_register_infos;
-    return g_register_infos;
+  }
+  count = k_num_register_infos;
+  return g_register_infos;
 }
 
 //------------------------------------------------------------------
@@ -191,614 +734,567 @@ ABISysV_i386::GetRegisterInfoArray (uint
 //------------------------------------------------------------------
 
 ABISP
-ABISysV_i386::CreateInstance (const ArchSpec &arch)
-{
-    static ABISP g_abi_sp;
-    if ((arch.GetTriple().getArch() == llvm::Triple::x86) &&
-         arch.GetTriple().isOSLinux())
-    {
-        if (!g_abi_sp)
-            g_abi_sp.reset (new ABISysV_i386);
-        return g_abi_sp;
-    }
-    return ABISP();
+ABISysV_i386::CreateInstance(const ArchSpec &arch) {
+  static ABISP g_abi_sp;
+  if ((arch.GetTriple().getArch() == llvm::Triple::x86) &&
+      arch.GetTriple().isOSLinux()) {
+    if (!g_abi_sp)
+      g_abi_sp.reset(new ABISysV_i386);
+    return g_abi_sp;
+  }
+  return ABISP();
 }
 
-bool
-ABISysV_i386::PrepareTrivialCall (Thread &thread,
-                                    addr_t sp,
-                                    addr_t func_addr,
-                                    addr_t return_addr,
-                                    llvm::ArrayRef<addr_t> args) const
-{
-    RegisterContext *reg_ctx = thread.GetRegisterContext().get();
-
-    if (!reg_ctx)
-        return false;
-
-    uint32_t pc_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC);
-    uint32_t sp_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber (eRegisterKindGeneric, LLDB_REGNUM_GENERIC_SP);
-
-    // While using register info to write a register value to memory, the register info
-    // just needs to have the correct size of a 32 bit register, the actual register it
-    // pertains to is not important, just the size needs to be correct.
-    // "eax" is used here for this purpose.
-    const RegisterInfo *reg_info_32 = reg_ctx->GetRegisterInfoByName("eax");
-    if (!reg_info_32)
-        return false; // TODO this should actually never happen
-
-    Error error;
-    RegisterValue reg_value;
-
-    // Make room for the argument(s) on the stack
-    sp -= 4 * args.size();
-
-    // SP Alignment
-    sp &= ~(16ull-1ull); // 16-byte alignment
-
-    // Write arguments onto the stack
-    addr_t arg_pos = sp;
-    for (addr_t arg : args)
-    {
-        reg_value.SetUInt32(arg);
-        error = reg_ctx->WriteRegisterValueToMemory (reg_info_32,
-                                                     arg_pos,
-                                                     reg_info_32->byte_size,
-                                                     reg_value);
-        if (error.Fail())
-            return false;
-        arg_pos += 4;
-    }
+bool ABISysV_i386::PrepareTrivialCall(Thread &thread, addr_t sp,
+                                      addr_t func_addr, addr_t return_addr,
+                                      llvm::ArrayRef<addr_t> args) const {
+  RegisterContext *reg_ctx = thread.GetRegisterContext().get();
 
-    // The return address is pushed onto the stack
-    sp -= 4;
-    reg_value.SetUInt32(return_addr);
-    error = reg_ctx->WriteRegisterValueToMemory (reg_info_32,
-                                                 sp,
-                                                 reg_info_32->byte_size,
-                                                 reg_value);
+  if (!reg_ctx)
+    return false;
+
+  uint32_t pc_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber(
+      eRegisterKindGeneric, LLDB_REGNUM_GENERIC_PC);
+  uint32_t sp_reg_num = reg_ctx->ConvertRegisterKindToRegisterNumber(
+      eRegisterKindGeneric, LLDB_REGNUM_GENERIC_SP);
+
+  // While using register info to write a register value to memory, the register
+  // info
+  // just needs to have the correct size of a 32 bit register, the actual
+  // register it
+  // pertains to is not important, just the size needs to be correct.
+  // "eax" is used here for this purpose.
+  const RegisterInfo *reg_info_32 = reg_ctx->GetRegisterInfoByName("eax");
+  if (!reg_info_32)
+    return false; // TODO this should actually never happen
+
+  Error error;
+  RegisterValue reg_value;
+
+  // Make room for the argument(s) on the stack
+  sp -= 4 * args.size();
+
+  // SP Alignment
+  sp &= ~(16ull - 1ull); // 16-byte alignment
+
+  // Write arguments onto the stack
+  addr_t arg_pos = sp;
+  for (addr_t arg : args) {
+    reg_value.SetUInt32(arg);
+    error = reg_ctx->WriteRegisterValueToMemory(
+        reg_info_32, arg_pos, reg_info_32->byte_size, reg_value);
     if (error.Fail())
-        return false;
+      return false;
+    arg_pos += 4;
+  }
+
+  // The return address is pushed onto the stack
+  sp -= 4;
+  reg_value.SetUInt32(return_addr);
+  error = reg_ctx->WriteRegisterValueToMemory(
+      reg_info_32, sp, reg_info_32->byte_size, reg_value);
+  if (error.Fail())
+    return false;
 
-    // Setting %esp to the actual stack value.
-    if (!reg_ctx->WriteRegisterFromUnsigned (sp_reg_num, sp))
-        return false;
-
-    // Setting %eip to the address of the called function.
-    if (!reg_ctx->WriteRegisterFromUnsigned (pc_reg_num, func_addr))
-        return false;
+  // Setting %esp to the actual stack value.
+  if (!reg_ctx->WriteRegisterFromUnsigned(sp_reg_num, sp))
+    return false;
+
+  // Setting %eip to the address of the called function.
+  if (!reg_ctx->WriteRegisterFromUnsigned(pc_reg_num, func_addr))
+    return false;
+
+  return true;
+}
+
+static bool ReadIntegerArgument(Scalar &scalar, unsigned int bit_width,
+                                bool is_signed, Process *process,
+                                addr_t &current_stack_argument) {
+  uint32_t byte_size = (bit_width + (8 - 1)) / 8;
+  Error error;
+
+  if (!process)
+    return false;
 
+  if (process->ReadScalarIntegerFromMemory(current_stack_argument, byte_size,
+                                           is_signed, scalar, error)) {
+    current_stack_argument += byte_size;
     return true;
+  }
+  return false;
 }
 
-static bool
-ReadIntegerArgument (Scalar           &scalar,
-                     unsigned int     bit_width,
-                     bool             is_signed,
-                     Process          *process,
-                     addr_t           &current_stack_argument)
-{
-    uint32_t byte_size = (bit_width + (8-1))/8;
-    Error error;
+bool ABISysV_i386::GetArgumentValues(Thread &thread, ValueList &values) const {
+  unsigned int num_values = values.GetSize();
+  unsigned int value_index;
 
-    if (!process)
-        return false;
+  RegisterContext *reg_ctx = thread.GetRegisterContext().get();
 
-    if (process->ReadScalarIntegerFromMemory(current_stack_argument, byte_size, is_signed, scalar, error))
-    {
-        current_stack_argument += byte_size;
-        return true;
-    }
+  if (!reg_ctx)
     return false;
-}
 
-bool
-ABISysV_i386::GetArgumentValues (Thread &thread,
-                                   ValueList &values) const
-{
-    unsigned int num_values = values.GetSize();
-    unsigned int value_index;
-
-    RegisterContext *reg_ctx = thread.GetRegisterContext().get();
-
-    if (!reg_ctx)
-        return false;
-
-    // Get pointer to the first stack argument
-    addr_t sp = reg_ctx->GetSP(0);
-    if (!sp)
-        return false;
-
-    addr_t current_stack_argument = sp + 4; // jump over return address
-
-    for (value_index = 0;
-         value_index < num_values;
-         ++value_index)
-    {
-        Value *value = values.GetValueAtIndex(value_index);
+  // Get pointer to the first stack argument
+  addr_t sp = reg_ctx->GetSP(0);
+  if (!sp)
+    return false;
 
-        if (!value)
-            return false;
+  addr_t current_stack_argument = sp + 4; // jump over return address
 
-        // Currently: Support for extracting values with Clang QualTypes only.
-        CompilerType compiler_type (value->GetCompilerType());
-        if (compiler_type)
-        {
-            bool is_signed;
-            if (compiler_type.IsIntegerOrEnumerationType (is_signed))
-            {
-                ReadIntegerArgument(value->GetScalar(),
-                                    compiler_type.GetBitSize(&thread),
-                                    is_signed,
-                                    thread.GetProcess().get(),
-                                    current_stack_argument);
-            }
-            else if (compiler_type.IsPointerType())
-            {
-                ReadIntegerArgument(value->GetScalar(),
-                                    compiler_type.GetBitSize(&thread),
-                                    false,
-                                    thread.GetProcess().get(),
-                                    current_stack_argument);
-            }
-        }
+  for (value_index = 0; value_index < num_values; ++value_index) {
+    Value *value = values.GetValueAtIndex(value_index);
+
+    if (!value)
+      return false;
+
+    // Currently: Support for extracting values with Clang QualTypes only.
+    CompilerType compiler_type(value->GetCompilerType());
+    if (compiler_type) {
+      bool is_signed;
+      if (compiler_type.IsIntegerOrEnumerationType(is_signed)) {
+        ReadIntegerArgument(value->GetScalar(),
+                            compiler_type.GetBitSize(&thread), is_signed,
+                            thread.GetProcess().get(), current_stack_argument);
+      } else if (compiler_type.IsPointerType()) {
+        ReadIntegerArgument(value->GetScalar(),
+                            compiler_type.GetBitSize(&thread), false,
+                            thread.GetProcess().get(), current_stack_argument);
+      }
     }
-    return true;
+  }
+  return true;
 }
 
-Error
-ABISysV_i386::SetReturnValueObject(lldb::StackFrameSP &frame_sp, lldb::ValueObjectSP &new_value_sp)
-{
-    Error error;
-    if (!new_value_sp)
-    {
-        error.SetErrorString("Empty value object for return value.");
-        return error;
-    }
+Error ABISysV_i386::SetReturnValueObject(lldb::StackFrameSP &frame_sp,
+                                         lldb::ValueObjectSP &new_value_sp) {
+  Error error;
+  if (!new_value_sp) {
+    error.SetErrorString("Empty value object for return value.");
+    return error;
+  }
 
-    CompilerType compiler_type = new_value_sp->GetCompilerType();
-    if (!compiler_type)
-    {
-        error.SetErrorString ("Null clang type for return value.");
-        return error;
-    }
+  CompilerType compiler_type = new_value_sp->GetCompilerType();
+  if (!compiler_type) {
+    error.SetErrorString("Null clang type for return value.");
+    return error;
+  }
 
-    const uint32_t type_flags = compiler_type.GetTypeInfo ();
-    Thread *thread = frame_sp->GetThread().get();
-    RegisterContext *reg_ctx = thread->GetRegisterContext().get();
-    DataExtractor data;
-    Error data_error;
-    size_t num_bytes = new_value_sp->GetData(data, data_error);
-    bool register_write_successful = true;
+  const uint32_t type_flags = compiler_type.GetTypeInfo();
+  Thread *thread = frame_sp->GetThread().get();
+  RegisterContext *reg_ctx = thread->GetRegisterContext().get();
+  DataExtractor data;
+  Error data_error;
+  size_t num_bytes = new_value_sp->GetData(data, data_error);
+  bool register_write_successful = true;
+
+  if (data_error.Fail()) {
+    error.SetErrorStringWithFormat(
+        "Couldn't convert return value to raw data: %s",
+        data_error.AsCString());
+    return error;
+  }
 
-    if (data_error.Fail())
-    {
-        error.SetErrorStringWithFormat("Couldn't convert return value to raw data: %s", data_error.AsCString());
-        return error;
+  // Following "IF ELSE" block categorizes various 'Fundamental Data Types'.
+  // The terminology 'Fundamental Data Types' used here is adopted from
+  // Table 2.1 of the reference document (specified on top of this file)
+
+  if (type_flags & eTypeIsPointer) // 'Pointer'
+  {
+    if (num_bytes != sizeof(uint32_t)) {
+      error.SetErrorString("Pointer to be returned is not 4 bytes wide");
+      return error;
     }
+    lldb::offset_t offset = 0;
+    const RegisterInfo *eax_info = reg_ctx->GetRegisterInfoByName("eax", 0);
+    uint32_t raw_value = data.GetMaxU32(&offset, num_bytes);
+    register_write_successful =
+        reg_ctx->WriteRegisterFromUnsigned(eax_info, raw_value);
+  } else if ((type_flags & eTypeIsScalar) ||
+             (type_flags & eTypeIsEnumeration)) //'Integral' + 'Floating Point'
+  {
+    lldb::offset_t offset = 0;
+    const RegisterInfo *eax_info = reg_ctx->GetRegisterInfoByName("eax", 0);
 
-    // Following "IF ELSE" block categorizes various 'Fundamental Data Types'.
-    // The terminology 'Fundamental Data Types' used here is adopted from
-    // Table 2.1 of the reference document (specified on top of this file)
-
-    if (type_flags & eTypeIsPointer)     // 'Pointer'
+    if (type_flags & eTypeIsInteger) // 'Integral' except enum
     {
-        if(num_bytes != sizeof(uint32_t))
-        {
-            error.SetErrorString("Pointer to be returned is not 4 bytes wide");
-            return error;
-        }
-        lldb::offset_t offset = 0;
-        const RegisterInfo *eax_info = reg_ctx->GetRegisterInfoByName("eax", 0);
+      switch (num_bytes) {
+      default:
+        break;
+      case 16:
+        // For clang::BuiltinType::UInt128 & Int128
+        // ToDo: Need to decide how to handle it
+        break;
+      case 8: {
+        uint32_t raw_value_low = data.GetMaxU32(&offset, 4);
+        const RegisterInfo *edx_info = reg_ctx->GetRegisterInfoByName("edx", 0);
+        uint32_t raw_value_high = data.GetMaxU32(&offset, num_bytes - offset);
+        register_write_successful =
+            (reg_ctx->WriteRegisterFromUnsigned(eax_info, raw_value_low) &&
+             reg_ctx->WriteRegisterFromUnsigned(edx_info, raw_value_high));
+        break;
+      }
+      case 4:
+      case 2:
+      case 1: {
         uint32_t raw_value = data.GetMaxU32(&offset, num_bytes);
-        register_write_successful = reg_ctx->WriteRegisterFromUnsigned (eax_info, raw_value);
-    }
-    else if ((type_flags & eTypeIsScalar) || (type_flags & eTypeIsEnumeration)) //'Integral' + 'Floating Point'
+        register_write_successful =
+            reg_ctx->WriteRegisterFromUnsigned(eax_info, raw_value);
+        break;
+      }
+      }
+    } else if (type_flags & eTypeIsEnumeration) // handles enum
     {
-        lldb::offset_t offset = 0;
-        const RegisterInfo *eax_info = reg_ctx->GetRegisterInfoByName("eax", 0);
-
-        if (type_flags & eTypeIsInteger)    // 'Integral' except enum
-        {
-            switch (num_bytes)
-            {
-                default:
-                    break;
-                case 16:
-                    // For clang::BuiltinType::UInt128 & Int128
-                    // ToDo: Need to decide how to handle it
-                    break;
-                case 8:
-                {
-                    uint32_t raw_value_low = data.GetMaxU32(&offset, 4);
-                    const RegisterInfo *edx_info = reg_ctx->GetRegisterInfoByName("edx", 0);
-                    uint32_t raw_value_high = data.GetMaxU32(&offset, num_bytes - offset);
-                    register_write_successful = (reg_ctx->WriteRegisterFromUnsigned (eax_info, raw_value_low) &&
-                                                reg_ctx->WriteRegisterFromUnsigned (edx_info, raw_value_high));
-                    break;
-                }
-                case 4:
-                case 2:
-                case 1:
-                {
-                    uint32_t raw_value = data.GetMaxU32(&offset, num_bytes);
-                    register_write_successful = reg_ctx->WriteRegisterFromUnsigned (eax_info, raw_value);
-                    break;
-                }
-            }
-        }
-        else if (type_flags & eTypeIsEnumeration)    // handles enum
-        {
-            uint32_t raw_value = data.GetMaxU32(&offset, num_bytes);
-            register_write_successful = reg_ctx->WriteRegisterFromUnsigned (eax_info, raw_value);
-        }
-        else if (type_flags & eTypeIsFloat)  // 'Floating Point'
-        {
-            RegisterValue st0_value, fstat_value, ftag_value;
-            const RegisterInfo *st0_info = reg_ctx->GetRegisterInfoByName("st0", 0);
-            const RegisterInfo *fstat_info = reg_ctx->GetRegisterInfoByName("fstat", 0);
-            const RegisterInfo *ftag_info = reg_ctx->GetRegisterInfoByName("ftag", 0);
-
-            /* According to Page 3-12 of document
-            System V Application Binary Interface, Intel386 Architecture Processor Supplement, Fourth Edition
-            To return Floating Point values, all st% registers except st0 should be empty after exiting from
-            a function. This requires setting fstat and ftag registers to specific values.
-            fstat: The TOP field of fstat should be set to a value [0,7]. ABI doesn't specify the specific
-            value of TOP in case of function return. Hence, we set the TOP field to 7 by our choice. */
-            uint32_t value_fstat_u32 = 0x00003800;
-
-            /* ftag: Implication of setting TOP to 7 and indicating all st% registers empty except st0 is to set
-            7th bit of 4th byte of FXSAVE area to 1 and all other bits of this byte to 0. This is in accordance
-            with the document Intel 64 and IA-32 Architectures Software Developer's Manual, January 2015 */
-            uint32_t value_ftag_u32 = 0x00000080;
-
-            if (num_bytes <= 12)      // handles float, double, long double, __float80
-            {
-                long double value_long_dbl = 0.0;
-                if (num_bytes == 4)
-                    value_long_dbl = data.GetFloat(&offset);
-                else if (num_bytes == 8)
-                    value_long_dbl = data.GetDouble(&offset);
-                else if (num_bytes == 12)
-                    value_long_dbl = data.GetLongDouble(&offset);
-                else
-                {
-                    error.SetErrorString ("Invalid number of bytes for this return type");
-                    return error;
-                }
-                st0_value.SetLongDouble(value_long_dbl);
-                fstat_value.SetUInt32(value_fstat_u32);
-                ftag_value.SetUInt32(value_ftag_u32);
-                register_write_successful = reg_ctx->WriteRegister(st0_info, st0_value) &&
-                                            reg_ctx->WriteRegister(fstat_info, fstat_value) &&
-                                            reg_ctx->WriteRegister(ftag_info, ftag_value);
-            }
-            else if(num_bytes == 16)   // handles __float128
-            {
-                error.SetErrorString ("Implementation is missing for this clang type.");
-            }
-        }
-        else
-        {
-            // Neither 'Integral' nor 'Floating Point'. If flow reaches here
-            // then check type_flags. This type_flags is not a valid type.
-            error.SetErrorString ("Invalid clang type");
-        }
-    }
-    else
+      uint32_t raw_value = data.GetMaxU32(&offset, num_bytes);
+      register_write_successful =
+          reg_ctx->WriteRegisterFromUnsigned(eax_info, raw_value);
+    } else if (type_flags & eTypeIsFloat) // 'Floating Point'
     {
-        /* 'Complex Floating Point', 'Packed', 'Decimal Floating Point' and 'Aggregate' data types
-        are yet to be implemented */
-        error.SetErrorString ("Currently only Integral and Floating Point clang types are supported.");
+      RegisterValue st0_value, fstat_value, ftag_value;
+      const RegisterInfo *st0_info = reg_ctx->GetRegisterInfoByName("st0", 0);
+      const RegisterInfo *fstat_info =
+          reg_ctx->GetRegisterInfoByName("fstat", 0);
+      const RegisterInfo *ftag_info = reg_ctx->GetRegisterInfoByName("ftag", 0);
+
+      /* According to Page 3-12 of document
+      System V Application Binary Interface, Intel386 Architecture Processor
+      Supplement, Fourth Edition
+      To return Floating Point values, all st% registers except st0 should be
+      empty after exiting from
+      a function. This requires setting fstat and ftag registers to specific
+      values.
+      fstat: The TOP field of fstat should be set to a value [0,7]. ABI doesn't
+      specify the specific
+      value of TOP in case of function return. Hence, we set the TOP field to 7
+      by our choice. */
+      uint32_t value_fstat_u32 = 0x00003800;
+
+      /* ftag: Implication of setting TOP to 7 and indicating all st% registers
+      empty except st0 is to set
+      7th bit of 4th byte of FXSAVE area to 1 and all other bits of this byte to
+      0. This is in accordance
+      with the document Intel 64 and IA-32 Architectures Software Developer's
+      Manual, January 2015 */
+      uint32_t value_ftag_u32 = 0x00000080;
+
+      if (num_bytes <= 12) // handles float, double, long double, __float80
+      {
+        long double value_long_dbl = 0.0;
+        if (num_bytes == 4)
+          value_long_dbl = data.GetFloat(&offset);
+        else if (num_bytes == 8)
+          value_long_dbl = data.GetDouble(&offset);
+        else if (num_bytes == 12)
+          value_long_dbl = data.GetLongDouble(&offset);
+        else {
+          error.SetErrorString("Invalid number of bytes for this return type");
+          return error;
+        }
+        st0_value.SetLongDouble(value_long_dbl);
+        fstat_value.SetUInt32(value_fstat_u32);
+        ftag_value.SetUInt32(value_ftag_u32);
+        register_write_successful =
+            reg_ctx->WriteRegister(st0_info, st0_value) &&
+            reg_ctx->WriteRegister(fstat_info, fstat_value) &&
+            reg_ctx->WriteRegister(ftag_info, ftag_value);
+      } else if (num_bytes == 16) // handles __float128
+      {
+        error.SetErrorString("Implementation is missing for this clang type.");
+      }
+    } else {
+      // Neither 'Integral' nor 'Floating Point'. If flow reaches here
+      // then check type_flags. This type_flags is not a valid type.
+      error.SetErrorString("Invalid clang type");
     }
-    if (!register_write_successful)
-        error.SetErrorString ("Register writing failed");
-    return error;
+  } else {
+    /* 'Complex Floating Point', 'Packed', 'Decimal Floating Point' and
+    'Aggregate' data types
+    are yet to be implemented */
+    error.SetErrorString("Currently only Integral and Floating Point clang "
+                         "types are supported.");
+  }
+  if (!register_write_successful)
+    error.SetErrorString("Register writing failed");
+  return error;
 }
 
-ValueObjectSP
-ABISysV_i386::GetReturnValueObjectSimple (Thread &thread,
-                                          CompilerType &return_compiler_type) const
-{
-    ValueObjectSP return_valobj_sp;
-    Value value;
-
-    if (!return_compiler_type)
-        return return_valobj_sp;
+ValueObjectSP ABISysV_i386::GetReturnValueObjectSimple(
+    Thread &thread, CompilerType &return_compiler_type) const {
+  ValueObjectSP return_valobj_sp;
+  Value value;
 
-    value.SetCompilerType (return_compiler_type);
+  if (!return_compiler_type)
+    return return_valobj_sp;
 
-    RegisterContext *reg_ctx = thread.GetRegisterContext().get();
-    if (!reg_ctx)
-        return return_valobj_sp;
+  value.SetCompilerType(return_compiler_type);
 
-    const uint32_t type_flags = return_compiler_type.GetTypeInfo ();
+  RegisterContext *reg_ctx = thread.GetRegisterContext().get();
+  if (!reg_ctx)
+    return return_valobj_sp;
 
-    unsigned eax_id = reg_ctx->GetRegisterInfoByName("eax", 0)->kinds[eRegisterKindLLDB];
-    unsigned edx_id = reg_ctx->GetRegisterInfoByName("edx", 0)->kinds[eRegisterKindLLDB];
+  const uint32_t type_flags = return_compiler_type.GetTypeInfo();
 
-    // Following "IF ELSE" block categorizes various 'Fundamental Data Types'.
-    // The terminology 'Fundamental Data Types' used here is adopted from
-    // Table 2.1 of the reference document (specified on top of this file)
+  unsigned eax_id =
+      reg_ctx->GetRegisterInfoByName("eax", 0)->kinds[eRegisterKindLLDB];
+  unsigned edx_id =
+      reg_ctx->GetRegisterInfoByName("edx", 0)->kinds[eRegisterKindLLDB];
+
+  // Following "IF ELSE" block categorizes various 'Fundamental Data Types'.
+  // The terminology 'Fundamental Data Types' used here is adopted from
+  // Table 2.1 of the reference document (specified on top of this file)
+
+  if (type_flags & eTypeIsPointer) // 'Pointer'
+  {
+    uint32_t ptr =
+        thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) &
+        0xffffffff;
+    value.SetValueType(Value::eValueTypeScalar);
+    value.GetScalar() = ptr;
+    return_valobj_sp = ValueObjectConstResult::Create(
+        thread.GetStackFrameAtIndex(0).get(), value, ConstString(""));
+  } else if ((type_flags & eTypeIsScalar) ||
+             (type_flags & eTypeIsEnumeration)) //'Integral' + 'Floating Point'
+  {
+    value.SetValueType(Value::eValueTypeScalar);
+    const size_t byte_size = return_compiler_type.GetByteSize(nullptr);
+    bool success = false;
 
-    if (type_flags & eTypeIsPointer)     // 'Pointer'
+    if (type_flags & eTypeIsInteger) // 'Integral' except enum
     {
-        uint32_t ptr = thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) & 0xffffffff;
-        value.SetValueType(Value::eValueTypeScalar);
-        value.GetScalar() = ptr;
-        return_valobj_sp = ValueObjectConstResult::Create (thread.GetStackFrameAtIndex(0).get(),
-                                                           value,
-                                                           ConstString(""));
-    }
-    else if ((type_flags & eTypeIsScalar) || (type_flags & eTypeIsEnumeration)) //'Integral' + 'Floating Point'
+      const bool is_signed = ((type_flags & eTypeIsSigned) != 0);
+      uint64_t raw_value =
+          thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) &
+          0xffffffff;
+      raw_value |=
+          (thread.GetRegisterContext()->ReadRegisterAsUnsigned(edx_id, 0) &
+           0xffffffff)
+          << 32;
+
+      switch (byte_size) {
+      default:
+        break;
+
+      case 16:
+        // For clang::BuiltinType::UInt128 & Int128
+        // ToDo: Need to decide how to handle it
+        break;
+
+      case 8:
+        if (is_signed)
+          value.GetScalar() = (int64_t)(raw_value);
+        else
+          value.GetScalar() = (uint64_t)(raw_value);
+        success = true;
+        break;
+
+      case 4:
+        if (is_signed)
+          value.GetScalar() = (int32_t)(raw_value & UINT32_MAX);
+        else
+          value.GetScalar() = (uint32_t)(raw_value & UINT32_MAX);
+        success = true;
+        break;
+
+      case 2:
+        if (is_signed)
+          value.GetScalar() = (int16_t)(raw_value & UINT16_MAX);
+        else
+          value.GetScalar() = (uint16_t)(raw_value & UINT16_MAX);
+        success = true;
+        break;
+
+      case 1:
+        if (is_signed)
+          value.GetScalar() = (int8_t)(raw_value & UINT8_MAX);
+        else
+          value.GetScalar() = (uint8_t)(raw_value & UINT8_MAX);
+        success = true;
+        break;
+      }
+
+      if (success)
+        return_valobj_sp = ValueObjectConstResult::Create(
+            thread.GetStackFrameAtIndex(0).get(), value, ConstString(""));
+    } else if (type_flags & eTypeIsEnumeration) // handles enum
     {
-        value.SetValueType(Value::eValueTypeScalar);
-        const size_t byte_size = return_compiler_type.GetByteSize(nullptr);
-        bool success = false;
-
-        if (type_flags & eTypeIsInteger)    // 'Integral' except enum
-        {
-            const bool is_signed = ((type_flags & eTypeIsSigned) != 0);
-            uint64_t raw_value = thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) & 0xffffffff;
-            raw_value |= (thread.GetRegisterContext()->ReadRegisterAsUnsigned(edx_id, 0) & 0xffffffff) << 32;
+      uint32_t enm =
+          thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) &
+          0xffffffff;
+      value.SetValueType(Value::eValueTypeScalar);
+      value.GetScalar() = enm;
+      return_valobj_sp = ValueObjectConstResult::Create(
+          thread.GetStackFrameAtIndex(0).get(), value, ConstString(""));
+    } else if (type_flags & eTypeIsFloat) // 'Floating Point'
+    {
+      if (byte_size <= 12) // handles float, double, long double, __float80
+      {
+        const RegisterInfo *st0_info = reg_ctx->GetRegisterInfoByName("st0", 0);
+        RegisterValue st0_value;
+
+        if (reg_ctx->ReadRegister(st0_info, st0_value)) {
+          DataExtractor data;
+          if (st0_value.GetData(data)) {
+            lldb::offset_t offset = 0;
+            long double value_long_double = data.GetLongDouble(&offset);
 
-            switch (byte_size)
+            if (byte_size == 4) // float is 4 bytes
             {
-                default:
-                   break;
-
-                case 16:
-                   // For clang::BuiltinType::UInt128 & Int128
-                   // ToDo: Need to decide how to handle it
-                   break;
-
-                case 8:
-                    if (is_signed)
-                        value.GetScalar() = (int64_t)(raw_value);
-                    else
-                        value.GetScalar() = (uint64_t)(raw_value);
-                    success = true;
-                    break;
-
-                case 4:
-                    if (is_signed)
-                        value.GetScalar() = (int32_t)(raw_value & UINT32_MAX);
-                    else
-                        value.GetScalar() = (uint32_t)(raw_value & UINT32_MAX);
-                    success = true;
-                    break;
-
-                case 2:
-                    if (is_signed)
-                        value.GetScalar() = (int16_t)(raw_value & UINT16_MAX);
-                    else
-                        value.GetScalar() = (uint16_t)(raw_value & UINT16_MAX);
-                    success = true;
-                    break;
-
-                case 1:
-                    if (is_signed)
-                        value.GetScalar() = (int8_t)(raw_value & UINT8_MAX);
-                    else
-                        value.GetScalar() = (uint8_t)(raw_value & UINT8_MAX);
-                    success = true;
-                    break;
-             }
-
-             if (success)
-                 return_valobj_sp = ValueObjectConstResult::Create (thread.GetStackFrameAtIndex(0).get(),
-                                                                    value,
-                                                                    ConstString(""));
-        }
-        else if (type_flags & eTypeIsEnumeration)     // handles enum
-        {
-            uint32_t enm = thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) & 0xffffffff;
-            value.SetValueType(Value::eValueTypeScalar);
-            value.GetScalar() = enm;
-            return_valobj_sp = ValueObjectConstResult::Create (thread.GetStackFrameAtIndex(0).get(),
-                                                               value,
-                                                               ConstString(""));
-        }
-        else if (type_flags & eTypeIsFloat)  // 'Floating Point'
-        {
-            if (byte_size <= 12)      // handles float, double, long double, __float80
+              float value_float = (float)value_long_double;
+              value.GetScalar() = value_float;
+              success = true;
+            } else if (byte_size == 8) // double is 8 bytes
             {
-                const RegisterInfo *st0_info = reg_ctx->GetRegisterInfoByName("st0", 0);
-                RegisterValue st0_value;
-
-                if (reg_ctx->ReadRegister (st0_info, st0_value))
-                {
-                    DataExtractor data;
-                    if (st0_value.GetData(data))
-                    {
-                        lldb::offset_t offset = 0;
-                        long double value_long_double = data.GetLongDouble(&offset);
-
-                        if (byte_size == 4)    // float is 4 bytes
-                        {
-                            float value_float = (float)value_long_double;
-                            value.GetScalar() = value_float;
-                            success = true;
-                        }
-                        else if (byte_size == 8)   // double is 8 bytes
-                        {
-                            // On Android Platform: long double is also 8 bytes
-                            // It will be handled here only.
-                            double value_double = (double)value_long_double;
-                            value.GetScalar() =  value_double;
-                            success = true;
-                        }
-                        else if (byte_size == 12) // long double and __float80 are 12 bytes on i386
-                        {
-                            value.GetScalar() = value_long_double;
-                            success = true;
-                        }
-                    }
-                }
-
-                if (success)
-                    return_valobj_sp = ValueObjectConstResult::Create (thread.GetStackFrameAtIndex(0).get(),
-                                                                       value,
-                                                                       ConstString(""));
-            }
-            else if(byte_size == 16)   // handles __float128
+              // On Android Platform: long double is also 8 bytes
+              // It will be handled here only.
+              double value_double = (double)value_long_double;
+              value.GetScalar() = value_double;
+              success = true;
+            } else if (byte_size ==
+                       12) // long double and __float80 are 12 bytes on i386
             {
-                lldb::addr_t storage_addr = (uint32_t)(thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) & 0xffffffff);
-                return_valobj_sp = ValueObjectMemory::Create (&thread,
-                                                               "",
-                                                              Address (storage_addr, nullptr),
-                                                              return_compiler_type);
+              value.GetScalar() = value_long_double;
+              success = true;
             }
+          }
         }
-        else  // Neither 'Integral' nor 'Floating Point'
-        {
-            // If flow reaches here then check type_flags
-            // This type_flags is unhandled
-        }
-    }
-    else if (type_flags & eTypeIsComplex)    // 'Complex Floating Point'
+
+        if (success)
+          return_valobj_sp = ValueObjectConstResult::Create(
+              thread.GetStackFrameAtIndex(0).get(), value, ConstString(""));
+      } else if (byte_size == 16) // handles __float128
+      {
+        lldb::addr_t storage_addr = (uint32_t)(
+            thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) &
+            0xffffffff);
+        return_valobj_sp = ValueObjectMemory::Create(
+            &thread, "", Address(storage_addr, nullptr), return_compiler_type);
+      }
+    } else // Neither 'Integral' nor 'Floating Point'
     {
-       // ToDo: Yet to be implemented
+      // If flow reaches here then check type_flags
+      // This type_flags is unhandled
     }
-    else if (type_flags & eTypeIsVector)    // 'Packed'
-    {
-        const size_t byte_size = return_compiler_type.GetByteSize(nullptr);
-        if (byte_size > 0)
-        {
-            const RegisterInfo *vec_reg = reg_ctx->GetRegisterInfoByName("xmm0", 0);
-            if (vec_reg == nullptr)
-                vec_reg = reg_ctx->GetRegisterInfoByName("mm0", 0);
-
-            if (vec_reg)
-            {
-                if (byte_size <= vec_reg->byte_size)
-                {
-                    ProcessSP process_sp (thread.GetProcess());
-                    if (process_sp)
-                    {
-                        std::unique_ptr<DataBufferHeap> heap_data_ap (new DataBufferHeap(byte_size, 0));
-                        const ByteOrder byte_order = process_sp->GetByteOrder();
-                        RegisterValue reg_value;
-                        if (reg_ctx->ReadRegister(vec_reg, reg_value))
-                        {
-                            Error error;
-                            if (reg_value.GetAsMemoryData (vec_reg,
-                                                           heap_data_ap->GetBytes(),
-                                                           heap_data_ap->GetByteSize(),
-                                                           byte_order,
-                                                           error))
-                            {
-                                DataExtractor data (DataBufferSP (heap_data_ap.release()),
-                                                    byte_order,
-                                                    process_sp->GetTarget().GetArchitecture().GetAddressByteSize());
-                                return_valobj_sp = ValueObjectConstResult::Create (&thread,
-                                                                                   return_compiler_type,
-                                                                                   ConstString(""),
-                                                                                   data);
-                            }
-                        }
-                    }
-                }
-                else if (byte_size <= vec_reg->byte_size*2)
-                {
-                    const RegisterInfo *vec_reg2 = reg_ctx->GetRegisterInfoByName("xmm1", 0);
-                    if (vec_reg2)
-                    {
-                        ProcessSP process_sp (thread.GetProcess());
-                        if (process_sp)
-                        {
-                            std::unique_ptr<DataBufferHeap> heap_data_ap (new DataBufferHeap(byte_size, 0));
-                            const ByteOrder byte_order = process_sp->GetByteOrder();
-                            RegisterValue reg_value;
-                            RegisterValue reg_value2;
-                            if (reg_ctx->ReadRegister(vec_reg, reg_value) && reg_ctx->ReadRegister(vec_reg2, reg_value2))
-                            {
-
-                                Error error;
-                                if (reg_value.GetAsMemoryData (vec_reg,
-                                                               heap_data_ap->GetBytes(),
-                                                               vec_reg->byte_size,
-                                                               byte_order,
-                                                               error) &&
-                                    reg_value2.GetAsMemoryData (vec_reg2,
-                                                                heap_data_ap->GetBytes() + vec_reg->byte_size,
-                                                                heap_data_ap->GetByteSize() - vec_reg->byte_size,
-                                                                byte_order,
-                                                                error))
-                                {
-                                    DataExtractor data (DataBufferSP (heap_data_ap.release()),
-                                                        byte_order,
-                                                        process_sp->GetTarget().GetArchitecture().GetAddressByteSize());
-                                    return_valobj_sp = ValueObjectConstResult::Create (&thread,
-                                                                                       return_compiler_type,
-                                                                                       ConstString(""),
-                                                                                       data);
-                                }
-                            }
-                        }
-                    }
+  } else if (type_flags & eTypeIsComplex) // 'Complex Floating Point'
+  {
+    // ToDo: Yet to be implemented
+  } else if (type_flags & eTypeIsVector) // 'Packed'
+  {
+    const size_t byte_size = return_compiler_type.GetByteSize(nullptr);
+    if (byte_size > 0) {
+      const RegisterInfo *vec_reg = reg_ctx->GetRegisterInfoByName("xmm0", 0);
+      if (vec_reg == nullptr)
+        vec_reg = reg_ctx->GetRegisterInfoByName("mm0", 0);
+
+      if (vec_reg) {
+        if (byte_size <= vec_reg->byte_size) {
+          ProcessSP process_sp(thread.GetProcess());
+          if (process_sp) {
+            std::unique_ptr<DataBufferHeap> heap_data_ap(
+                new DataBufferHeap(byte_size, 0));
+            const ByteOrder byte_order = process_sp->GetByteOrder();
+            RegisterValue reg_value;
+            if (reg_ctx->ReadRegister(vec_reg, reg_value)) {
+              Error error;
+              if (reg_value.GetAsMemoryData(vec_reg, heap_data_ap->GetBytes(),
+                                            heap_data_ap->GetByteSize(),
+                                            byte_order, error)) {
+                DataExtractor data(DataBufferSP(heap_data_ap.release()),
+                                   byte_order, process_sp->GetTarget()
+                                                   .GetArchitecture()
+                                                   .GetAddressByteSize());
+                return_valobj_sp = ValueObjectConstResult::Create(
+                    &thread, return_compiler_type, ConstString(""), data);
+              }
+            }
+          }
+        } else if (byte_size <= vec_reg->byte_size * 2) {
+          const RegisterInfo *vec_reg2 =
+              reg_ctx->GetRegisterInfoByName("xmm1", 0);
+          if (vec_reg2) {
+            ProcessSP process_sp(thread.GetProcess());
+            if (process_sp) {
+              std::unique_ptr<DataBufferHeap> heap_data_ap(
+                  new DataBufferHeap(byte_size, 0));
+              const ByteOrder byte_order = process_sp->GetByteOrder();
+              RegisterValue reg_value;
+              RegisterValue reg_value2;
+              if (reg_ctx->ReadRegister(vec_reg, reg_value) &&
+                  reg_ctx->ReadRegister(vec_reg2, reg_value2)) {
+
+                Error error;
+                if (reg_value.GetAsMemoryData(vec_reg, heap_data_ap->GetBytes(),
+                                              vec_reg->byte_size, byte_order,
+                                              error) &&
+                    reg_value2.GetAsMemoryData(
+                        vec_reg2, heap_data_ap->GetBytes() + vec_reg->byte_size,
+                        heap_data_ap->GetByteSize() - vec_reg->byte_size,
+                        byte_order, error)) {
+                  DataExtractor data(DataBufferSP(heap_data_ap.release()),
+                                     byte_order, process_sp->GetTarget()
+                                                     .GetArchitecture()
+                                                     .GetAddressByteSize());
+                  return_valobj_sp = ValueObjectConstResult::Create(
+                      &thread, return_compiler_type, ConstString(""), data);
                 }
+              }
             }
+          }
         }
+      }
     }
-    else    // 'Decimal Floating Point'
-    {
-       //ToDo: Yet to be implemented
-    }
-    return return_valobj_sp;
+  } else // 'Decimal Floating Point'
+  {
+    // ToDo: Yet to be implemented
+  }
+  return return_valobj_sp;
 }
 
-ValueObjectSP
-ABISysV_i386::GetReturnValueObjectImpl (Thread &thread, CompilerType &return_compiler_type) const
-{
-    ValueObjectSP return_valobj_sp;
-
-    if (!return_compiler_type)
-        return return_valobj_sp;
-
-    ExecutionContext exe_ctx (thread.shared_from_this());
-    return_valobj_sp = GetReturnValueObjectSimple(thread, return_compiler_type);
-    if (return_valobj_sp)
-        return return_valobj_sp;
-
-    RegisterContextSP reg_ctx_sp = thread.GetRegisterContext();
-    if (!reg_ctx_sp)
-       return return_valobj_sp;
+ValueObjectSP ABISysV_i386::GetReturnValueObjectImpl(
+    Thread &thread, CompilerType &return_compiler_type) const {
+  ValueObjectSP return_valobj_sp;
 
-    if (return_compiler_type.IsAggregateType())
-    {
-        unsigned eax_id = reg_ctx_sp->GetRegisterInfoByName("eax", 0)->kinds[eRegisterKindLLDB];
-        lldb::addr_t storage_addr = (uint32_t)(thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) & 0xffffffff);
-        return_valobj_sp = ValueObjectMemory::Create (&thread,
-                                                      "",
-                                                      Address (storage_addr, nullptr),
-                                                      return_compiler_type);
-    }
+  if (!return_compiler_type)
+    return return_valobj_sp;
 
+  ExecutionContext exe_ctx(thread.shared_from_this());
+  return_valobj_sp = GetReturnValueObjectSimple(thread, return_compiler_type);
+  if (return_valobj_sp)
     return return_valobj_sp;
+
+  RegisterContextSP reg_ctx_sp = thread.GetRegisterContext();
+  if (!reg_ctx_sp)
+    return return_valobj_sp;
+
+  if (return_compiler_type.IsAggregateType()) {
+    unsigned eax_id =
+        reg_ctx_sp->GetRegisterInfoByName("eax", 0)->kinds[eRegisterKindLLDB];
+    lldb::addr_t storage_addr = (uint32_t)(
+        thread.GetRegisterContext()->ReadRegisterAsUnsigned(eax_id, 0) &
+        0xffffffff);
+    return_valobj_sp = ValueObjectMemory::Create(
+        &thread, "", Address(storage_addr, nullptr), return_compiler_type);
+  }
+
+  return return_valobj_sp;
 }
 
 // This defines CFA as esp+4
 // The saved pc is at CFA-4 (i.e. esp+0)
 // The saved esp is CFA+0
 
-bool
-ABISysV_i386::CreateFunctionEntryUnwindPlan (UnwindPlan &unwind_plan)
-{
-    unwind_plan.Clear();
-    unwind_plan.SetRegisterKind (eRegisterKindDWARF);
-
-    uint32_t sp_reg_num = dwarf_esp;
-    uint32_t pc_reg_num = dwarf_eip;
-
-    UnwindPlan::RowSP row(new UnwindPlan::Row);
-    row->GetCFAValue().SetIsRegisterPlusOffset(sp_reg_num, 4);
-    row->SetRegisterLocationToAtCFAPlusOffset(pc_reg_num, -4, false);
-    row->SetRegisterLocationToIsCFAPlusOffset(sp_reg_num, 0, true);
-    unwind_plan.AppendRow (row);
-    unwind_plan.SetSourceName ("i386 at-func-entry default");
-    unwind_plan.SetSourcedFromCompiler (eLazyBoolNo);
-    return true;
+bool ABISysV_i386::CreateFunctionEntryUnwindPlan(UnwindPlan &unwind_plan) {
+  unwind_plan.Clear();
+  unwind_plan.SetRegisterKind(eRegisterKindDWARF);
+
+  uint32_t sp_reg_num = dwarf_esp;
+  uint32_t pc_reg_num = dwarf_eip;
+
+  UnwindPlan::RowSP row(new UnwindPlan::Row);
+  row->GetCFAValue().SetIsRegisterPlusOffset(sp_reg_num, 4);
+  row->SetRegisterLocationToAtCFAPlusOffset(pc_reg_num, -4, false);
+  row->SetRegisterLocationToIsCFAPlusOffset(sp_reg_num, 0, true);
+  unwind_plan.AppendRow(row);
+  unwind_plan.SetSourceName("i386 at-func-entry default");
+  unwind_plan.SetSourcedFromCompiler(eLazyBoolNo);
+  return true;
 }
 
 // This defines CFA as ebp+8
@@ -806,104 +1302,89 @@ ABISysV_i386::CreateFunctionEntryUnwindP
 // The saved ebp is at CFA-8 (i.e. ebp+0)
 // The saved esp is CFA+0
 
-bool
-ABISysV_i386::CreateDefaultUnwindPlan (UnwindPlan &unwind_plan)
-{
-    unwind_plan.Clear();
-    unwind_plan.SetRegisterKind (eRegisterKindDWARF);
-
-    uint32_t fp_reg_num = dwarf_ebp;
-    uint32_t sp_reg_num = dwarf_esp;
-    uint32_t pc_reg_num = dwarf_eip;
-
-    UnwindPlan::RowSP row(new UnwindPlan::Row);
-    const int32_t ptr_size = 4;
-
-    row->GetCFAValue().SetIsRegisterPlusOffset(fp_reg_num, 2 * ptr_size);
-    row->SetOffset (0);
-
-    row->SetRegisterLocationToAtCFAPlusOffset(fp_reg_num, ptr_size * -2, true);
-    row->SetRegisterLocationToAtCFAPlusOffset(pc_reg_num, ptr_size * -1, true);
-    row->SetRegisterLocationToIsCFAPlusOffset(sp_reg_num, 0, true);
-
-    unwind_plan.AppendRow (row);
-    unwind_plan.SetSourceName ("i386 default unwind plan");
-    unwind_plan.SetSourcedFromCompiler (eLazyBoolNo);
-    unwind_plan.SetUnwindPlanValidAtAllInstructions (eLazyBoolNo);
-    return true;
+bool ABISysV_i386::CreateDefaultUnwindPlan(UnwindPlan &unwind_plan) {
+  unwind_plan.Clear();
+  unwind_plan.SetRegisterKind(eRegisterKindDWARF);
+
+  uint32_t fp_reg_num = dwarf_ebp;
+  uint32_t sp_reg_num = dwarf_esp;
+  uint32_t pc_reg_num = dwarf_eip;
+
+  UnwindPlan::RowSP row(new UnwindPlan::Row);
+  const int32_t ptr_size = 4;
+
+  row->GetCFAValue().SetIsRegisterPlusOffset(fp_reg_num, 2 * ptr_size);
+  row->SetOffset(0);
+
+  row->SetRegisterLocationToAtCFAPlusOffset(fp_reg_num, ptr_size * -2, true);
+  row->SetRegisterLocationToAtCFAPlusOffset(pc_reg_num, ptr_size * -1, true);
+  row->SetRegisterLocationToIsCFAPlusOffset(sp_reg_num, 0, true);
+
+  unwind_plan.AppendRow(row);
+  unwind_plan.SetSourceName("i386 default unwind plan");
+  unwind_plan.SetSourcedFromCompiler(eLazyBoolNo);
+  unwind_plan.SetUnwindPlanValidAtAllInstructions(eLazyBoolNo);
+  return true;
 }
 
 // According to "Register Usage" in reference document (specified on top
 // of this source file) ebx, ebp, esi, edi and esp registers are preserved
 // i.e. non-volatile i.e. callee-saved on i386
-bool
-ABISysV_i386::RegisterIsCalleeSaved (const RegisterInfo *reg_info)
-{
-    if (!reg_info)
-        return false;
-
-    // Saved registers are ebx, ebp, esi, edi, esp, eip
-    const char *name = reg_info->name;
-    if (name[0] == 'e')
-    {
-        switch (name[1])
-        {
-            case 'b':
-                if (name[2] == 'x' || name[2] == 'p')
-                    return name[3] == '\0';
-                break;
-            case 'd':
-                if (name[2] == 'i')
-                    return name[3] == '\0';
-                break;
-            case 'i':
-                if (name[2] == 'p')
-                    return name[3] == '\0';
-                break;
-            case 's':
-                if (name[2] == 'i' || name[2] == 'p')
-                    return name[3] == '\0';
-                break;
-        }
+bool ABISysV_i386::RegisterIsCalleeSaved(const RegisterInfo *reg_info) {
+  if (!reg_info)
+    return false;
+
+  // Saved registers are ebx, ebp, esi, edi, esp, eip
+  const char *name = reg_info->name;
+  if (name[0] == 'e') {
+    switch (name[1]) {
+    case 'b':
+      if (name[2] == 'x' || name[2] == 'p')
+        return name[3] == '\0';
+      break;
+    case 'd':
+      if (name[2] == 'i')
+        return name[3] == '\0';
+      break;
+    case 'i':
+      if (name[2] == 'p')
+        return name[3] == '\0';
+      break;
+    case 's':
+      if (name[2] == 'i' || name[2] == 'p')
+        return name[3] == '\0';
+      break;
     }
+  }
 
-    if (name[0] == 's' && name[1] == 'p' && name[2] == '\0')   // sp
-        return true;
-    if (name[0] == 'f' && name[1] == 'p' && name[2] == '\0')   // fp
-        return true;
-    if (name[0] == 'p' && name[1] == 'c' && name[2] == '\0')   // pc
-        return true;
+  if (name[0] == 's' && name[1] == 'p' && name[2] == '\0') // sp
+    return true;
+  if (name[0] == 'f' && name[1] == 'p' && name[2] == '\0') // fp
+    return true;
+  if (name[0] == 'p' && name[1] == 'c' && name[2] == '\0') // pc
+    return true;
 
-    return false;
+  return false;
 }
 
-void
-ABISysV_i386::Initialize()
-{
-    PluginManager::RegisterPlugin (GetPluginNameStatic(),
-                                   "System V ABI for i386 targets",
-                                   CreateInstance);
+void ABISysV_i386::Initialize() {
+  PluginManager::RegisterPlugin(
+      GetPluginNameStatic(), "System V ABI for i386 targets", CreateInstance);
 }
 
-void
-ABISysV_i386::Terminate()
-{
-    PluginManager::UnregisterPlugin (CreateInstance);
+void ABISysV_i386::Terminate() {
+  PluginManager::UnregisterPlugin(CreateInstance);
 }
 
 //------------------------------------------------------------------
 // PluginInterface protocol
 //------------------------------------------------------------------
 
-lldb_private::ConstString
-ABISysV_i386::GetPluginNameStatic()
-{
-    static ConstString g_name("sysv-i386");
-    return g_name;
+lldb_private::ConstString ABISysV_i386::GetPluginNameStatic() {
+  static ConstString g_name("sysv-i386");
+  return g_name;
 }
 
-lldb_private::ConstString
-ABISysV_i386::GetPluginName()
-{
-    return GetPluginNameStatic();
+lldb_private::ConstString ABISysV_i386::GetPluginName() {
+  return GetPluginNameStatic();
 }

Modified: lldb/trunk/source/Plugins/ABI/SysV-i386/ABISysV_i386.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/ABI/SysV-i386/ABISysV_i386.h?rev=280751&r1=280750&r2=280751&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/ABI/SysV-i386/ABISysV_i386.h (original)
+++ lldb/trunk/source/Plugins/ABI/SysV-i386/ABISysV_i386.h Tue Sep  6 15:57:50 2016
@@ -14,128 +14,104 @@
 // C++ Includes
 // Other libraries and framework includes
 // Project includes
-#include "lldb/lldb-private.h"
 #include "lldb/Target/ABI.h"
+#include "lldb/lldb-private.h"
 
-class ABISysV_i386 :
-    public lldb_private::ABI
-{
+class ABISysV_i386 : public lldb_private::ABI {
 public:
-    ~ABISysV_i386() override = default;
+  ~ABISysV_i386() override = default;
+
+  size_t GetRedZoneSize() const override {
+    return 0; // There is no red zone for i386 Architecture
+  }
+
+  bool PrepareTrivialCall(lldb_private::Thread &thread, lldb::addr_t sp,
+                          lldb::addr_t functionAddress,
+                          lldb::addr_t returnAddress,
+                          llvm::ArrayRef<lldb::addr_t> args) const override;
+
+  bool GetArgumentValues(lldb_private::Thread &thread,
+                         lldb_private::ValueList &values) const override;
+
+  lldb_private::Error
+  SetReturnValueObject(lldb::StackFrameSP &frame_sp,
+                       lldb::ValueObjectSP &new_value) override;
+
+  lldb::ValueObjectSP
+  GetReturnValueObjectImpl(lldb_private::Thread &thread,
+                           lldb_private::CompilerType &type) const override;
+
+  bool
+  CreateFunctionEntryUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
+
+  bool CreateDefaultUnwindPlan(lldb_private::UnwindPlan &unwind_plan) override;
+
+  bool RegisterIsVolatile(const lldb_private::RegisterInfo *reg_info) override {
+    return !RegisterIsCalleeSaved(reg_info);
+  }
+
+  // The SysV i386 ABI requires that stack frames be 16 byte aligned.
+  // When there is a trap handler on the stack, e.g. _sigtramp in userland
+  // code, we've seen that the stack pointer is often not aligned properly
+  // before the handler is invoked.  This means that lldb will stop the unwind
+  // early -- before the function which caused the trap.
+  //
+  // To work around this, we relax that alignment to be just word-size
+  // (4-bytes).
+  // Whitelisting the trap handlers for user space would be easy (_sigtramp) but
+  // in other environments there can be a large number of different functions
+  // involved in async traps.
+
+  // ToDo: When __m256 arguments are passed then stack frames should be
+  // 32 byte aligned. Decide what to do for 32 byte alignment checking
+  bool CallFrameAddressIsValid(lldb::addr_t cfa) override {
+    // Make sure the stack call frame addresses are 4 byte aligned
+    if (cfa & (4ull - 1ull))
+      return false; // Not 4 byte aligned
+    if (cfa == 0)
+      return false; // Zero is not a valid stack address
+    return true;
+  }
+
+  bool CodeAddressIsValid(lldb::addr_t pc) override {
+    // Check whether the address is a valid 32 bit address
+    return (pc <= UINT32_MAX);
+  }
+
+  const lldb_private::RegisterInfo *
+  GetRegisterInfoArray(uint32_t &count) override;
+
+  //------------------------------------------------------------------
+  // Static Functions
+  //------------------------------------------------------------------
+
+  static void Initialize();
+
+  static void Terminate();
+
+  static lldb::ABISP CreateInstance(const lldb_private::ArchSpec &arch);
+
+  //------------------------------------------------------------------
+  // PluginInterface protocol
+  //------------------------------------------------------------------
+
+  static lldb_private::ConstString GetPluginNameStatic();
+
+  lldb_private::ConstString GetPluginName() override;
 
-    size_t
-    GetRedZoneSize () const override
-    {
-        return 0; // There is no red zone for i386 Architecture
-    }
-
-    bool
-    PrepareTrivialCall (lldb_private::Thread &thread,
-                        lldb::addr_t sp,
-                        lldb::addr_t functionAddress,
-                        lldb::addr_t returnAddress,
-                        llvm::ArrayRef<lldb::addr_t> args) const override;
-
-    bool
-    GetArgumentValues (lldb_private::Thread &thread,
-                       lldb_private::ValueList &values) const override;
-
-    lldb_private::Error
-    SetReturnValueObject(lldb::StackFrameSP &frame_sp, lldb::ValueObjectSP &new_value) override;
-
-    lldb::ValueObjectSP
-    GetReturnValueObjectImpl (lldb_private::Thread &thread,
-                          lldb_private::CompilerType &type) const override;
-
-    bool
-    CreateFunctionEntryUnwindPlan (lldb_private::UnwindPlan &unwind_plan) override;
-
-    bool
-    CreateDefaultUnwindPlan (lldb_private::UnwindPlan &unwind_plan) override;
-
-    bool
-    RegisterIsVolatile (const lldb_private::RegisterInfo *reg_info) override
-    {
-        return !RegisterIsCalleeSaved (reg_info);
-    }
-
-    // The SysV i386 ABI requires that stack frames be 16 byte aligned.
-    // When there is a trap handler on the stack, e.g. _sigtramp in userland
-    // code, we've seen that the stack pointer is often not aligned properly
-    // before the handler is invoked.  This means that lldb will stop the unwind
-    // early -- before the function which caused the trap.
-    //
-    // To work around this, we relax that alignment to be just word-size (4-bytes).
-    // Whitelisting the trap handlers for user space would be easy (_sigtramp) but
-    // in other environments there can be a large number of different functions
-    // involved in async traps.
-
-    // ToDo: When __m256 arguments are passed then stack frames should be
-    // 32 byte aligned. Decide what to do for 32 byte alignment checking
-    bool
-    CallFrameAddressIsValid (lldb::addr_t cfa) override
-    {
-        // Make sure the stack call frame addresses are 4 byte aligned
-        if (cfa & (4ull - 1ull))
-            return false;   // Not 4 byte aligned
-        if (cfa == 0)
-            return false;   // Zero is not a valid stack address
-        return true;
-    }
-
-    bool
-    CodeAddressIsValid (lldb::addr_t pc) override
-    {
-        // Check whether the address is a valid 32 bit address
-        return (pc <= UINT32_MAX);
-    }
-
-    const lldb_private::RegisterInfo *
-    GetRegisterInfoArray (uint32_t &count) override;
-
-    //------------------------------------------------------------------
-    // Static Functions
-    //------------------------------------------------------------------
-
-    static void
-    Initialize();
-
-    static void
-    Terminate();
-
-    static lldb::ABISP
-    CreateInstance (const lldb_private::ArchSpec &arch);
-
-    //------------------------------------------------------------------
-    // PluginInterface protocol
-    //------------------------------------------------------------------
-
-    static lldb_private::ConstString
-    GetPluginNameStatic();
-
-    lldb_private::ConstString
-    GetPluginName() override;
-
-    uint32_t
-    GetPluginVersion() override
-    {
-        return 1;
-    }
+  uint32_t GetPluginVersion() override { return 1; }
 
 protected:
-    lldb::ValueObjectSP
-    GetReturnValueObjectSimple(lldb_private::Thread &thread,
-                               lldb_private::CompilerType &ast_type) const;
+  lldb::ValueObjectSP
+  GetReturnValueObjectSimple(lldb_private::Thread &thread,
+                             lldb_private::CompilerType &ast_type) const;
 
-    bool
-    RegisterIsCalleeSaved(const lldb_private::RegisterInfo *reg_info);
+  bool RegisterIsCalleeSaved(const lldb_private::RegisterInfo *reg_info);
 
 private:
-    ABISysV_i386() : 
-        lldb_private::ABI() 
-    {
-         // Call CreateInstance instead.
-    }
+  ABISysV_i386() : lldb_private::ABI() {
+    // Call CreateInstance instead.
+  }
 };
 
 #endif // liblldb_ABISysV_i386_h_




More information about the lldb-commits mailing list