diff --git a/lib/Target/ARM/ARMISelLowering.cpp b/lib/Target/ARM/ARMISelLowering.cpp
index 97134ee..f0cf943 100644
--- a/lib/Target/ARM/ARMISelLowering.cpp
+++ b/lib/Target/ARM/ARMISelLowering.cpp
@@ -20,6 +20,7 @@
 #include "ARMRegisterInfo.h"
 #include "ARMSubtarget.h"
 #include "ARMTargetMachine.h"
+#include "ARMTargetObjectFile.h"
 #include "llvm/CallingConv.h"
 #include "llvm/Constants.h"
 #include "llvm/Function.h"
@@ -34,7 +35,6 @@
 #include "llvm/CodeGen/MachineRegisterInfo.h"
 #include "llvm/CodeGen/PseudoSourceValue.h"
 #include "llvm/CodeGen/SelectionDAG.h"
-#include "llvm/Target/TargetLoweringObjectFile.h"
 #include "llvm/Target/TargetOptions.h"
 #include "llvm/ADT/VectorExtras.h"
 #include "llvm/Support/ErrorHandling.h"
@@ -107,7 +107,7 @@
 static TargetLoweringObjectFile *createTLOF(TargetMachine &TM) {
   if (TM.getSubtarget<ARMSubtarget>().isTargetDarwin())
     return new TargetLoweringObjectFileMachO();
-  return new TargetLoweringObjectFileELF(true);
+  return new ARMElfTargetObjectFile();
 }
 
 ARMTargetLowering::ARMTargetLowering(TargetMachine &TM)
diff --git a/lib/Target/ARM/ARMTargetAsmInfo.cpp b/lib/Target/ARM/ARMTargetAsmInfo.cpp
index 2e249fb..ac0f610 100644
--- a/lib/Target/ARM/ARMTargetAsmInfo.cpp
+++ b/lib/Target/ARM/ARMTargetAsmInfo.cpp
@@ -78,13 +78,6 @@
   DwarfRangesSection =  "\t.section\t.debug_ranges,\"\",%progbits";
   DwarfMacroInfoSection = "\t.section\t.debug_macinfo,\"\",%progbits";
 
-  if (Subtarget->isAAPCS_ABI()) {
-    StaticCtorsSection = "\t.section .init_array,\"aw\",%init_array";
-    StaticDtorsSection = "\t.section .fini_array,\"aw\",%fini_array";
-  } else {
-    StaticCtorsSection = "\t.section .ctors,\"aw\",%progbits";
-    StaticDtorsSection = "\t.section .dtors,\"aw\",%progbits";
-  }
   SupportsDebugInformation = true;
 }
 
diff --git a/lib/Target/ARM/ARMTargetObjectFile.h b/lib/Target/ARM/ARMTargetObjectFile.h
new file mode 100644
index 0000000..604dd83
--- /dev/null
+++ b/lib/Target/ARM/ARMTargetObjectFile.h
@@ -0,0 +1,38 @@
+//===-- llvm/Target/ARMTargetObjectFile.h - ARM Object Info -----*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_TARGET_ARM_TARGETOBJECTFILE_H
+#define LLVM_TARGET_ARM_TARGETOBJECTFILE_H
+
+#include "llvm/Target/TargetLoweringObjectFile.h"
+
+namespace llvm {
+  
+  class ARMElfTargetObjectFile : public TargetLoweringObjectFileELF {
+  public:
+    ARMElfTargetObjectFile() : TargetLoweringObjectFileELF(true) {}
+    
+    void Initialize(MCContext &Ctx, const TargetMachine &TM) {
+      TargetLoweringObjectFileELF::Initialize(Ctx, TM);
+      
+      // FIXME: Add new attribute/flag to MCSection for init_array/fini_array.
+      // That will allow not treating these as "directives".
+      if (TM.getSubtarget<ARMSubtarget>().isAAPCS_ABI()) {
+        StaticCtorSection =
+          getOrCreateSection("\t.section .init_array,\"aw\",%init_array", false,
+                             SectionKind::getDataRel());
+        StaticDtorSection =
+          getOrCreateSection("\t.section .fini_array,\"aw\",%fini_array", false,
+                             SectionKind::getDataRel());
+      }
+    }
+  };
+} // end namespace llvm
+
+#endif
diff --git a/lib/Target/COFFTargetAsmInfo.cpp b/lib/Target/COFFTargetAsmInfo.cpp
index f1f742e..970096b 100644
--- a/lib/Target/COFFTargetAsmInfo.cpp
+++ b/lib/Target/COFFTargetAsmInfo.cpp
@@ -24,8 +24,6 @@
   COMMDirectiveTakesAlignment = false;
   HasDotTypeDotSizeDirective = false;
   HasSingleParameterDotFile = false;
