diff --git a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
index 7cb7e07..0a81bd7 100644
--- a/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
+++ b/lib/CodeGen/AsmPrinter/AsmPrinter.cpp
@@ -532,14 +532,14 @@
   const TargetData *TD = TM.getTargetData();
   unsigned Align = Log2_32(TD->getPointerPrefAlignment());
   if (GV->getName() == "llvm.global_ctors") {
-    SwitchToDataSection(TAI->getStaticCtorsSection());
+    SwitchToSection(getObjFileLowering().getStaticCtorSection());
     EmitAlignment(Align, 0);
     EmitXXStructorList(GV->getInitializer());
     return true;
   } 
   
   if (GV->getName() == "llvm.global_dtors") {
-    SwitchToDataSection(TAI->getStaticDtorsSection());
+    SwitchToSection(getObjFileLowering().getStaticDtorSection());
     EmitAlignment(Align, 0);
     EmitXXStructorList(GV->getInitializer());
     return true;
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::
