[PATCH] Use the DWARF form DW_FORM_sec_offset or DW_FORM_data4 depending on the Dwarf version being generated

Robinson, Paul Paul_Robinson at playstation.sony.com
Thu Nov 14 14:18:04 PST 2013

+; RUN: llc -split-dwarf=Enable -O0 %s -mtriple=x86_64-unknown-linux-gnu -filetype=obj -o %t -dwarf-version=3

This seems weird, fission with DWARF 3... but of course 4 doesn't
have it either, so it's no less weird than what we have today.

It's good to have the forms more consistent with the target version
but eventually we might want to be more picky about mix-n-match.

> -----Original Message-----
> From: llvm-commits-bounces at cs.uiuc.edu [mailto:llvm-commits-
> bounces at cs.uiuc.edu] On Behalf Of Keith Walker
> Sent: Thursday, November 14, 2013 8:29 AM
> To: echristo at gmail.com; kwalker at arm.com
> Cc: llvm-commits at cs.uiuc.edu
> Subject: [PATCH] Use the DWARF form DW_FORM_sec_offset or DW_FORM_data4
> depending on the Dwarf version being generated
> Hi echristo,
> 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=<uint>" 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.
> http://llvm-reviews.chandlerc.com/D2180
> Files:
>   lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
>   lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
>   lib/CodeGen/AsmPrinter/DIE.cpp
>   lib/CodeGen/AsmPrinter/DwarfDebug.cpp
>   test/DebugInfo/X86/op_deref.ll
>   test/DebugInfo/X86/block-capture.ll
>   test/DebugInfo/X86/DW_AT_stmt_list_sec_offset.ll
>   test/DebugInfo/X86/gnu-public-names.ll
>   test/DebugInfo/X86/fission-cu.ll
>   test/DebugInfo/X86/stmt-list-multiple-compile-units.ll

More information about the llvm-commits mailing list