[llvm] r191225 - Handle gnu pubtypes sections:

David Blaikie dblaikie at gmail.com
Mon Sep 23 14:16:21 PDT 2013


On Mon, Sep 23, 2013 at 1:55 PM, Eric Christopher <echristo at gmail.com>wrote:

> Author: echristo
> Date: Mon Sep 23 15:55:35 2013
> New Revision: 191225
>
> URL: http://llvm.org/viewvc/llvm-project?rev=191225&view=rev
> Log:
> Handle gnu pubtypes sections:
>
> a) Make sure we are emitting the correct section in our section labels
> when we begin the module.
> b) Make sure we are emitting the correct pubtypes section in the
> presence of gnu pubtypes.
> c) For C++ struct, union, class, and enumeration types are default
> external.
>

I take it we should be seeing that type (which type is it? 'C' I guess?) in
the pubnames section too? (we had no types being checked for, nor emitted,
in the test as originally committed - I assume that's a bug? but I had seen
types emitted in some cases I'd been experimenting with)

I'll look into adding dumping support for pubtypes.


>
> Modified:
>     llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
>     llvm/trunk/test/DebugInfo/X86/gnu-public-names.ll
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp?rev=191225&r1=191224&r2=191225&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp Mon Sep 23 15:55:35
> 2013
> @@ -1966,12 +1966,12 @@ void DwarfDebug::emitSectionLabels() {
>    DwarfLineSectionSym =
>      emitSectionSym(Asm, TLOF.getDwarfLineSection(), "section_line");
>    emitSectionSym(Asm, TLOF.getDwarfLocSection());
> -  if (HasDwarfPubSections) {
> -    emitSectionSym(Asm, TLOF.getDwarfPubNamesSection());
> -    emitSectionSym(Asm, TLOF.getDwarfPubTypesSection());
> -  } else if (GenerateGnuPubSections) {
> +  if (GenerateGnuPubSections) {
>      emitSectionSym(Asm, TLOF.getDwarfGnuPubNamesSection());
>      emitSectionSym(Asm, TLOF.getDwarfGnuPubTypesSection());
> +  } else if (HasDwarfPubSections) {
> +    emitSectionSym(Asm, TLOF.getDwarfPubNamesSection());
> +    emitSectionSym(Asm, TLOF.getDwarfPubTypesSection());
>    }
>
>    DwarfStrSectionSym =
> @@ -2358,6 +2358,10 @@ static dwarf::PubIndexEntryDescriptor co
>    case dwarf::DW_TAG_structure_type:
>    case dwarf::DW_TAG_union_type:
>    case dwarf::DW_TAG_enumeration_type:
> +    return dwarf::PubIndexEntryDescriptor(
> +        dwarf::GIEK_TYPE, CU->getLanguage() != dwarf::DW_LANG_C_plus_plus
> +                              ? dwarf::GIEL_STATIC
> +                              : dwarf::GIEL_EXTERNAL);
>    case dwarf::DW_TAG_typedef:
>    case dwarf::DW_TAG_base_type:
>    case dwarf::DW_TAG_subrange_type:
> @@ -2446,7 +2450,9 @@ void DwarfDebug::emitDebugPubNames(bool
>
>  void DwarfDebug::emitDebugPubTypes(bool GnuStyle) {
>    const MCSection *ISec = Asm->getObjFileLowering().getDwarfInfoSection();
> -  const MCSection *PSec =
> Asm->getObjFileLowering().getDwarfPubTypesSection();
> +  const MCSection *PSec =
> +      GnuStyle ? Asm->getObjFileLowering().getDwarfGnuPubTypesSection()
> +               : Asm->getObjFileLowering().getDwarfPubTypesSection();
>
>    for (DenseMap<const MDNode *, CompileUnit *>::iterator I =
> CUMap.begin(),
>                                                           E = CUMap.end();
>
> Modified: llvm/trunk/test/DebugInfo/X86/gnu-public-names.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/X86/gnu-public-names.ll?rev=191225&r1=191224&r2=191225&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/DebugInfo/X86/gnu-public-names.ll (original)
> +++ llvm/trunk/test/DebugInfo/X86/gnu-public-names.ll Mon Sep 23 15:55:35
> 2013
> @@ -33,9 +33,12 @@
>  ;   int global_namespace_variable = 1;
>  ; }
>
> -
> +; ASM: .section        .debug_gnu_pubnames
>  ; ASM: .byte   32                      # Kind: VARIABLE, EXTERNAL
>
> +; ASM: .section        .debug_gnu_pubtypes
> +; ASM: .byte   16                      # Kind: TYPE, EXTERNAL
> +
>  ; CHECK: .debug_info contents:
>  ; CHECK: 0x00000046: DW_TAG_subprogram
>  ; CHECK-NEXT: DW_AT_MIPS_linkage_name
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130923/e7dba849/attachment.html>


More information about the llvm-commits mailing list