[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

llvm-svn: 340839
This commit is contained in:
Brian Cain 2018-08-28 16:23:39 +00:00
parent 5167e2d1af
commit 3e0ca5708f
2 changed files with 32 additions and 8 deletions

View File

@ -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);

View File

@ -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: