mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
[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:
parent
d2a627a8b6
commit
e833d9d952
@ -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);
|
||||
|
24
test/MC/AsmParser/directive_file-3.s
Normal file
24
test/MC/AsmParser/directive_file-3.s
Normal 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:
|
Loading…
Reference in New Issue
Block a user