First step in fixing MC. Make it clear that we are avoiding a bug in the
darwin9 linker, what is needed to avoid it and where to get more information.

Also make the workaround simpler. Just the regular end_sequence we normally
create is more than 4 bytes.

Tested by building cctools and ld64 from darwin9 on a darwin10 system and using
those. I checked that I was able to reproduce the bootstrap failure when
the the workaround was disabled.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120854 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/MC/MCDwarf.cpp b/lib/MC/MCDwarf.cpp
index 0916b05..194c324 100644
--- a/lib/MC/MCDwarf.cpp
+++ b/lib/MC/MCDwarf.cpp
@@ -297,17 +297,14 @@
   }
 
   if (TextSection && MCLineSectionOrder.begin() == MCLineSectionOrder.end()) {
-    // Emit dummy entry if line table is empty.
+    // The darwin9 linker has a bug (see PR8715). For for 32-bit architectures
+    // it requires:  
+    // total_length >= prologue_length + 10
+    // We are 4 bytes short, since we have total_length = 51 and
+    // prologue_length = 45
 
-    MCOS->SwitchSection(TextSection);
-    MCSymbol *SectionEnd = MCOS->getContext().CreateTempSymbol();
-    // Set the value of the symbol, as we are at the end of the section.
-    MCOS->EmitLabel(SectionEnd);
-
-    // Switch back the the dwarf line section.
-    MCOS->SwitchSection(DwarfLineSection);
-
-    MCOS->EmitDwarfAdvanceLineAddr(INT64_MAX, NULL, SectionEnd);
+    // The regular end_sequence should be sufficient.
+    MCDwarfLineAddr::Emit(MCOS, INT64_MAX, 0);
   }
 
   // This is the end of the section, so set the value of the symbol at the end