Modified the ArchSpec to take an optional "Platform *" when setting the triple.
This allows you to have a platform selected, then specify a triple using
"i386" and have the remaining triple items (vendor, os, and environment) set
automatically.

Many interpreter commands take the "--arch" option to specify an architecture
triple, so now the command options needed to be able to get to the current
platform, so the Options class now take a reference to the interpreter on
construction.

Modified the build LLVM building in the Xcode project to use the new
Xcode project level user definitions:

LLVM_BUILD_DIR - a path to the llvm build directory
LLVM_SOURCE_DIR - a path to the llvm sources for the llvm that will be used to build lldb
LLVM_CONFIGURATION - the configuration that lldb is built for (Release, 
Release+Asserts, Debug, Debug+Asserts).

I also changed the LLVM build to not check if "lldb/llvm" is a symlink and
then assume it is a real llvm build directory versus the unzipped llvm.zip
package, so now you can actually have a "lldb/llvm" directory in your lldb
sources.




git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@129112 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp b/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
index 2855786..4f71a1b 100644
--- a/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
+++ b/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
@@ -150,27 +150,26 @@
         }
     }
 
-    int numTokens = EDNumTokens(m_inst);
+    int numTokens = -1;
+    
+    if (!raw)
+        numTokens = EDNumTokens(m_inst);
 
     int currentOpIndex = -1;
 
-    std::auto_ptr<RegisterReaderArg> rra;
-    
-    if (!raw)
+    bool printTokenized = false;
+
+    if (numTokens != -1 && !raw)
     {
         addr_t base_addr = LLDB_INVALID_ADDRESS;
+        
+        RegisterReaderArg rra(base_addr + EDInstByteSize(m_inst), m_disassembler);
+        
         if (exe_ctx && exe_ctx->target && !exe_ctx->target->GetSectionLoadList().IsEmpty())
             base_addr = GetAddress().GetLoadAddress (exe_ctx->target);
         if (base_addr == LLDB_INVALID_ADDRESS)
             base_addr = GetAddress().GetFileAddress ();
-        
-        rra.reset(new RegisterReaderArg(base_addr + EDInstByteSize(m_inst), m_disassembler));
-    }
-
-    bool printTokenized = false;
-
-    if (numTokens != -1)
-    {
+                    
         printTokenized = true;
 
         // Handle the opcode column.
@@ -246,7 +245,7 @@
                                 {
                                     uint64_t operand_value;
 
-                                    if (!EDEvaluateOperand(&operand_value, operand, IPRegisterReader, rra.get()))
+                                    if (!EDEvaluateOperand(&operand_value, operand, IPRegisterReader, &rra))
                                     {
                                         if (EDInstIsBranch(m_inst))
                                         {
@@ -327,7 +326,7 @@
         if (EDGetInstString(&str, m_inst))
             return;
         else
-            s->PutCString(str);
+            s->Write(str, strlen(str) - 1);
     }
 }