forked from OSchip/llvm-project
Form reform for MCDwarf.
MCDwarf emits a canned abbreviation table, but was not emitting proper forms for DWARF version 4, which is the default after r249655. Differential Revision: http://reviews.llvm.org/D15732 llvm-svn: 256313
This commit is contained in:
parent
ee8f055327
commit
22d0d31a72
|
@ -514,10 +514,14 @@ static void EmitGenDwarfAbbrev(MCStreamer *MCOS) {
|
|||
MCOS->EmitULEB128IntValue(1);
|
||||
MCOS->EmitULEB128IntValue(dwarf::DW_TAG_compile_unit);
|
||||
MCOS->EmitIntValue(dwarf::DW_CHILDREN_yes, 1);
|
||||
EmitAbbrev(MCOS, dwarf::DW_AT_stmt_list, dwarf::DW_FORM_data4);
|
||||
if (MCOS->getContext().getGenDwarfSectionSyms().size() > 1 &&
|
||||
MCOS->getContext().getDwarfVersion() >= 3) {
|
||||
EmitAbbrev(MCOS, dwarf::DW_AT_ranges, dwarf::DW_FORM_data4);
|
||||
EmitAbbrev(MCOS, dwarf::DW_AT_stmt_list,
|
||||
context.getDwarfVersion() >= 4 ? dwarf::DW_FORM_sec_offset
|
||||
: dwarf::DW_FORM_data4);
|
||||
if (context.getGenDwarfSectionSyms().size() > 1 &&
|
||||
context.getDwarfVersion() >= 3) {
|
||||
EmitAbbrev(MCOS, dwarf::DW_AT_ranges,
|
||||
context.getDwarfVersion() >= 4 ? dwarf::DW_FORM_sec_offset
|
||||
: dwarf::DW_FORM_data4);
|
||||
} else {
|
||||
EmitAbbrev(MCOS, dwarf::DW_AT_low_pc, dwarf::DW_FORM_addr);
|
||||
EmitAbbrev(MCOS, dwarf::DW_AT_high_pc, dwarf::DW_FORM_addr);
|
||||
|
|
|
@ -25,7 +25,7 @@ b:
|
|||
|
||||
// DWARF: .debug_info contents:
|
||||
// DWARF: 0x{{[0-9a-f]+}}: DW_TAG_compile_unit [1]
|
||||
// CHECK-NOT-DWARF: DW_TAG_
|
||||
// DWARF-NOT: DW_TAG_
|
||||
// DWARF: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
|
||||
// DWARF: DW_AT_high_pc [DW_FORM_addr] (0x0000000000000004)
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
// RUN: llvm-mc < %s -triple=armv7-linux-gnueabi -filetype=obj -o %t -g -fdebug-compilation-dir=/tmp
|
||||
// RUN: llvm-dwarfdump %t | FileCheck -check-prefix DWARF %s
|
||||
// RUN: llvm-dwarfdump %t | FileCheck -check-prefix DWARF -check-prefix DWARF4 %s
|
||||
// RUN: llvm-objdump -r %t | FileCheck -check-prefix RELOC %s
|
||||
// RUN: llvm-mc < %s -triple=armv7-linux-gnueabi -filetype=obj -o %t -g -dwarf-version 3 -fdebug-compilation-dir=/tmp
|
||||
// RUN: llvm-dwarfdump %t | FileCheck -check-prefix DWARF -check-prefix DWARF3 %s
|
||||
// RUN: llvm-mc < %s -triple=armv7-linux-gnueabi -filetype=obj -o %t -g -dwarf-version 2 2>&1 | FileCheck -check-prefix VERSION %s
|
||||
// RUN: not llvm-mc < %s -triple=armv7-linux-gnueabi -filetype=obj -o %t -g -dwarf-version 1 2>&1 | FileCheck -check-prefix DWARF1 %s
|
||||
// RUN: not llvm-mc < %s -triple=armv7-linux-gnueabi -filetype=obj -o %t -g -dwarf-version 5 2>&1 | FileCheck -check-prefix DWARF5 %s
|
||||
|
@ -15,8 +17,10 @@ b:
|
|||
// DWARF: .debug_abbrev contents:
|
||||
// DWARF: Abbrev table for offset: 0x00000000
|
||||
// DWARF: [1] DW_TAG_compile_unit DW_CHILDREN_yes
|
||||
// DWARF: DW_AT_stmt_list DW_FORM_data4
|
||||
// DWARF: DW_AT_ranges DW_FORM_data4
|
||||
// DWARF3: DW_AT_stmt_list DW_FORM_data4
|
||||
// DWARF4: DW_AT_stmt_list DW_FORM_sec_offset
|
||||
// DWARF3: DW_AT_ranges DW_FORM_data4
|
||||
// DWARF4: DW_AT_ranges DW_FORM_sec_offset
|
||||
// DWARF: DW_AT_name DW_FORM_string
|
||||
// DWARF: DW_AT_comp_dir DW_FORM_string
|
||||
// DWARF: DW_AT_producer DW_FORM_string
|
||||
|
@ -24,8 +28,9 @@ b:
|
|||
|
||||
// DWARF: .debug_info contents:
|
||||
// DWARF: 0x{{[0-9a-f]+}}: DW_TAG_compile_unit [1]
|
||||
// CHECK-NOT-DWARF: DW_TAG_
|
||||
// DWARF: DW_AT_ranges [DW_FORM_data4] (0x00000000
|
||||
// DWARF-NOT: DW_TAG_
|
||||
// DWARF3: DW_AT_ranges [DW_FORM_data4] (0x00000000
|
||||
// DWARF4: DW_AT_ranges [DW_FORM_sec_offset] (0x00000000
|
||||
|
||||
// DWARF: 0x{{[0-9a-f]+}}: DW_TAG_label [2] *
|
||||
// DWARF-NEXT: DW_AT_name [DW_FORM_string] ("a")
|
||||
|
@ -41,10 +46,10 @@ b:
|
|||
|
||||
|
||||
// DWARF: .debug_line contents:
|
||||
// DWARF: 0x0000000000000000 9 0 1 0 0 is_stmt
|
||||
// DWARF-NEXT: 0x0000000000000004 9 0 1 0 0 is_stmt end_sequence
|
||||
// DWARF-NEXT: 0x0000000000000000 13 0 1 0 0 is_stmt
|
||||
// DWARF-NEXT: 0x0000000000000004 13 0 1 0 0 is_stmt end_sequence
|
||||
// DWARF: 0x0000000000000000 11 0 1 0 0 is_stmt
|
||||
// DWARF-NEXT: 0x0000000000000004 11 0 1 0 0 is_stmt end_sequence
|
||||
// DWARF-NEXT: 0x0000000000000000 15 0 1 0 0 is_stmt
|
||||
// DWARF-NEXT: 0x0000000000000004 15 0 1 0 0 is_stmt end_sequence
|
||||
|
||||
|
||||
// DWARF: .debug_ranges contents:
|
||||
|
|
|
@ -9,7 +9,7 @@ b:
|
|||
// DWARF: .debug_abbrev contents:
|
||||
// DWARF: Abbrev table for offset: 0x00000000
|
||||
// DWARF: [1] DW_TAG_compile_unit DW_CHILDREN_yes
|
||||
// DWARF: DW_AT_stmt_list DW_FORM_data4
|
||||
// DWARF: DW_AT_stmt_list DW_FORM_sec_offset
|
||||
// DWARF: DW_AT_low_pc DW_FORM_addr
|
||||
// DWARF: DW_AT_high_pc DW_FORM_addr
|
||||
// DWARF: DW_AT_name DW_FORM_string
|
||||
|
|
|
@ -10,7 +10,7 @@ a:
|
|||
// DWARF: .debug_abbrev contents:
|
||||
// DWARF: Abbrev table for offset: 0x00000000
|
||||
// DWARF: [1] DW_TAG_compile_unit DW_CHILDREN_yes
|
||||
// DWARF: DW_AT_stmt_list DW_FORM_data4
|
||||
// DWARF: DW_AT_stmt_list DW_FORM_sec_offset
|
||||
// DWARF: DW_AT_low_pc DW_FORM_addr
|
||||
// DWARF: DW_AT_high_pc DW_FORM_addr
|
||||
// DWARF: DW_AT_name DW_FORM_string
|
||||
|
@ -20,7 +20,7 @@ a:
|
|||
|
||||
// DWARF: .debug_info contents:
|
||||
// DWARF: 0x{{[0-9a-f]+}}: DW_TAG_compile_unit [1]
|
||||
// CHECK-NOT-DWARF: DW_TAG_
|
||||
// DWARF-NOT: DW_TAG_
|
||||
// DWARF: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
|
||||
// DWARF: DW_AT_high_pc [DW_FORM_addr] (0x0000000000000004)
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ _x: .long 1
|
|||
// CHECK: .debug_abbrev contents:
|
||||
// CHECK: Abbrev table for offset: 0x00000000
|
||||
// CHECK: [1] DW_TAG_compile_unit DW_CHILDREN_yes
|
||||
// CHECK: DW_AT_stmt_list DW_FORM_data4
|
||||
// CHECK: DW_AT_stmt_list DW_FORM_sec_offset
|
||||
// CHECK: DW_AT_low_pc DW_FORM_addr
|
||||
// CHECK: DW_AT_high_pc DW_FORM_addr
|
||||
// CHECK: DW_AT_name DW_FORM_string
|
||||
|
@ -39,7 +39,7 @@ _x: .long 1
|
|||
|
||||
// We don't check the leading addresses these are at.
|
||||
// CHECK: DW_TAG_compile_unit [1] *
|
||||
// CHECK: DW_AT_stmt_list [DW_FORM_data4] (0x00000000)
|
||||
// CHECK: DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000)
|
||||
// CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
|
||||
// CHECK: DW_AT_high_pc [DW_FORM_addr] (0x0000000000000008)
|
||||
// We don't check the file name as it is a temp directory
|
||||
|
|
Loading…
Reference in New Issue