-  StaticCtorsSection = "\t.section .ctors,\"aw\"";
-  StaticDtorsSection = "\t.section .dtors,\"aw\"";
   HiddenDirective = NULL;
   PrivateGlobalPrefix = "L";  // Prefix for private global symbols
   WeakRefDirective = "\t.weak\t";
diff --git a/lib/Target/DarwinTargetAsmInfo.cpp b/lib/Target/DarwinTargetAsmInfo.cpp
index cca12c0..24bc9a5 100644
--- a/lib/Target/DarwinTargetAsmInfo.cpp
+++ b/lib/Target/DarwinTargetAsmInfo.cpp
@@ -48,15 +48,6 @@
   WeakRefDirective = "\t.weak_reference ";
   HiddenDirective = "\t.private_extern ";
     
-  // Sections:
-  if (TM.getRelocationModel() == Reloc::Static) {
-    StaticCtorsSection = ".constructor";
-    StaticDtorsSection = ".destructor";
-  } else {
-    StaticCtorsSection = ".mod_init_func";
-    StaticDtorsSection = ".mod_term_func";
-  }
-    
   // _foo.eh symbols are currently always exported so that the linker knows
   // about them.  This may not strictly be necessary on 10.6 and later, but it
   // doesn't hurt anything.
diff --git a/lib/Target/TargetAsmInfo.cpp b/lib/Target/TargetAsmInfo.cpp
index add1dbf..80bb90e 100644
--- a/lib/Target/TargetAsmInfo.cpp
+++ b/lib/Target/TargetAsmInfo.cpp
@@ -70,9 +70,6 @@
   DataSectionStartSuffix = "";
   SectionEndDirectiveSuffix = 0;
   JumpTableDirective = 0;
-  // FIXME: Flags are ELFish - replace with normal section stuff.
-  StaticCtorsSection = "\t.section .ctors,\"aw\",@progbits";
-  StaticDtorsSection = "\t.section .dtors,\"aw\",@progbits";
   GlobalDirective = "\t.globl\t";
   SetDirective = 0;
   LCOMMDirective = 0;
diff --git a/lib/Target/TargetLoweringObjectFile.cpp b/lib/Target/TargetLoweringObjectFile.cpp
index 7c5eaf9..a86946d 100644
--- a/lib/Target/TargetLoweringObjectFile.cpp
+++ b/lib/Target/TargetLoweringObjectFile.cpp
@@ -34,6 +34,8 @@
   DataSection = 0;
   BSSSection = 0;
   ReadOnlySection = 0;
+  StaticCtorSection = 0;
+  StaticDtorSection = 0;
 }
 
 TargetLoweringObjectFile::~TargetLoweringObjectFile() {
@@ -295,6 +297,11 @@
                                 SectionKind::getMergeableConst8());
   MergeableConst16Section = getOrCreateSection(".rodata.cst16", false,
                                SectionKind::getMergeableConst16());
+
+  StaticCtorSection =
+    getOrCreateSection(".ctors", false, SectionKind::getDataRel());
+  StaticDtorSection =
+    getOrCreateSection(".dtors", false, SectionKind::getDataRel());
 }
 
 
@@ -517,6 +524,19 @@
   DataCoalSection = getOrCreateSection("\t__DATA,__datacoal_nt,coalesced",
                                        false,
                                        SectionKind::getDataRel());
+
+  if (TM.getRelocationModel() == Reloc::Static) {
+    StaticCtorSection =
+      getOrCreateSection(".constructor", true, SectionKind::getDataRel());
+    StaticDtorSection =
+      getOrCreateSection(".destructor", true, SectionKind::getDataRel());
+  } else {
+    StaticCtorSection =
+      getOrCreateSection(".mod_init_func", true, SectionKind::getDataRel());
+    StaticDtorSection =
+      getOrCreateSection(".mod_term_func", true, SectionKind::getDataRel());
+  }
+  
 }
 
 const MCSection *TargetLoweringObjectFileMachO::
@@ -624,6 +644,10 @@
                                    SectionKind::getText());
   DataSection = getOrCreateSection("\t.data", true,
                                    SectionKind::getDataRel());
+  StaticCtorSection =
+    getOrCreateSection(".ctors", false, SectionKind::getDataRel());
+  StaticDtorSection =
+    getOrCreateSection(".dtors", false, SectionKind::getDataRel());
 }
 
 void TargetLoweringObjectFileCOFF::
