Made lldb_private::ArchSpec more generic so that it can take a mach-o cpu
type and sub-type, or an ELF e_machine value. Also added a generic CPU type
to the arch spec class so we can have a single arch definition that the LLDB
core code can use. Previously a lot of places in the code were using the
mach-o definitions from a macosx header file. 

Switches over to using "llvm/Support/MachO.h" for the llvm::MachO::XXX for the
CPU types and sub types for mach-o ArchSpecs. Added "llvm/Support/ELF.h" so 
we can use the "llvm::ELF::XXX" defines for the ELF ArchSpecs.

Got rid of all CPU_TYPE_ and CPU_SUBTYPE_ defines that were previously being
used in LLDB.



git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@105806 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp b/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
index db2d561..510f55b 100644
--- a/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
+++ b/source/Plugins/Disassembler/llvm/DisassemblerLLVM.cpp
@@ -313,54 +313,50 @@
 }
 
 static inline const char *
-TripleForCPU(cpu_type_t cpuType)
+TripleForArchSpec (const ArchSpec &arch, char *triple, size_t triple_len)
 {
-    switch (cpuType)
+    const char *arch_name = arch.AsCString();
+
+    if (arch_name)
     {
-    default:
-        return NULL;
-    case CPU_TYPE_X86:
-        return "i386-unknown-unknown";
-    case CPU_TYPE_X86_64:
-        return "x86_64-unknown-unknown";
+        snprintf(triple, triple_len, "%s-unknown-unknown", arch_name);
+        return triple;
     }
+    return NULL;
 }
 
 static inline EDAssemblySyntax_t
-SyntaxForCPU(cpu_type_t cpuType)
+SyntaxForArchSpec (const ArchSpec &arch)
 {
-    switch (cpuType)
-    {
-    default:
-        return (EDAssemblySyntax_t)0;   // default
-    case CPU_TYPE_X86:
-    case CPU_TYPE_X86_64:
+    const char *arch_name = arch.AsCString();
+
+    if (arch_name != NULL && 
+       ((strcasestr (arch_name, "i386") == arch_name) || 
+        (strcasestr (arch_name, "x86_64") == arch_name)))
         return kEDAssemblySyntaxX86ATT;
-    }
+    
+    return (EDAssemblySyntax_t)0;   // default
 }
 
 Disassembler *
 DisassemblerLLVM::CreateInstance(const ArchSpec &arch)
 {
-    cpu_type_t cpuType = arch.GetCPUType();
+    char triple[256];
 
-    if (TripleForCPU(cpuType))
-        return new DisassemblerLLVM(arch);
-    else
-        return NULL;
+    if (TripleForArchSpec (arch, triple, sizeof(triple)))
+        return new DisassemblerLLVM(triple);
+    return NULL;
 }
 
 DisassemblerLLVM::DisassemblerLLVM(const ArchSpec &arch) :
     Disassembler(arch)
 {
-    cpu_type_t cpuType = arch.GetCPUType();
-
-    const char *triple = TripleForCPU(cpuType);
-    assert(triple && "Unhandled CPU type!");
-
-    EDAssemblySyntax_t syntax = SyntaxForCPU(cpuType);
-
-    assert(!EDGetDisassembler(&m_disassembler, triple, syntax) && "No disassembler created!");
+    char triple[256];
+    if (TripleForArchSpec (arch, triple, sizeof(triple)))
+    {
+        EDAssemblySyntax_t syntax = SyntaxForArchSpec (arch);
+        assert(!EDGetDisassembler(&m_disassembler, triple, syntax) && "No disassembler created!");
+    }
 }
 
 DisassemblerLLVM::~DisassemblerLLVM()