]> granicus.if.org Git - llvm/commitdiff
[llvm-dwarfdump] - Teach tool to parse DW_CFA_GNU_args_size.
authorGeorge Rimar <grimar@accesssoftek.com>
Mon, 16 Oct 2017 10:26:17 +0000 (10:26 +0000)
committerGeorge Rimar <grimar@accesssoftek.com>
Mon, 16 Oct 2017 10:26:17 +0000 (10:26 +0000)
Currently llvm-dwarfdump runs into llvm_unreachable when
faces DW_CFA_GNU_args_size. Patch implements the support.

Differential revision: https://reviews.llvm.org/D38879

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@315897 91177308-0d34-0410-b5e6-96231b3b80d8

lib/DebugInfo/DWARF/DWARFDebugFrame.cpp
test/tools/llvm-dwarfdump/X86/debug_frame_GNU_args_size.s [new file with mode: 0644]

index bceb0162b351577d6b86dfb4a77b42991c992d66..3312da67804b5c8ab9115ac9225f0dd02fd548c8 100644 (file)
@@ -163,6 +163,7 @@ void FrameEntry::parseInstructions(DataExtractor Data, uint32_t *Offset,
         case DW_CFA_same_value:
         case DW_CFA_def_cfa_register:
         case DW_CFA_def_cfa_offset:
+        case DW_CFA_GNU_args_size:
           // Operands: ULEB128
           addInstruction(Opcode, Data.getULEB128(Offset));
           break;
diff --git a/test/tools/llvm-dwarfdump/X86/debug_frame_GNU_args_size.s b/test/tools/llvm-dwarfdump/X86/debug_frame_GNU_args_size.s
new file mode 100644 (file)
index 0000000..b5d7cde
--- /dev/null
@@ -0,0 +1,15 @@
+# RUN: llvm-mc %s -filetype=obj -triple=i686-pc-linux -o %t
+# RUN: llvm-dwarfdump -v %t | FileCheck %s
+
+# CHECK:      .eh_frame contents:
+# CHECK:        00000018 00000010 0000001c FDE cie=0000001c pc=00000000...00000000
+# CHECK-NEXT:     DW_CFA_GNU_args_size: +16
+# CHECK-NEXT:     DW_CFA_nop:
+
+.text
+.globl foo
+.type  foo,@function
+foo:
+ .cfi_startproc
+ .cfi_escape 0x2e, 0x10
+ .cfi_endproc