[PATCH] DebugInfo: Do not use the DWARF Version for the .debug_pubnames or .debug_pubtypes version field

Eric Christopher echristo at gmail.com
Tue Aug 20 22:56:03 PDT 2013


FWIW llvm-commits for the back end patches next time :)

-eric

On Tue, Aug 20, 2013 at 10:27 PM, David Majnemer
<david.majnemer at gmail.com> wrote:
> Hi echristo, dblaikie,
>
> LLVM would generate DWARF with version 3 in the .debug_pubname and
> .debug_pubtypes version fields.  This would lead SGI dwarfdump to fail
> parsing the DWARF with (in the instance of .debug_pubnames) would exit
> with:
> dwarfdump ERROR:  dwarf_get_globals: DW_DLE_PUBNAMES_VERSION_ERROR (123)
>
> This fixes PR16950.
>
> http://llvm-reviews.chandlerc.com/D1454
>
> Files:
>   include/llvm/Support/Dwarf.h
>   lib/CodeGen/AsmPrinter/DwarfDebug.cpp
>   test/DebugInfo/dwarf-public-names.ll
>
> Index: include/llvm/Support/Dwarf.h
> ===================================================================
> --- include/llvm/Support/Dwarf.h
> +++ include/llvm/Support/Dwarf.h
> @@ -56,7 +56,9 @@
>
>    DW_TAG_user_base = 0x1000,            // Recommended base for user tags.
>
> -  DW_CIE_VERSION = 1                    // Common frame information version.
> +  DW_CIE_VERSION = 1,                   // Common frame information version.
> +  DW_PUBTYPES_VERSION = 2,              // Section version number for .debug_pubtypes.
> +  DW_PUBNAMES_VERSION = 2               // Section version number for .debug_pubnames.
>  };
>
>
> Index: lib/CodeGen/AsmPrinter/DwarfDebug.cpp
> ===================================================================
> --- lib/CodeGen/AsmPrinter/DwarfDebug.cpp
> +++ lib/CodeGen/AsmPrinter/DwarfDebug.cpp
> @@ -35,6 +35,7 @@
>  #include "llvm/MC/MCSymbol.h"
>  #include "llvm/Support/CommandLine.h"
>  #include "llvm/Support/Debug.h"
> +#include "llvm/Support/Dwarf.h"
>  #include "llvm/Support/ErrorHandling.h"
>  #include "llvm/Support/FormattedStream.h"
>  #include "llvm/Support/MD5.h"
> @@ -2321,7 +2322,7 @@
>      Asm->OutStreamer.EmitLabel(Asm->GetTempSymbol("pubnames_begin", ID));
>
>      Asm->OutStreamer.AddComment("DWARF Version");
> -    Asm->EmitInt16(DwarfVersion);
> +    Asm->EmitInt16(dwarf::DW_PUBNAMES_VERSION);
>
>      Asm->OutStreamer.AddComment("Offset of Compilation Unit Info");
>      Asm->EmitSectionOffset(Asm->GetTempSymbol(ISec->getLabelBeginName(), ID),
> @@ -2368,7 +2369,7 @@
>                                                    TheCU->getUniqueID()));
>
>      if (Asm->isVerbose()) Asm->OutStreamer.AddComment("DWARF Version");
> -    Asm->EmitInt16(DwarfVersion);
> +    Asm->EmitInt16(dwarf::DW_PUBTYPES_VERSION);
>
>      Asm->OutStreamer.AddComment("Offset of Compilation Unit Info");
>      const MCSection *ISec = Asm->getObjFileLowering().getDwarfInfoSection();
> Index: test/DebugInfo/dwarf-public-names.ll
> ===================================================================
> --- test/DebugInfo/dwarf-public-names.ll
> +++ test/DebugInfo/dwarf-public-names.ll
> @@ -37,6 +37,7 @@
>
>  ; Skip the output to the header of the pubnames section.
>  ; CHECK: debug_pubnames
> +; CHECK: Version:               2
>
>  ; Check for each name in the output.
>  ; CHECK: global_namespace_variable



More information about the cfe-commits mailing list