[LLDB][MIPS] microMIPS breakpoints, disassembly and compressed addresses
    SUMMARY:
    This patch detects microMIPS symbols, sets breakpoints using un-compressed address and 
    display disassembly in mixed mode for microMIPS applications (running on bare-iron targets).

    Reviewers: clayborg
    Subscribers: nitesh.jain, mohit.bhakkad, sagar, bhushan and lldb-commits
    Differential Revision: http://reviews.llvm.org/D12079

llvm-svn: 248248
diff --git a/lldb/source/Core/Address.cpp b/lldb/source/Core/Address.cpp
index f1c131d..ab8d2e5 100644
--- a/lldb/source/Core/Address.cpp
+++ b/lldb/source/Core/Address.cpp
@@ -463,6 +463,20 @@
     case DumpStyleLoadAddress:
         {
             addr_t load_addr = GetLoadAddress (target);
+
+            /*
+             * MIPS:
+             * Display address in compressed form for MIPS16 or microMIPS
+             * if the address belongs to eAddressClassCodeAlternateISA.
+            */
+            if (target)
+            {
+                const llvm::Triple::ArchType llvm_arch = target->GetArchitecture().GetMachine();
+                if (llvm_arch == llvm::Triple::mips || llvm_arch == llvm::Triple::mipsel
+                    || llvm_arch == llvm::Triple::mips64 || llvm_arch == llvm::Triple::mips64el)
+                    load_addr = GetCallableLoadAddress (target);
+            }
+
             if (load_addr == LLDB_INVALID_ADDRESS)
             {
                 if (fallback_style != DumpStyleInvalid)