Updates for LLVM merge to r171906 on 20130108.

Change-Id: I368d0dc4be75cd03b4829e9ca76edc51782a1b0d
diff --git a/include/mcld/Target/TargetMachine.h b/include/mcld/Target/TargetMachine.h
index 1c2ad99..669e860 100644
--- a/include/mcld/Target/TargetMachine.h
+++ b/include/mcld/Target/TargetMachine.h
@@ -75,8 +75,8 @@
                            mcld::LinkerConfig& pConfig,
                            bool DisableVerify = true);
 
-  /// getTargetData
-  const TargetData *getTargetData() const { return m_TM.getTargetData(); }
+  /// getDataLayout
+  const DataLayout *getDataLayout() const { return m_TM.getDataLayout(); }
 
   /// setAsmVerbosityDefault
   static void setAsmVerbosityDefault(bool pAsmVerbose) {
diff --git a/lib/CodeGen/MCLDTargetMachine.cpp b/lib/CodeGen/MCLDTargetMachine.cpp
index 1a2cfff..785ef1f 100644
--- a/lib/CodeGen/MCLDTargetMachine.cpp
+++ b/lib/CodeGen/MCLDTargetMachine.cpp
@@ -26,6 +26,7 @@
 #include <llvm/CodeGen/MachineModuleInfo.h>
 #include <llvm/CodeGen/GCStrategy.h>
 #include <llvm/CodeGen/Passes.h>
+#include <llvm/IR/DataLayout.h>
 #include <llvm/MC/MCAsmInfo.h>
 #include <llvm/MC/MCStreamer.h>
 #include <llvm/MC/MCInstrInfo.h>
@@ -39,7 +40,6 @@
 #include <llvm/Support/Debug.h>
 #include <llvm/Support/TargetRegistry.h>
 #include <llvm/Support/FormattedStream.h>
-#include <llvm/Target/TargetData.h>
 #include <llvm/Target/TargetInstrInfo.h>
 #include <llvm/Target/TargetLowering.h>
 #include <llvm/Target/TargetOptions.h>
@@ -293,7 +293,8 @@
   MCAsmBackend *MAB = 0;
   if (ArgShowMCEncoding) {
     MCE = getTarget().get()->createMCCodeEmitter(MII, MRI, STI, *Context);
-    MAB = getTarget().get()->createMCAsmBackend(m_Triple);
+    MAB = getTarget().get()->createMCAsmBackend(m_Triple,
+                                                getTM().getTargetCPU());
   }
 
 
@@ -331,7 +332,8 @@
     getTarget().get()->createMCCodeEmitter(MII, MRI, STI, *Context);
 
   // MCAsmBackend
-  MCAsmBackend* MAB = getTarget().get()->createMCAsmBackend(m_Triple);
+  MCAsmBackend* MAB =
+    getTarget().get()->createMCAsmBackend(m_Triple,getTM().getTargetCPU());
   if (MCE == 0 || MAB == 0)
     return true;
 
diff --git a/lib/CodeGen/MCLinker.cpp b/lib/CodeGen/MCLinker.cpp
index bce4689..6b7196b 100644
--- a/lib/CodeGen/MCLinker.cpp
+++ b/lib/CodeGen/MCLinker.cpp
@@ -28,7 +28,7 @@
 #include <mcld/Support/raw_ostream.h>
 #include <mcld/Support/MemoryArea.h>
 
-#include <llvm/Module.h>
+#include <llvm/IR/Module.h>
 #include <llvm/Support/CommandLine.h>
 
 #include <algorithm>
diff --git a/lib/Target/ARM/ARMLDBackend.cpp b/lib/Target/ARM/ARMLDBackend.cpp
index 2fd7e64..844c8ba 100644
--- a/lib/Target/ARM/ARMLDBackend.cpp
+++ b/lib/Target/ARM/ARMLDBackend.cpp
@@ -1061,11 +1061,7 @@
 {
    if (NULL != m_pEXIDX && 0x0 != m_pEXIDX->size()) {
      // make PT_ARM_EXIDX
-     // FIXME: once we have a patch for llvm/Support/ELF.h, we can refine this
-     enum {
-      PT_ARM_EXIDX = 0x70000001
-     };
-     ELFSegment* exidx_seg = elfSegmentTable().produce(PT_ARM_EXIDX,
+     ELFSegment* exidx_seg = elfSegmentTable().produce(llvm::ELF::PT_ARM_EXIDX,
                                                        llvm::ELF::PF_R);
      exidx_seg->addSection(m_pEXIDX);
    }
diff --git a/tools/llvm-mcld/llvm-mcld.cpp b/tools/llvm-mcld/llvm-mcld.cpp
index e7a48d0..fc0b99f 100644
--- a/tools/llvm-mcld/llvm-mcld.cpp
+++ b/tools/llvm-mcld/llvm-mcld.cpp
@@ -22,11 +22,12 @@
 #include <mcld/LD/DiagnosticLineInfo.h>
 #include <mcld/LD/TextDiagnosticPrinter.h>
 
-#include <llvm/Module.h>
 #include <llvm/PassManager.h>
 #include <llvm/Pass.h>
+#include <llvm/IR/Module.h>
+#include <llvm/IR/DataLayout.h>
+#include <llvm/IR/LLVMContext.h>
 #include <llvm/ADT/Triple.h>
-#include <llvm/LLVMContext.h>
 #include <llvm/MC/SubtargetFeature.h>
 #include <llvm/Support/CommandLine.h>
 #include <llvm/Support/Debug.h>
@@ -38,7 +39,6 @@
 #include <llvm/Support/TargetRegistry.h>
 #include <llvm/Support/TargetSelect.h>
 #include <llvm/Support/Process.h>
-#include <llvm/Target/TargetData.h>
 #include <llvm/Target/TargetMachine.h>
 
 #if defined(HAVE_UNISTD_H)
@@ -1291,11 +1291,11 @@
   // Build up all of the passes that we want to do to the module.
   PassManager PM;
 
-  // Add the target data from the target machine, if it exists, or the module.
-  if (const TargetData *TD = TheTargetMachine.getTM().getTargetData())
-    PM.add(new TargetData(*TD));
-  else
-    PM.add(new TargetData(&mod));
+  // Add the data layout from the target machine, if it exists, or the module.
+  if (const DataLayout *DL = TheTargetMachine.getTM().getDataLayout())
+    PM.add(new DataLayout(*DL));
+   else
+    PM.add(new DataLayout(&mod));
 
   // Override default to generate verbose assembly.
   TheTargetMachine.getTM().setAsmVerbosityDefault(true);