[llvm] r290139 - [ObjectYAML] Support for DWARF Pub Sections

David Blaikie via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 20 11:07:12 PST 2016


Not especially important - just usually makes me twitch to see
memcpy/reinterpret_cast going on.

On Tue, Dec 20, 2016 at 11:05 AM Chris Bieneman <beanz at apple.com> wrote:

> David,
>
> I'm not currently preserving endianness in the round-tripping.
>
> I do plan to, but since I haven't yet supported endianness in the object
> file to yaml conversions, and the DWARF context inherits endianness from
> the object file, I have a bit of work to do in order to get there.
>
> I do expect to tackle endianness before this is done. If it is important
> to you I can pull that up to the top of my stack and handle it next.
>
> Thanks,
> -Chris
>
> On Dec 19, 2016, at 8:39 PM, David Blaikie <dblaikie at gmail.com> wrote:
>
>
>
> On Mon, Dec 19, 2016 at 2:32 PM Chris Bieneman via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
> Author: cbieneman
> Date: Mon Dec 19 16:22:12 2016
> New Revision: 290139
>
> URL: http://llvm.org/viewvc/llvm-project?rev=290139&view=rev
> Log:
> [ObjectYAML] Support for DWARF Pub Sections
>
> This patch adds support for YAML<->DWARF round tripping for pub* section
> data. The patch supports both GNU and non-GNU style entries.
>
> Added:
>     llvm/trunk/test/ObjectYAML/MachO/DWARF-pubsections.yaml
> Modified:
>     llvm/trunk/include/llvm/ObjectYAML/DWARFYAML.h
>     llvm/trunk/lib/ObjectYAML/DWARFYAML.cpp
>     llvm/trunk/tools/obj2yaml/dwarf2yaml.cpp
>     llvm/trunk/tools/yaml2obj/yaml2dwarf.cpp
>     llvm/trunk/tools/yaml2obj/yaml2macho.cpp
>     llvm/trunk/tools/yaml2obj/yaml2obj.h
>
> Modified: llvm/trunk/include/llvm/ObjectYAML/DWARFYAML.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ObjectYAML/DWARFYAML.h?rev=290139&r1=290138&r2=290139&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/ObjectYAML/DWARFYAML.h (original)
> +++ llvm/trunk/include/llvm/ObjectYAML/DWARFYAML.h Mon Dec 19 16:22:12 2016
> @@ -49,10 +49,32 @@ struct ARange {
>    std::vector<ARangeDescriptor> Descriptors;
>  };
>
> +struct PubEntry {
> +  llvm::yaml::Hex32 DieOffset;
> +  llvm::yaml::Hex8 Descriptor;
> +  StringRef Name;
> +};
> +
> +struct PubSection {
> +  PubSection() : IsGNUStyle(false) {}
> +
> +  uint32_t Length;
> +  uint16_t Version;
> +  uint32_t UnitOffset;
> +  uint32_t UnitSize;
> +  bool IsGNUStyle;
> +  std::vector<PubEntry> Entries;
> +};
> +
>  struct Data {
>    std::vector<Abbrev> AbbrevDecls;
>    std::vector<StringRef> DebugStrings;
>    std::vector<ARange> ARanges;
> +  PubSection PubNames;
> +  PubSection PubTypes;
> +
> +  PubSection GNUPubNames;
> +  PubSection GNUPubTypes;
>
>    bool isEmpty() const;
>  };
> @@ -65,6 +87,7 @@ LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARF
>  LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::Abbrev)
>  LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::ARangeDescriptor)
>  LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::ARange)
> +LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::PubEntry)
>
>  namespace llvm {
>  namespace yaml {
> @@ -89,6 +112,14 @@ template <> struct MappingTraits<DWARFYA
>    static void mapping(IO &IO, DWARFYAML::ARange &Range);
>  };
>
> +template <> struct MappingTraits<DWARFYAML::PubEntry> {
> +  static void mapping(IO &IO, DWARFYAML::PubEntry &Entry);
> +};
> +
> +template <> struct MappingTraits<DWARFYAML::PubSection> {
> +  static void mapping(IO &IO, DWARFYAML::PubSection &Section);
> +};
> +
>  #define HANDLE_DW_TAG(unused, name)
>       \
>    io.enumCase(value, "DW_TAG_" #name, dwarf::DW_TAG_##name);
>
>
> Modified: llvm/trunk/lib/ObjectYAML/DWARFYAML.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ObjectYAML/DWARFYAML.cpp?rev=290139&r1=290138&r2=290139&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/ObjectYAML/DWARFYAML.cpp (original)
> +++ llvm/trunk/lib/ObjectYAML/DWARFYAML.cpp Mon Dec 19 16:22:12 2016
> @@ -28,6 +28,14 @@ void MappingTraits<DWARFYAML::Data>::map
>    IO.mapOptional("debug_abbrev", DWARF.AbbrevDecls);
>    if(!DWARF.ARanges.empty() || !IO.outputting())
>      IO.mapOptional("debug_aranges", DWARF.ARanges);
> +  if(!DWARF.PubNames.Entries.empty() || !IO.outputting())
> +    IO.mapOptional("debug_pubnames", DWARF.PubNames);
> +  if(!DWARF.PubTypes.Entries.empty() || !IO.outputting())
> +    IO.mapOptional("debug_pubtypes", DWARF.PubTypes);
> +  if(!DWARF.GNUPubNames.Entries.empty() || !IO.outputting())
> +    IO.mapOptional("debug_gnu_pubnames", DWARF.GNUPubNames);
> +  if(!DWARF.GNUPubTypes.Entries.empty() || !IO.outputting())
> +    IO.mapOptional("debug_gnu_pubtypes", DWARF.GNUPubTypes);
>  }
>
>  void MappingTraits<DWARFYAML::Abbrev>::mapping(
> @@ -60,6 +68,28 @@ void MappingTraits<DWARFYAML::ARange>::m
>    IO.mapRequired("Descriptors", Range.Descriptors);
>  }
>
> +void MappingTraits<DWARFYAML::PubEntry>::mapping(IO &IO,
> +                                                 DWARFYAML::PubEntry
> &Entry) {
> +  IO.mapRequired("DieOffset", Entry.DieOffset);
> +  if (reinterpret_cast<DWARFYAML::PubSection
> *>(IO.getContext())->IsGNUStyle)
> +    IO.mapRequired("Descriptor", Entry.Descriptor);
> +  IO.mapRequired("Name", Entry.Name);
> +}
> +
> +void MappingTraits<DWARFYAML::PubSection>::mapping(
> +    IO &IO, DWARFYAML::PubSection &Section) {
> +  auto OldContext = IO.getContext();
> +  IO.setContext(&Section);
> +
> +  IO.mapRequired("Length", Section.Length);
> +  IO.mapRequired("Version", Section.Version);
> +  IO.mapRequired("UnitOffset", Section.UnitOffset);
> +  IO.mapRequired("UnitSize", Section.UnitSize);
> +  IO.mapRequired("Entries", Section.Entries);
> +
> +  IO.setContext(OldContext);
> +}
> +
>  } // namespace llvm::yaml
>
>  } // namespace llvm
>
> Added: llvm/trunk/test/ObjectYAML/MachO/DWARF-pubsections.yaml
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/ObjectYAML/MachO/DWARF-pubsections.yaml?rev=290139&view=auto
>
> ==============================================================================
> --- llvm/trunk/test/ObjectYAML/MachO/DWARF-pubsections.yaml (added)
> +++ llvm/trunk/test/ObjectYAML/MachO/DWARF-pubsections.yaml Mon Dec 19
> 16:22:12 2016
> @@ -0,0 +1,355 @@
> +# RUN: yaml2obj %s | obj2yaml | FileCheck %s
> +
> +--- !mach-o
> +FileHeader:
> +  magic:           0xFEEDFACF
> +  cputype:         0x01000007
> +  cpusubtype:      0x00000003
> +  filetype:        0x0000000A
> +  ncmds:           5
> +  sizeofcmds:      1800
> +  flags:           0x00000000
> +  reserved:        0x00000000
> +LoadCommands:
> +  - cmd:             LC_SEGMENT_64
> +    cmdsize:         72
> +    segname:         __PAGEZERO
> +    vmaddr:          0
> +    vmsize:          4294967296
> +    fileoff:         0
> +    filesize:        0
> +    maxprot:         0
> +    initprot:        0
> +    nsects:          0
> +    flags:           0
> +  - cmd:             LC_SEGMENT_64
> +    cmdsize:         472
> +    segname:         __TEXT
> +    vmaddr:          4294967296
> +    vmsize:          4096
> +    fileoff:         0
> +    filesize:        0
> +    maxprot:         7
> +    initprot:        5
> +    nsects:          5
> +    flags:           0
> +    Sections:
> +      - sectname:        __text
> +        segname:         __TEXT
> +        addr:            0x0000000100000F50
> +        size:            52
> +        offset:          0x00000000
> +        align:           4
> +        reloff:          0x00000000
> +        nreloc:          0
> +        flags:           0x80000400
> +        reserved1:       0x00000000
> +        reserved2:       0x00000000
> +        reserved3:       0x00000000
> +      - sectname:        __stubs
> +        segname:         __TEXT
> +        addr:            0x0000000100000F84
> +        size:            6
> +        offset:          0x00000000
> +        align:           1
> +        reloff:          0x00000000
> +        nreloc:          0
> +        flags:           0x80000408
> +        reserved1:       0x00000000
> +        reserved2:       0x00000006
> +        reserved3:       0x00000000
> +      - sectname:        __stub_helper
> +        segname:         __TEXT
> +        addr:            0x0000000100000F8C
> +        size:            26
> +        offset:          0x00000000
> +        align:           2
> +        reloff:          0x00000000
> +        nreloc:          0
> +        flags:           0x80000400
> +        reserved1:       0x00000000
> +        reserved2:       0x00000000
> +        reserved3:       0x00000000
> +      - sectname:        __cstring
> +        segname:         __TEXT
> +        addr:            0x0000000100000FA6
> +        size:            14
> +        offset:          0x00000000
> +        align:           0
> +        reloff:          0x00000000
> +        nreloc:          0
> +        flags:           0x00000002
> +        reserved1:       0x00000000
> +        reserved2:       0x00000000
> +        reserved3:       0x00000000
> +      - sectname:        __unwind_info
> +        segname:         __TEXT
> +        addr:            0x0000000100000FB4
> +        size:            72
> +        offset:          0x00000000
> +        align:           2
> +        reloff:          0x00000000
> +        nreloc:          0
> +        flags:           0x00000000
> +        reserved1:       0x00000000
> +        reserved2:       0x00000000
> +        reserved3:       0x00000000
> +  - cmd:             LC_SEGMENT_64
> +    cmdsize:         232
> +    segname:         __DATA
> +    vmaddr:          4294971392
> +    vmsize:          4096
> +    fileoff:         0
> +    filesize:        0
> +    maxprot:         7
> +    initprot:        3
> +    nsects:          2
> +    flags:           0
> +    Sections:
> +      - sectname:        __nl_symbol_ptr
> +        segname:         __DATA
> +        addr:            0x0000000100001000
> +        size:            16
> +        offset:          0x00000000
> +        align:           3
> +        reloff:          0x00000000
> +        nreloc:          0
> +        flags:           0x00000006
> +        reserved1:       0x00000001
> +        reserved2:       0x00000000
> +        reserved3:       0x00000000
> +      - sectname:        __la_symbol_ptr
> +        segname:         __DATA
> +        addr:            0x0000000100001010
> +        size:            8
> +        offset:          0x00000000
> +        align:           3
> +        reloff:          0x00000000
> +        nreloc:          0
> +        flags:           0x00000007
> +        reserved1:       0x00000003
> +        reserved2:       0x00000000
> +        reserved3:       0x00000000
> +  - cmd:             LC_SEGMENT_64
> +    cmdsize:         72
> +    segname:         __LINKEDIT
> +    vmaddr:          4294975488
> +    vmsize:          4096
> +    fileoff:         4096
> +    filesize:        60
> +    maxprot:         7
> +    initprot:        1
> +    nsects:          0
> +    flags:           0
> +  - cmd:             LC_SEGMENT_64
> +    cmdsize:         952
> +    segname:         __DWARF
> +    vmaddr:          4294979584
> +    vmsize:          4096
> +    fileoff:         8192
> +    filesize:        764
> +    maxprot:         7
> +    initprot:        3
> +    nsects:          11
> +    flags:           0
> +    Sections:
> +      - sectname:        __debug_line
> +        segname:         __DWARF
> +        addr:            0x0000000100003000
> +        size:            69
> +        offset:          0x00002000
> +        align:           0
> +        reloff:          0x00000000
> +        nreloc:          0
> +        flags:           0x00000000
> +        reserved1:       0x00000000
> +        reserved2:       0x00000000
> +        reserved3:       0x00000000
> +      - sectname:        __debug_pubnames
> +        segname:         __DWARF
> +        addr:            0x0000000100003045
> +        size:            27
> +        offset:          0x00002045
> +        align:           0
> +        reloff:          0x00000000
> +        nreloc:          0
> +        flags:           0x00000000
> +        reserved1:       0x00000000
> +        reserved2:       0x00000000
> +        reserved3:       0x00000000
> +      - sectname:        __debug_pubtypes
> +        segname:         __DWARF
> +        addr:            0x0000000100003060
> +        size:            35
> +        offset:          0x00002060
> +        align:           0
> +        reloff:          0x00000000
> +        nreloc:          0
> +        flags:           0x00000000
> +        reserved1:       0x00000000
> +        reserved2:       0x00000000
> +        reserved3:       0x00000000
> +      - sectname:        __debug_aranges
> +        segname:         __DWARF
> +        addr:            0x0000000100003083
> +        size:            48
> +        offset:          0x00002083
> +        align:           0
> +        reloff:          0x00000000
> +        nreloc:          0
> +        flags:           0x00000000
> +        reserved1:       0x00000000
> +        reserved2:       0x00000000
> +        reserved3:       0x00000000
> +      - sectname:        __debug_info
> +        segname:         __DWARF
> +        addr:            0x00000001000030B3
> +        size:            121
> +        offset:          0x000020B3
> +        align:           0
> +        reloff:          0x00000000
> +        nreloc:          0
> +        flags:           0x00000000
> +        reserved1:       0x00000000
> +        reserved2:       0x00000000
> +        reserved3:       0x00000000
> +      - sectname:        __debug_abbrev
> +        segname:         __DWARF
> +        addr:            0x000000010000312C
> +        size:            76
> +        offset:          0x0000212C
> +        align:           0
> +        reloff:          0x00000000
> +        nreloc:          0
> +        flags:           0x00000000
> +        reserved1:       0x00000000
> +        reserved2:       0x00000000
> +        reserved3:       0x00000000
> +      - sectname:        __debug_str
> +        segname:         __DWARF
> +        addr:            0x0000000100003178
> +        size:            142
> +        offset:          0x00002178
> +        align:           0
> +        reloff:          0x00000000
> +        nreloc:          0
> +        flags:           0x00000000
> +        reserved1:       0x00000000
> +        reserved2:       0x00000000
> +        reserved3:       0x00000000
> +      - sectname:        __apple_names
> +        segname:         __DWARF
> +        addr:            0x0000000100003206
> +        size:            60
> +        offset:          0x00002206
> +        align:           0
> +        reloff:          0x00000000
> +        nreloc:          0
> +        flags:           0x00000000
> +        reserved1:       0x00000000
> +        reserved2:       0x00000000
> +        reserved3:       0x00000000
> +      - sectname:        __apple_namespac
> +        segname:         __DWARF
> +        addr:            0x0000000100003242
> +        size:            36
> +        offset:          0x00002242
> +        align:           0
> +        reloff:          0x00000000
> +        nreloc:          0
> +        flags:           0x00000000
> +        reserved1:       0x00000000
> +        reserved2:       0x00000000
> +        reserved3:       0x00000000
> +      - sectname:        __apple_types
> +        segname:         __DWARF
> +        addr:            0x0000000100003266
> +        size:            114
> +        offset:          0x00002266
> +        align:           0
> +        reloff:          0x00000000
> +        nreloc:          0
> +        flags:           0x00000000
> +        reserved1:       0x00000000
> +        reserved2:       0x00000000
> +        reserved3:       0x00000000
> +      - sectname:        __apple_objc
> +        segname:         __DWARF
> +        addr:            0x00000001000032D8
> +        size:            36
> +        offset:          0x000022D8
> +        align:           0
> +        reloff:          0x00000000
> +        nreloc:          0
> +        flags:           0x00000000
> +        reserved1:       0x00000000
> +        reserved2:       0x00000000
> +        reserved3:       0x00000000
> +LinkEditData:
> +  NameList:
> +    - n_strx:          2
> +      n_type:          0x0F
> +      n_sect:          1
> +      n_desc:          16
> +      n_value:         4294967296
> +    - n_strx:          22
> +      n_type:          0x0F
> +      n_sect:          1
> +      n_desc:          0
> +      n_value:         4294971216
> +  StringTable:
> +    - ''
> +    - ''
> +    - __mh_execute_header
> +    - _main
> +DWARF:
> +  debug_str:
> +    - ''
> +    - 'clang version 4.0.0 (trunk 288923) (llvm/trunk 288991)'
> +    - hello_world.c
> +    - /Users/cbieneman/dev/open-source/llvm-build-rel
> +    - main
> +    - argc
> +    - argv
> +    - int
> +    - char
> +  debug_pubnames:
> +    Length:          23
> +    Version:         2
> +    UnitOffset:      0
> +    UnitSize:        121
> +    Entries:
> +      - DieOffset:       0x0000002A
> +        Name:            main
> +  debug_pubtypes:
> +    Length:          31
> +    Version:         2
> +    UnitOffset:      0
> +    UnitSize:        121
> +    Entries:
> +      - DieOffset:       0x00000060
> +        Name:            int
> +      - DieOffset:       0x00000071
> +        Name:            char
> +...
> +
> +#CHECK: DWARF:
> +#CHECK:   debug_pubnames:
> +#CHECK:     Length:          23
> +#CHECK:     Version:         2
> +#CHECK:     UnitOffset:      0
> +#CHECK:     UnitSize:        121
> +#CHECK:     Entries:
> +#CHECK:       - DieOffset:       0x0000002A
> +#CHECK:         Name:            main
> +#CHECK:   debug_pubtypes:
> +#CHECK:     Length:          31
> +#CHECK:     Version:         2
> +#CHECK:     UnitOffset:      0
> +#CHECK:     UnitSize:        121
> +#CHECK:     Entries:
> +#CHECK:       - DieOffset:       0x00000060
> +#CHECK:         Name:            int
> +#CHECK:       - DieOffset:       0x00000071
> +#CHECK:         Name:            char
> +#CHECK: ...
>
> Modified: llvm/trunk/tools/obj2yaml/dwarf2yaml.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/obj2yaml/dwarf2yaml.cpp?rev=290139&r1=290138&r2=290139&view=diff
>
> ==============================================================================
> --- llvm/trunk/tools/obj2yaml/dwarf2yaml.cpp (original)
> +++ llvm/trunk/tools/obj2yaml/dwarf2yaml.cpp Mon Dec 19 16:22:12 2016
> @@ -67,11 +67,44 @@ void dumpDebugARanges(DWARFContextInMemo
>    }
>  }
>
> +void dumpPubSection(DWARFContextInMemory &DCtx, DWARFYAML::PubSection &Y,
> +                    StringRef Section) {
> +  DataExtractor PubSectionData(Section, DCtx.isLittleEndian(), 0);
> +  uint32_t Offset = 0;
> +  Y.Length = PubSectionData.getU32(&Offset);
> +  Y.Version = PubSectionData.getU16(&Offset);
> +  Y.UnitOffset = PubSectionData.getU32(&Offset);
> +  Y.UnitSize = PubSectionData.getU32(&Offset);
> +  while (Offset < Y.Length) {
> +    DWARFYAML::PubEntry NewEntry;
> +    NewEntry.DieOffset = PubSectionData.getU32(&Offset);
> +    if (Y.IsGNUStyle)
> +      NewEntry.Descriptor = PubSectionData.getU8(&Offset);
> +    NewEntry.Name = PubSectionData.getCStr(&Offset);
> +    Y.Entries.push_back(NewEntry);
> +  }
> +}
> +
> +void dumpDebugPubSections(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y)
> {
> +  Y.PubNames.IsGNUStyle = false;
> +  dumpPubSection(DCtx, Y.PubNames, DCtx.getPubNamesSection());
> +
> +  Y.PubTypes.IsGNUStyle = false;
> +  dumpPubSection(DCtx, Y.PubTypes, DCtx.getPubTypesSection());
> +
> +  Y.GNUPubNames.IsGNUStyle = true;
> +  dumpPubSection(DCtx, Y.GNUPubNames, DCtx.getGnuPubNamesSection());
> +
> +  Y.GNUPubTypes.IsGNUStyle = true;
> +  dumpPubSection(DCtx, Y.GNUPubTypes, DCtx.getGnuPubTypesSection());
> +}
> +
>  std::error_code dwarf2yaml(DWARFContextInMemory &DCtx,
>                             DWARFYAML::Data &Y) {
>    dumpDebugAbbrev(DCtx, Y);
>    dumpDebugStrings(DCtx, Y);
>    dumpDebugARanges(DCtx, Y);
> +  dumpDebugPubSections(DCtx, Y);
>
>    return obj2yaml_error::success;
>  }
>
> Modified: llvm/trunk/tools/yaml2obj/yaml2dwarf.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/yaml2obj/yaml2dwarf.cpp?rev=290139&r1=290138&r2=290139&view=diff
>
> ==============================================================================
> --- llvm/trunk/tools/yaml2obj/yaml2dwarf.cpp (original)
> +++ llvm/trunk/tools/yaml2obj/yaml2dwarf.cpp Mon Dec 19 16:22:12 2016
> @@ -66,3 +66,17 @@ void yaml2debug_aranges(raw_ostream &OS,
>      ZeroFillBytes(OS, Range.AddrSize * 2);
>    }
>  }
> +
> +void yaml2pubsection(raw_ostream &OS, const DWARFYAML::PubSection &Sect) {
> +  OS.write(reinterpret_cast<const char *>(&Sect.Length), 4);
>
>
> What's the deal with endianness, etc in code like this (seems to be
> idiomatic in this yaml obj code - but on first blush looks like it'd be
> broken (not write the expected bytes to the output stream) if the values
> weren't stored in the desired alignment))?
>
>
> +  OS.write(reinterpret_cast<const char *>(&Sect.Version), 2);
> +  OS.write(reinterpret_cast<const char *>(&Sect.UnitOffset), 4);
> +  OS.write(reinterpret_cast<const char *>(&Sect.UnitSize), 4);
> +  for (auto Entry : Sect.Entries) {
> +    OS.write(reinterpret_cast<const char *>(&Entry.DieOffset), 4);
> +    if (Sect.IsGNUStyle)
> +      OS.write(reinterpret_cast<const char *>(&Entry.Descriptor), 4);
> +    OS.write(Entry.Name.data(), Entry.Name.size());
> +    OS.write('\0');
> +  }
> +}
>
> Modified: llvm/trunk/tools/yaml2obj/yaml2macho.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/yaml2obj/yaml2macho.cpp?rev=290139&r1=290138&r2=290139&view=diff
>
> ==============================================================================
> --- llvm/trunk/tools/yaml2obj/yaml2macho.cpp (original)
> +++ llvm/trunk/tools/yaml2obj/yaml2macho.cpp Mon Dec 19 16:22:12 2016
> @@ -394,6 +394,10 @@ Error MachOWriter::writeDWARFData(raw_os
>        yaml2debug_abbrev(OS, Obj.DWARF);
>      } else if (0 == strncmp(&Section.sectname[0], "__debug_aranges", 16))
> {
>        yaml2debug_aranges(OS, Obj.DWARF);
> +    } else if (0 == strncmp(&Section.sectname[0], "__debug_pubnames",
> 16)) {
> +      yaml2pubsection(OS, Obj.DWARF.PubNames);
> +    } else if (0 == strncmp(&Section.sectname[0], "__debug_pubtypes",
> 16)) {
> +      yaml2pubsection(OS, Obj.DWARF.PubTypes);
>      }
>    }
>    return Error::success();
>
> Modified: llvm/trunk/tools/yaml2obj/yaml2obj.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/yaml2obj/yaml2obj.h?rev=290139&r1=290138&r2=290139&view=diff
>
> ==============================================================================
> --- llvm/trunk/tools/yaml2obj/yaml2obj.h (original)
> +++ llvm/trunk/tools/yaml2obj/yaml2obj.h Mon Dec 19 16:22:12 2016
> @@ -25,6 +25,7 @@ struct Object;
>
>  namespace DWARFYAML {
>  struct Data;
> +struct PubSection;
>  }
>
>  namespace yaml {
> @@ -43,5 +44,7 @@ void yaml2debug_str(llvm::raw_ostream &O
>                      const llvm::DWARFYAML::Data &DI);
>
>  void yaml2debug_aranges(llvm::raw_ostream &OS, const
> llvm::DWARFYAML::Data &DI);
> +void yaml2pubsection(llvm::raw_ostream &OS,
> +                     const llvm::DWARFYAML::PubSection &Sect);
>
>  #endif
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161220/01561403/attachment.html>


More information about the llvm-commits mailing list