mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
Producing a DW_FORM_addr for DW_AT_stmt_list is probably correct, but
it is both inefficient and unexpected by dwarfdump. Change to a DW_FORM_data4. While in here, change the predicate name to reflect that the position is not really absolute (it is an offset), just that the linker needs a relocation. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130846 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9126601770
commit
597a7664e1
@ -279,9 +279,9 @@ namespace llvm {
|
|||||||
/// DwarfSectionOffsetDirective - Special section offset directive.
|
/// DwarfSectionOffsetDirective - Special section offset directive.
|
||||||
const char* DwarfSectionOffsetDirective; // Defaults to NULL
|
const char* DwarfSectionOffsetDirective; // Defaults to NULL
|
||||||
|
|
||||||
/// DwarfUsesAbsoluteLabelForStmtList - True if DW_AT_stmt_list needs
|
/// DwarfRequiresRelocationForStmtList - True if DW_AT_stmt_list needs
|
||||||
/// absolute label instead of offset.
|
/// a relocation to the correct offset.
|
||||||
bool DwarfUsesAbsoluteLabelForStmtList; // Defaults to true;
|
bool DwarfRequiresRelocationForStmtList; // Defaults to true;
|
||||||
|
|
||||||
// DwarfUsesLabelOffsetDifference - True if Dwarf2 output can
|
// DwarfUsesLabelOffsetDifference - True if Dwarf2 output can
|
||||||
// use EmitLabelOffsetDifference.
|
// use EmitLabelOffsetDifference.
|
||||||
@ -476,8 +476,8 @@ namespace llvm {
|
|||||||
const char *getDwarfSectionOffsetDirective() const {
|
const char *getDwarfSectionOffsetDirective() const {
|
||||||
return DwarfSectionOffsetDirective;
|
return DwarfSectionOffsetDirective;
|
||||||
}
|
}
|
||||||
bool doesDwarfUsesAbsoluteLabelForStmtList() const {
|
bool doesDwarfRequireRelocationForStmtList() const {
|
||||||
return DwarfUsesAbsoluteLabelForStmtList;
|
return DwarfRequiresRelocationForStmtList;
|
||||||
}
|
}
|
||||||
bool doesDwarfUsesLabelOffsetForRanges() const {
|
bool doesDwarfUsesLabelOffsetForRanges() const {
|
||||||
return DwarfUsesLabelOffsetForRanges;
|
return DwarfUsesLabelOffsetForRanges;
|
||||||
|
@ -896,8 +896,8 @@ void DwarfDebug::constructCompileUnit(const MDNode *N) {
|
|||||||
NewCU->addUInt(Die, dwarf::DW_AT_entry_pc, dwarf::DW_FORM_addr, 0);
|
NewCU->addUInt(Die, dwarf::DW_AT_entry_pc, dwarf::DW_FORM_addr, 0);
|
||||||
// DW_AT_stmt_list is a offset of line number information for this
|
// DW_AT_stmt_list is a offset of line number information for this
|
||||||
// compile unit in debug_line section.
|
// compile unit in debug_line section.
|
||||||
if (Asm->MAI->doesDwarfUsesAbsoluteLabelForStmtList())
|
if(Asm->MAI->doesDwarfRequireRelocationForStmtList())
|
||||||
NewCU->addLabel(Die, dwarf::DW_AT_stmt_list, dwarf::DW_FORM_addr,
|
NewCU->addLabel(Die, dwarf::DW_AT_stmt_list, dwarf::DW_FORM_data4,
|
||||||
Asm->GetTempSymbol("section_line"));
|
Asm->GetTempSymbol("section_line"));
|
||||||
else
|
else
|
||||||
NewCU->addUInt(Die, dwarf::DW_AT_stmt_list, dwarf::DW_FORM_data4, 0);
|
NewCU->addUInt(Die, dwarf::DW_AT_stmt_list, dwarf::DW_FORM_data4, 0);
|
||||||
|
@ -76,7 +76,7 @@ MCAsmInfo::MCAsmInfo() {
|
|||||||
ExceptionsType = ExceptionHandling::None;
|
ExceptionsType = ExceptionHandling::None;
|
||||||
DwarfRequiresFrameSection = true;
|
DwarfRequiresFrameSection = true;
|
||||||
DwarfUsesInlineInfoSection = false;
|
DwarfUsesInlineInfoSection = false;
|
||||||
DwarfUsesAbsoluteLabelForStmtList = true;
|
DwarfRequiresRelocationForStmtList = true;
|
||||||
DwarfSectionOffsetDirective = 0;
|
DwarfSectionOffsetDirective = 0;
|
||||||
DwarfUsesLabelOffsetForRanges = true;
|
DwarfUsesLabelOffsetForRanges = true;
|
||||||
HasMicrosoftFastStdCallMangling = false;
|
HasMicrosoftFastStdCallMangling = false;
|
||||||
|
@ -56,6 +56,6 @@ MCAsmInfoDarwin::MCAsmInfoDarwin() {
|
|||||||
HasNoDeadStrip = true;
|
HasNoDeadStrip = true;
|
||||||
HasSymbolResolver = true;
|
HasSymbolResolver = true;
|
||||||
|
|
||||||
DwarfUsesAbsoluteLabelForStmtList = false;
|
DwarfRequiresRelocationForStmtList = false;
|
||||||
DwarfUsesLabelOffsetForRanges = false;
|
DwarfUsesLabelOffsetForRanges = false;
|
||||||
}
|
}
|
||||||
|
19
test/DebugInfo/stmt-list.ll
Normal file
19
test/DebugInfo/stmt-list.ll
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
; RUN: llc -mtriple x86_64-pc-linux-gnu < %s | FileCheck %s
|
||||||
|
|
||||||
|
; CHECK: .section .debug_line,"",@progbits
|
||||||
|
; CHECK-NEXT: .Lsection_line:
|
||||||
|
|
||||||
|
; CHECK: .long .Lsection_line # DW_AT_stmt_list
|
||||||
|
|
||||||
|
define void @f() {
|
||||||
|
entry:
|
||||||
|
ret void
|
||||||
|
}
|
||||||
|
|
||||||
|
!llvm.dbg.sp = !{!0}
|
||||||
|
|
||||||
|
!0 = metadata !{i32 589870, i32 0, metadata !1, metadata !"f", metadata !"f", metadata !"", metadata !1, i32 1, metadata !3, i1 false, i1 true, i32 0, i32 0, i32 0, i32 256, i1 true, void ()* @f, null, null} ; [ DW_TAG_subprogram ]
|
||||||
|
!1 = metadata !{i32 589865, metadata !"test2.c", metadata !"/home/espindola/llvm", metadata !2} ; [ DW_TAG_file_type ]
|
||||||
|
!2 = metadata !{i32 589841, i32 0, i32 12, metadata !"test2.c", metadata !"/home/espindola/llvm", metadata !"clang version 3.0 ()", i1 true, i1 true, metadata !"", i32 0} ; [ DW_TAG_compile_unit ]
|
||||||
|
!3 = metadata !{i32 589845, metadata !1, metadata !"", metadata !1, i32 0, i64 0, i64 0, i32 0, i32 0, i32 0, metadata !4, i32 0, i32 0} ; [ DW_TAG_subroutine_type ]
|
||||||
|
!4 = metadata !{null}
|
Loading…
Reference in New Issue
Block a user