]> granicus.if.org Git - clang/commitdiff
cc1as: Don't crash when CIE is requested and no DWARF version is specified.
authorAdrian Prantl <aprantl@apple.com>
Tue, 19 Apr 2016 20:31:19 +0000 (20:31 +0000)
committerAdrian Prantl <aprantl@apple.com>
Tue, 19 Apr 2016 20:31:19 +0000 (20:31 +0000)
This patch changes the default DWARF version for cc1as from invalid 0 to 2,
which should be the lowest common denominator on all platforms.

rdar://problem/24735813

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

test/Driver/as-dwarf-cie.s [new file with mode: 0644]
tools/driver/cc1as_main.cpp

diff --git a/test/Driver/as-dwarf-cie.s b/test/Driver/as-dwarf-cie.s
new file mode 100644 (file)
index 0000000..73d987a
--- /dev/null
@@ -0,0 +1,37 @@
+# REQUIRES: x86-registered-target
+# Test that there is a sane default CIE version.
+# RUN: %clang -cc1as -triple i386-apple-darwin -filetype obj %s -o %t
+# RUN: llvm-objdump -dwarf=frames %t | FileCheck %s
+# CHECK: .debug_frame contents:
+# CHECK: CIE
+# CHECK: Version:               1
+       .section        __TEXT,__text,regular,pure_instructions
+       .globl  _f
+       .p2align        4, 0x90
+_f:                                     ## @f
+Lfunc_begin0:
+       .file   1 "test.c"
+       .loc    1 1 0                   ## test.c:1:0
+       .cfi_startproc
+## BB#0:                                ## %entry
+       pushl   %ebp
+Ltmp0:
+       .cfi_def_cfa_offset 8
+Ltmp1:
+       .cfi_offset %ebp, -8
+       movl    %esp, %ebp
+Ltmp2:
+       .cfi_def_cfa_register %ebp
+Ltmp3:
+       .loc    1 1 11 prologue_end     ## test.c:1:11
+       popl    %ebp
+       retl
+Ltmp4:
+Lfunc_end0:
+       .cfi_endproc
+       .cfi_sections .debug_frame
+
+.subsections_via_symbols
+       .section        __DWARF,__debug_line,regular,debug
+Lsection_line:
+Lline_table_start0:
index 388a7693584138164fd1bad1efe5f1a3fe40c01c..bcc2cde17a80a3b3aaa85e492aa717ded9ad4577 100644 (file)
@@ -200,7 +200,7 @@ bool AssemblerInvocation::CreateFromArgs(AssemblerInvocation &Opts,
   // Any DebugInfoKind implies GenDwarfForAssembly.
   Opts.GenDwarfForAssembly = Args.hasArg(OPT_debug_info_kind_EQ);
   Opts.CompressDebugSections = Args.hasArg(OPT_compress_debug_sections);
-  Opts.DwarfVersion = getLastArgIntValue(Args, OPT_dwarf_version_EQ, 0, Diags);
+  Opts.DwarfVersion = getLastArgIntValue(Args, OPT_dwarf_version_EQ, 2, Diags);
   Opts.DwarfDebugFlags = Args.getLastArgValue(OPT_dwarf_debug_flags);
   Opts.DwarfDebugProducer = Args.getLastArgValue(OPT_dwarf_debug_producer);
   Opts.DebugCompilationDir = Args.getLastArgValue(OPT_fdebug_compilation_dir);