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);
