Skip to content

Commit

Permalink
PR11740: Disable assembly debug info when assembly already contains l…
Browse files Browse the repository at this point in the history
…ine directives

If there is already debug info in the assembly file, and user hope to
use -g option for compiling, we think we should not directly report an
error.

According to what GNU assembler did, it just reused the debug info in
the assembly file, and turned off the DEBUG_TYPE option so that there
will be no new debug info emitted by assembler. This fix is just as what
GNU assembler did.

The concern is the situation that there are two .text sections in the
assembly file, one with debug info and the other one without. Currently
with this fix, the assembler will no longer generate any debug info for
the second .text section. And this is what GNU assembler exactly did for
this situation. So I think this still make some sense.

Patch by Zhizhou Yang!

Differential Revision: http://reviews.llvm.org/D20002

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@270806 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
dwblaikie committed May 26, 2016
1 parent 3985ce5 commit 2474f04
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 14 deletions.
9 changes: 4 additions & 5 deletions lib/MC/MCParser/AsmParser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3001,12 +3001,11 @@ bool AsmParser::parseDirectiveFile(SMLoc DirectiveLoc) {
if (FileNumber == -1)
getStreamer().EmitFileDirective(Filename);
else {
// If there is -g option as well as debug info from directive file,
// we turn off -g option, directly use the existing debug info instead.
if (getContext().getGenDwarfForAssembly())
Error(DirectiveLoc,
"input can't have .file dwarf directives when -g is "
"used to generate dwarf debug info for assembly code");

if (getStreamer().EmitDwarfFileDirective(FileNumber, Directory, Filename) ==
getContext().setGenDwarfForAssembly(false);
else if (getStreamer().EmitDwarfFileDirective(FileNumber, Directory, Filename) ==
0)
Error(FileNumberLoc, "file number already allocated");
}
Expand Down
11 changes: 11 additions & 0 deletions test/MC/AsmParser/directive_file-2.s
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// RUN: llvm-mc -triple i386-unknown-unknown %s | FileCheck %s
// Test for Bug 11740
// This testcase has two directive files,
// when compiled with -g, this testcase will not report error,
// but keep the debug info existing in the assembly file.

.file "hello"
.file 1 "world"

// CHECK: .file "hello"
// CHECK: .file 1 "world"
9 changes: 0 additions & 9 deletions test/MC/AsmParser/directive_file-errors.s

This file was deleted.

0 comments on commit 2474f04

Please sign in to comment.