[llvm] r235988 - Use CIE version 4 for dwarf4.

Rafael Espindola rafael.espindola at gmail.com
Tue Apr 28 06:55:32 PDT 2015


Author: rafael
Date: Tue Apr 28 08:55:31 2015
New Revision: 235988

URL: http://llvm.org/viewvc/llvm-project?rev=235988&view=rev
Log:
Use CIE version 4 for dwarf4.

According to http://www.dwarfstd.org/doc/DWARF4.pdf appendix F the CIE
version for dwarf 4 is 4.

Modified:
    llvm/trunk/lib/MC/MCDwarf.cpp
    llvm/trunk/test/MC/ELF/cfi-sections.s
    llvm/trunk/test/MC/ELF/cfi-version.ll

Modified: llvm/trunk/lib/MC/MCDwarf.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCDwarf.cpp?rev=235988&r1=235987&r2=235988&view=diff
==============================================================================
--- llvm/trunk/lib/MC/MCDwarf.cpp (original)
+++ llvm/trunk/lib/MC/MCDwarf.cpp Tue Apr 28 08:55:31 2015
@@ -1244,6 +1244,20 @@ void FrameEmitterImpl::EmitCompactUnwind
     Streamer.EmitIntValue(0, Size); // No LSDA
 }
 
+static unsigned getCIEVersion(bool IsEH, unsigned DwarfVersion) {
+  if (IsEH)
+    return 1;
+  switch (DwarfVersion) {
+  case 2:
+    return 1;
+  case 3:
+    return 3;
+  case 4:
+    return 4;
+  }
+  llvm_unreachable("Unknown version");
+}
+
 const MCSymbol &FrameEmitterImpl::EmitCIE(MCObjectStreamer &streamer,
                                           const MCSymbol *personality,
                                           unsigned personalityEncoding,
@@ -1270,10 +1284,7 @@ const MCSymbol &FrameEmitterImpl::EmitCI
   streamer.EmitIntValue(CIE_ID, 4);
 
   // Version
-  // For .eh_frame, we use CIE version 1
-  // For DWARF2, we use CIE version 1
-  // For DWARF3+, we use CIE version 3
-  uint8_t CIEVersion = (IsEH || context.getDwarfVersion() <= 2) ? 1 : 3;
+  uint8_t CIEVersion = getCIEVersion(IsEH, context.getDwarfVersion());
   streamer.EmitIntValue(CIEVersion, 1);
 
   // Augmentation String

Modified: llvm/trunk/test/MC/ELF/cfi-sections.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/cfi-sections.s?rev=235988&r1=235987&r2=235988&view=diff
==============================================================================
--- llvm/trunk/test/MC/ELF/cfi-sections.s (original)
+++ llvm/trunk/test/MC/ELF/cfi-sections.s Tue Apr 28 08:55:31 2015
@@ -26,7 +26,7 @@ f2:
 // ELF_64-NEXT:     AddressAlignment: 8
 // ELF_64-NEXT:     EntrySize: 0
 // ELF_64-NEXT:     SectionData (
-// ELF_64-NEXT:       0000: 14000000 FFFFFFFF 03000178 100C0708
+// ELF_64-NEXT:       0000: 14000000 FFFFFFFF 04000178 100C0708
 // ELF_64-NEXT:       0010: 90010000 00000000 14000000 00000000
 // ELF_64-NEXT:       0020: 00000000 00000000 01000000 00000000
 // ELF_64-NEXT:       0030: 14000000 00000000 00000000 00000000
@@ -47,7 +47,7 @@ f2:
 // ELF_32-NEXT:     AddressAlignment: 4
 // ELF_32-NEXT:     EntrySize: 0
 // ELF_32-NEXT:     SectionData (
-// ELF_32-NEXT:       0000: 10000000 FFFFFFFF 0300017C 080C0404
+// ELF_32-NEXT:       0000: 10000000 FFFFFFFF 0400017C 080C0404
 // ELF_32-NEXT:       0010: 88010000 0C000000 00000000 00000000
 // ELF_32-NEXT:       0020: 01000000 0C000000 00000000 01000000
 // ELF_32-NEXT:       0030: 01000000

Modified: llvm/trunk/test/MC/ELF/cfi-version.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/ELF/cfi-version.ll?rev=235988&r1=235987&r2=235988&view=diff
==============================================================================
--- llvm/trunk/test/MC/ELF/cfi-version.ll (original)
+++ llvm/trunk/test/MC/ELF/cfi-version.ll Tue Apr 28 08:55:31 2015
@@ -1,6 +1,6 @@
 ; RUN: %llc_dwarf %s -o - -dwarf-version 2 -filetype=obj | llvm-dwarfdump - | FileCheck %s --check-prefix=DWARF2
-; RUN: %llc_dwarf %s -o - -dwarf-version 3 -filetype=obj | llvm-dwarfdump - | FileCheck %s --check-prefix=DWARF34
-; RUN: %llc_dwarf %s -o - -dwarf-version 4 -filetype=obj | llvm-dwarfdump - | FileCheck %s --check-prefix=DWARF34
+; RUN: %llc_dwarf %s -o - -dwarf-version 3 -filetype=obj | llvm-dwarfdump - | FileCheck %s --check-prefix=DWARF3
+; RUN: %llc_dwarf %s -o - -dwarf-version 4 -filetype=obj | llvm-dwarfdump - | FileCheck %s --check-prefix=DWARF4
 
 ; .debug_frame is not emitted for targeting Windows x64.
 ; REQUIRES: debug_frame
@@ -40,6 +40,10 @@ attributes #1 = { "less-precise-fpmad"="
 ; DWARF2:        Version:               1
 ; DWARF2-NEXT:   Augmentation:
 
-; DWARF34:      .debug_frame contents:
-; DWARF34:        Version:               3
-; DWARF34-NEXT:   Augmentation:
+; DWARF3:      .debug_frame contents:
+; DWARF3:        Version:               3
+; DWARF3-NEXT:   Augmentation:
+
+; DWARF4:      .debug_frame contents:
+; DWARF4:        Version:               4
+; DWARF4-NEXT:   Augmentation:





More information about the llvm-commits mailing list