diff options
author | Hans Wennborg <hans@hanshq.net> | 2018-08-30 08:30:33 +0000 |
---|---|---|
committer | Hans Wennborg <hans@hanshq.net> | 2018-08-30 08:30:33 +0000 |
commit | 3d019e215d92181275e1f2a07cecaec07ae204ca (patch) | |
tree | 41e1d7dff3c5664088e65176f28f7aa2bca103d5 | |
parent | d6e617b922ed4e06fdae773a6e889146ad3e63b9 (diff) |
Merging r340839:
------------------------------------------------------------------------
r340839 | bcain | 2018-08-28 18:23:39 +0200 (Tue, 28 Aug 2018) | 14 lines
[debuginfo] generate debug info with asm+.file
Summary:
For assembly input files, generate debug info even when the .file
directive is present, provided it does not include a file-number
argument. Fixes PR38695.
Reviewers: probinson, sidneym
Subscribers: aprantl, hiraditya, JDevlieghere, llvm-commits
Differential Revision: https://reviews.llvm.org/D51315
------------------------------------------------------------------------
git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_70@341036 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/MC/MCParser/AsmParser.cpp | 16 | ||||
-rw-r--r-- | test/MC/AsmParser/directive_file-3.s | 24 |
2 files changed, 32 insertions, 8 deletions
diff --git a/lib/MC/MCParser/AsmParser.cpp b/lib/MC/MCParser/AsmParser.cpp index 501a1cccf60..d88c6f76826 100644 --- a/lib/MC/MCParser/AsmParser.cpp +++ b/lib/MC/MCParser/AsmParser.cpp @@ -3348,17 +3348,17 @@ bool AsmParser::parseDirectiveFile(SMLoc DirectiveLoc) { } } - // In case there is a -g option as well as debug info from directive .file, - // we turn off the -g option, directly use the existing debug info instead. - // Also reset any implicit ".file 0" for the assembler source. - if (Ctx.getGenDwarfForAssembly()) { - Ctx.getMCDwarfLineTable(0).resetRootFile(); - Ctx.setGenDwarfForAssembly(false); - } - if (FileNumber == -1) getStreamer().EmitFileDirective(Filename); else { + // In case there is a -g option as well as debug info from directive .file, + // we turn off the -g option, directly use the existing debug info instead. + // Also reset any implicit ".file 0" for the assembler source. + if (Ctx.getGenDwarfForAssembly()) { + Ctx.getMCDwarfLineTable(0).resetRootFile(); + Ctx.setGenDwarfForAssembly(false); + } + MD5::MD5Result *CKMem = nullptr; if (HasMD5) { CKMem = (MD5::MD5Result *)Ctx.allocate(sizeof(MD5::MD5Result), 1); diff --git a/test/MC/AsmParser/directive_file-3.s b/test/MC/AsmParser/directive_file-3.s new file mode 100644 index 00000000000..c3bdaede270 --- /dev/null +++ b/test/MC/AsmParser/directive_file-3.s @@ -0,0 +1,24 @@ +// RUN: llvm-mc -g -triple i386-unknown-unknown %s | FileCheck -check-prefix=CHECK-DEFAULT %s +// RUN: llvm-mc -g -triple i386-unknown-unknown %s -filetype=obj | obj2yaml | FileCheck -check-prefix=CHECK-DEBUG %s + +// Test for Bug 38695 +// This testcase has a single function and a .file directive +// without the [file-num] argument. When compiled with -g, +// this testcase will not report error, and generate new +// debug info. + + .file "hello" +.text + +f1: + nop +.size f1, .-f1 + +// CHECK-DEFAULT: .file "hello" + +// CHECK-DEBUG: Sections: +// CHECK-DEBUG: - Name: .text +// CHECK-DEBUG: - Name: .debug_info +// CHECK-DEBUG: - Name: .rel.debug_info +// CHECK-DEBUG: Info: .debug_info +// CHECK-DEBUG: Symbols: |