From 33ff697cb1037a1e9361a0acee8f0faaae990bd3 Mon Sep 17 00:00:00 2001 From: Eric Christopher Date: Thu, 21 Nov 2013 23:46:41 +0000 Subject: In Dwarf 3 (and Dwarf 2) attributes whose value are offsets into a section use the form DW_FORM_data4 whilst in Dwarf 4 and later they use the form DW_FORM_sec_offset. This patch updates the places where such attributes are generated to use the appropriate form depending on the Dwarf version. The DIE entries affected have the following tags: DW_AT_stmt_list, DW_AT_ranges, DW_AT_location, DW_AT_GNU_pubnames, DW_AT_GNU_pubtypes, DW_AT_GNU_addr_base, DW_AT_GNU_ranges_base It also adds a hidden command line option "--dwarf-version=" to llc which allows the version of Dwarf to be generated to override what is specified in the metadata; this makes it possible to update existing tests to check the debugging information generated for both Dwarf 4 (the default) and Dwarf 3 using the same metadata. Patch (slightly modified) by Keith Walker! llvm-svn: 195391 --- .../X86/stmt-list-multiple-compile-units.ll | 24 ++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'llvm/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll') diff --git a/llvm/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll b/llvm/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll index d43d347958d..61cfd529127 100644 --- a/llvm/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll +++ b/llvm/test/DebugInfo/X86/stmt-list-multiple-compile-units.ll @@ -1,16 +1,18 @@ ; RUN: llc -O0 %s -mtriple=x86_64-apple-darwin -filetype=obj -o %t ; RUN: llvm-dwarfdump %t | FileCheck %s +; RUN: llc -O0 %s -mtriple=x86_64-apple-darwin -filetype=obj -o %t -dwarf-version=3 +; RUN: llvm-dwarfdump %t | FileCheck %s -check-prefix=DWARF3 ; RUN: llc < %s -O0 -mtriple=x86_64-apple-macosx10.7 | FileCheck %s -check-prefix=ASM ; rdar://13067005 ; CHECK: .debug_info contents: ; CHECK: DW_TAG_compile_unit ; CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) -; CHECK: DW_AT_stmt_list [DW_FORM_data4] (0x00000000) +; CHECK: DW_AT_stmt_list [DW_FORM_sec_offset] (0x00000000) ; CHECK: DW_TAG_compile_unit ; CHECK: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) -; CHECK: DW_AT_stmt_list [DW_FORM_data4] (0x0000003c) +; CHECK: DW_AT_stmt_list [DW_FORM_sec_offset] (0x0000003c) ; CHECK: .debug_line contents: ; CHECK-NEXT: Line table prologue: @@ -21,6 +23,24 @@ ; CHECK: file_names[ 1] 0 0x00000000 0x00000000 simple2.c ; CHECK-NOT: file_names +; DWARF3: .debug_info contents: +; DWARF3: DW_TAG_compile_unit +; DWARF3: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) +; DWARF3: DW_AT_stmt_list [DW_FORM_data4] (0x00000000) + +; DWARF3: DW_TAG_compile_unit +; DWARF3: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000) +; DWARF3: DW_AT_stmt_list [DW_FORM_data4] (0x0000003c) + +; DWARF3: .debug_line contents: +; DWARF3-NEXT: Line table prologue: +; DWARF3-NEXT: total_length: 0x00000038 +; DWARF3: file_names[ 1] 0 0x00000000 0x00000000 simple.c +; DWARF3: Line table prologue: +; DWARF3-NEXT: total_length: 0x00000039 +; DWARF3: file_names[ 1] 0 0x00000000 0x00000000 simple2.c +; DWARF3-NOT: file_names + ; PR15408 ; ASM: L__DWARF__debug_info_begin0: ; ASM: .long 0 ## DW_AT_stmt_list -- cgit v1.2.3