diff options
| -rw-r--r-- | llvm/include/llvm/ObjectYAML/DWARFYAML.h | 73 | ||||
| -rw-r--r-- | llvm/include/llvm/ObjectYAML/MachOYAML.h | 1 | ||||
| -rw-r--r-- | llvm/include/llvm/Support/Dwarf.h | 2 | ||||
| -rw-r--r-- | llvm/lib/ObjectYAML/DWARFYAML.cpp | 66 | ||||
| -rw-r--r-- | llvm/test/ObjectYAML/MachO/DWARF-debug_info.yaml | 53 | ||||
| -rw-r--r-- | llvm/test/ObjectYAML/MachO/DWARF-debug_line.yaml | 597 | ||||
| -rw-r--r-- | llvm/tools/obj2yaml/dwarf2yaml.cpp | 128 | ||||
| -rw-r--r-- | llvm/tools/yaml2obj/yaml2dwarf.cpp | 95 | ||||
| -rw-r--r-- | llvm/tools/yaml2obj/yaml2macho.cpp | 2 | ||||
| -rw-r--r-- | llvm/tools/yaml2obj/yaml2obj.h | 1 | 
10 files changed, 13 insertions, 1005 deletions
| diff --git a/llvm/include/llvm/ObjectYAML/DWARFYAML.h b/llvm/include/llvm/ObjectYAML/DWARFYAML.h index d031b5ac404..222cad61a99 100644 --- a/llvm/include/llvm/ObjectYAML/DWARFYAML.h +++ b/llvm/include/llvm/ObjectYAML/DWARFYAML.h @@ -85,41 +85,6 @@ struct Unit {    std::vector<Entry> Entries;  }; -struct File { -  StringRef Name; -  uint64_t DirIdx; -  uint64_t ModTime; -  uint64_t Length; -}; - -struct LineTableOpcode { -  dwarf::LineNumberOps Opcode; -  uint64_t ExtLen; -  dwarf::LineNumberExtendedOps SubOpcode; -  uint64_t Data; -  int64_t SData; -  File FileEntry; -  std::vector<llvm::yaml::Hex8> UnknownOpcodeData; -  std::vector<llvm::yaml::Hex64> StandardOpcodeData; -}; - -struct LineTable { -  uint32_t TotalLength; -  uint64_t TotalLength64; -  uint16_t Version; -  uint64_t PrologueLength; -  uint8_t MinInstLength; -  uint8_t MaxOpsPerInst; -  uint8_t DefaultIsStmt; -  uint8_t LineBase; -  uint8_t LineRange; -  uint8_t OpcodeBase; -  std::vector<uint8_t> StandardOpcodeLengths; -  std::vector<StringRef> IncludeDirs; -  std::vector<File> Files; -  std::vector<LineTableOpcode> Opcodes; -}; -  struct Data {    bool IsLittleEndian;    std::vector<Abbrev> AbbrevDecls; @@ -133,8 +98,6 @@ struct Data {    std::vector<Unit> CompileUnits; -  std::vector<LineTable> DebugLines; -    bool isEmpty() const;  }; @@ -142,7 +105,6 @@ struct Data {  } // namespace llvm  LLVM_YAML_IS_SEQUENCE_VECTOR(uint8_t) -LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::yaml::Hex64)  LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::StringRef)  LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::yaml::Hex8)  LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::AttributeAbbrev) @@ -153,9 +115,6 @@ LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::PubEntry)  LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::Unit)  LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::FormValue)  LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::Entry) -LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::File) -LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::LineTable) -LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::DWARFYAML::LineTableOpcode)  namespace llvm {  namespace yaml { @@ -200,18 +159,6 @@ template <> struct MappingTraits<DWARFYAML::FormValue> {    static void mapping(IO &IO, DWARFYAML::FormValue &FormValue);  }; -template <> struct MappingTraits<DWARFYAML::File> { -  static void mapping(IO &IO, DWARFYAML::File &File); -}; -   -template <> struct MappingTraits<DWARFYAML::LineTableOpcode> { -  static void mapping(IO &IO, DWARFYAML::LineTableOpcode &LineTableOpcode); -}; - -template <> struct MappingTraits<DWARFYAML::LineTable> { -  static void mapping(IO &IO, DWARFYAML::LineTable &LineTable); -}; -  #define HANDLE_DW_TAG(unused, name)                                            \    io.enumCase(value, "DW_TAG_" #name, dwarf::DW_TAG_##name); @@ -222,26 +169,6 @@ template <> struct ScalarEnumerationTraits<dwarf::Tag> {    }  }; -#define HANDLE_DW_LNS(unused, name)                                            \ -  io.enumCase(value, "DW_LNS_" #name, dwarf::DW_LNS_##name); - -template <> struct ScalarEnumerationTraits<dwarf::LineNumberOps> { -  static void enumeration(IO &io, dwarf::LineNumberOps &value) { -#include "llvm/Support/Dwarf.def" -    io.enumFallback<Hex8>(value); -  } -}; - -#define HANDLE_DW_LNE(unused, name)                                            \ -  io.enumCase(value, "DW_LNE_" #name, dwarf::DW_LNE_##name); - -template <> struct ScalarEnumerationTraits<dwarf::LineNumberExtendedOps> { -  static void enumeration(IO &io, dwarf::LineNumberExtendedOps &value) { -#include "llvm/Support/Dwarf.def" -    io.enumFallback<Hex16>(value); -  } -}; -  #define HANDLE_DW_AT(unused, name)                                             \    io.enumCase(value, "DW_AT_" #name, dwarf::DW_AT_##name); diff --git a/llvm/include/llvm/ObjectYAML/MachOYAML.h b/llvm/include/llvm/ObjectYAML/MachOYAML.h index 9ec32d265bc..6b7a924f514 100644 --- a/llvm/include/llvm/ObjectYAML/MachOYAML.h +++ b/llvm/include/llvm/ObjectYAML/MachOYAML.h @@ -139,6 +139,7 @@ struct UniversalBinary {  LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::MachOYAML::LoadCommand)  LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::MachOYAML::Section) +LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::yaml::Hex64)  LLVM_YAML_IS_SEQUENCE_VECTOR(int64_t)  LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::MachOYAML::RebaseOpcode)  LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::MachOYAML::BindOpcode) diff --git a/llvm/include/llvm/Support/Dwarf.h b/llvm/include/llvm/Support/Dwarf.h index 8336b9df9df..1a984037da0 100644 --- a/llvm/include/llvm/Support/Dwarf.h +++ b/llvm/include/llvm/Support/Dwarf.h @@ -207,7 +207,7 @@ enum DiscriminantList {  };  /// Line Number Standard Opcode Encodings. -enum LineNumberOps : uint8_t { +enum LineNumberOps {  #define HANDLE_DW_LNS(ID, NAME) DW_LNS_##NAME = ID,  #include "llvm/Support/Dwarf.def"  }; diff --git a/llvm/lib/ObjectYAML/DWARFYAML.cpp b/llvm/lib/ObjectYAML/DWARFYAML.cpp index 30bcabf72ff..42a448a7bdf 100644 --- a/llvm/lib/ObjectYAML/DWARFYAML.cpp +++ b/llvm/lib/ObjectYAML/DWARFYAML.cpp @@ -27,18 +27,17 @@ void MappingTraits<DWARFYAML::Data>::mapping(IO &IO, DWARFYAML::Data &DWARF) {    IO.setContext(&DWARF);    IO.mapOptional("debug_str", DWARF.DebugStrings);    IO.mapOptional("debug_abbrev", DWARF.AbbrevDecls); -  if (!DWARF.ARanges.empty() || !IO.outputting()) +  if(!DWARF.ARanges.empty() || !IO.outputting())      IO.mapOptional("debug_aranges", DWARF.ARanges); -  if (!DWARF.PubNames.Entries.empty() || !IO.outputting()) +  if(!DWARF.PubNames.Entries.empty() || !IO.outputting())      IO.mapOptional("debug_pubnames", DWARF.PubNames); -  if (!DWARF.PubTypes.Entries.empty() || !IO.outputting()) +  if(!DWARF.PubTypes.Entries.empty() || !IO.outputting())      IO.mapOptional("debug_pubtypes", DWARF.PubTypes); -  if (!DWARF.GNUPubNames.Entries.empty() || !IO.outputting()) +  if(!DWARF.GNUPubNames.Entries.empty() || !IO.outputting())      IO.mapOptional("debug_gnu_pubnames", DWARF.GNUPubNames); -  if (!DWARF.GNUPubTypes.Entries.empty() || !IO.outputting()) +  if(!DWARF.GNUPubTypes.Entries.empty() || !IO.outputting())      IO.mapOptional("debug_gnu_pubtypes", DWARF.GNUPubTypes);    IO.mapOptional("debug_info", DWARF.CompileUnits); -  IO.mapOptional("debug_line", DWARF.DebugLines);    IO.setContext(&oldContext);  } @@ -63,7 +62,7 @@ void MappingTraits<DWARFYAML::ARangeDescriptor>::mapping(  }  void MappingTraits<DWARFYAML::ARange>::mapping(IO &IO, -                                               DWARFYAML::ARange &Range) { +                                                DWARFYAML::ARange &Range) {    IO.mapRequired("Length", Range.Length);    IO.mapRequired("Version", Range.Version);    IO.mapRequired("CuOffset", Range.CuOffset); @@ -107,60 +106,15 @@ void MappingTraits<DWARFYAML::Entry>::mapping(IO &IO, DWARFYAML::Entry &Entry) {    IO.mapRequired("Values", Entry.Values);  } -void MappingTraits<DWARFYAML::FormValue>::mapping( -    IO &IO, DWARFYAML::FormValue &FormValue) { +void MappingTraits<DWARFYAML::FormValue>::mapping(IO &IO, +                                             DWARFYAML::FormValue &FormValue) {    IO.mapOptional("Value", FormValue.Value); -  if (!FormValue.CStr.empty() || !IO.outputting()) +  if(!FormValue.CStr.empty() || !IO.outputting())      IO.mapOptional("CStr", FormValue.CStr); -  if (!FormValue.BlockData.empty() || !IO.outputting()) +  if(!FormValue.BlockData.empty() || !IO.outputting())      IO.mapOptional("BlockData", FormValue.BlockData);  } -void MappingTraits<DWARFYAML::File>::mapping(IO &IO, DWARFYAML::File &File) { -  IO.mapRequired("Name", File.Name); -  IO.mapRequired("DirIdx", File.DirIdx); -  IO.mapRequired("ModTime", File.ModTime); -  IO.mapRequired("Length", File.Length); -} - -void MappingTraits<DWARFYAML::LineTableOpcode>::mapping( -    IO &IO, DWARFYAML::LineTableOpcode &LineTableOpcode) { -  IO.mapRequired("Opcode", LineTableOpcode.Opcode); -  if (LineTableOpcode.Opcode == dwarf::DW_LNS_extended_op) { -    IO.mapRequired("ExtLen", LineTableOpcode.ExtLen); -    IO.mapRequired("SubOpcode", LineTableOpcode.SubOpcode); -  } - -  if (!LineTableOpcode.UnknownOpcodeData.empty() || !IO.outputting()) -    IO.mapOptional("UnknownOpcodeData", LineTableOpcode.UnknownOpcodeData); -  if (!LineTableOpcode.UnknownOpcodeData.empty() || !IO.outputting()) -    IO.mapOptional("StandardOpcodeData", LineTableOpcode.StandardOpcodeData); -  if (!LineTableOpcode.FileEntry.Name.empty() || !IO.outputting()) -    IO.mapOptional("FileEntry", LineTableOpcode.FileEntry); -  if (LineTableOpcode.Opcode == dwarf::DW_LNS_advance_line || !IO.outputting()) -    IO.mapOptional("SData", LineTableOpcode.SData); -  IO.mapOptional("Data", LineTableOpcode.Data); -} - -void MappingTraits<DWARFYAML::LineTable>::mapping( -    IO &IO, DWARFYAML::LineTable &LineTable) { -  IO.mapRequired("TotalLength", LineTable.TotalLength); -  if (LineTable.TotalLength == UINT32_MAX) -    IO.mapRequired("TotalLength64", LineTable.TotalLength64); -  IO.mapRequired("Version", LineTable.Version); -  IO.mapRequired("PrologueLength", LineTable.PrologueLength); -  IO.mapRequired("MinInstLength", LineTable.MinInstLength); -  IO.mapRequired("MaxOpsPerInst", LineTable.MaxOpsPerInst); -  IO.mapRequired("DefaultIsStmt", LineTable.DefaultIsStmt); -  IO.mapRequired("LineBase", LineTable.LineBase); -  IO.mapRequired("LineRange", LineTable.LineRange); -  IO.mapRequired("OpcodeBase", LineTable.OpcodeBase); -  IO.mapRequired("StandardOpcodeLengths", LineTable.StandardOpcodeLengths); -  IO.mapRequired("IncludeDirs", LineTable.IncludeDirs); -  IO.mapRequired("Files", LineTable.Files); -  IO.mapRequired("Opcodes", LineTable.Opcodes); -} -  } // namespace llvm::yaml  } // namespace llvm diff --git a/llvm/test/ObjectYAML/MachO/DWARF-debug_info.yaml b/llvm/test/ObjectYAML/MachO/DWARF-debug_info.yaml index 10f8f2ebd23..9a616e9afb9 100644 --- a/llvm/test/ObjectYAML/MachO/DWARF-debug_info.yaml +++ b/llvm/test/ObjectYAML/MachO/DWARF-debug_info.yaml @@ -451,59 +451,6 @@ DWARF:              - Value:           0x0000000000000001          - AbbrCode:        0x00000000            Values:           -  debug_line:       -    - TotalLength:     65 -      Version:         2 -      PrologueLength:  36 -      MinInstLength:   1 -      MaxOpsPerInst:   0 -      DefaultIsStmt:   1 -      LineBase:        251 -      LineRange:       14 -      OpcodeBase:      13 -      StandardOpcodeLengths:  -        - 0 -        - 1 -        - 1 -        - 1 -        - 1 -        - 0 -        - 0 -        - 0 -        - 1 -        - 0 -        - 0 -        - 1 -      IncludeDirs:      -      Files:            -        - Name:            hello_world.c -          DirIdx:          0 -          ModTime:         0 -          Length:          0 -      Opcodes:          -        - Opcode:          DW_LNS_extended_op -          ExtLen:          9 -          SubOpcode:       DW_LNE_set_address -          Data:            4294971216 -        - Opcode:          0x14 -          Data:            4294971216 -        - Opcode:          DW_LNS_set_column -          Data:            3 -        - Opcode:          DW_LNS_set_prologue_end -          Data:            3 -        - Opcode:          DW_LNS_const_add_pc -          Data:            3 -        - Opcode:          0xBB -          Data:            3 -        - Opcode:          0xBB -          Data:            3 -        - Opcode:          DW_LNS_advance_pc -          Data:            11 -        - Opcode:          DW_LNS_extended_op -          ExtLen:          1 -          SubOpcode:       DW_LNE_end_sequence -          Data:            11 -...  ... diff --git a/llvm/test/ObjectYAML/MachO/DWARF-debug_line.yaml b/llvm/test/ObjectYAML/MachO/DWARF-debug_line.yaml deleted file mode 100644 index 7e7dc85e67e..00000000000 --- a/llvm/test/ObjectYAML/MachO/DWARF-debug_line.yaml +++ /dev/null @@ -1,597 +0,0 @@ -# RUN: yaml2obj %s | obj2yaml | FileCheck %s - ---- !mach-o -FileHeader:       -  magic:           0xFEEDFACF -  cputype:         0x01000007 -  cpusubtype:      0x00000003 -  filetype:        0x0000000A -  ncmds:           7 -  sizeofcmds:      1848 -  flags:           0x00000000 -  reserved:        0x00000000 -LoadCommands:     -  - cmd:             LC_UUID -    cmdsize:         24 -    uuid:            B4D48511-37F4-3ED4-AFA7-1683DCE69AC4 -  - cmd:             LC_SYMTAB -    cmdsize:         24 -    symoff:          4096 -    nsyms:           2 -    stroff:          4128 -    strsize:         28 -  - 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_abbrev:     -    - Code:            0x00000001 -      Tag:             DW_TAG_compile_unit -      Children:        DW_CHILDREN_yes -      Attributes:       -        - Attribute:       DW_AT_producer -          Form:            DW_FORM_strp -        - Attribute:       DW_AT_language -          Form:            DW_FORM_data2 -        - Attribute:       DW_AT_name -          Form:            DW_FORM_strp -        - Attribute:       DW_AT_stmt_list -          Form:            DW_FORM_sec_offset -        - Attribute:       DW_AT_comp_dir -          Form:            DW_FORM_strp -        - Attribute:       DW_AT_low_pc -          Form:            DW_FORM_addr -        - Attribute:       DW_AT_high_pc -          Form:            DW_FORM_data4 -    - Code:            0x00000002 -      Tag:             DW_TAG_subprogram -      Children:        DW_CHILDREN_yes -      Attributes:       -        - Attribute:       DW_AT_low_pc -          Form:            DW_FORM_addr -        - Attribute:       DW_AT_high_pc -          Form:            DW_FORM_data4 -        - Attribute:       DW_AT_frame_base -          Form:            DW_FORM_exprloc -        - Attribute:       DW_AT_name -          Form:            DW_FORM_strp -        - Attribute:       DW_AT_decl_file -          Form:            DW_FORM_data1 -        - Attribute:       DW_AT_decl_line -          Form:            DW_FORM_data1 -        - Attribute:       DW_AT_prototyped -          Form:            DW_FORM_flag_present -        - Attribute:       DW_AT_type -          Form:            DW_FORM_ref4 -        - Attribute:       DW_AT_external -          Form:            DW_FORM_flag_present -    - Code:            0x00000003 -      Tag:             DW_TAG_formal_parameter -      Children:        DW_CHILDREN_no -      Attributes:       -        - Attribute:       DW_AT_location -          Form:            DW_FORM_exprloc -        - Attribute:       DW_AT_name -          Form:            DW_FORM_strp -        - Attribute:       DW_AT_decl_file -          Form:            DW_FORM_data1 -        - Attribute:       DW_AT_decl_line -          Form:            DW_FORM_data1 -        - Attribute:       DW_AT_type -          Form:            DW_FORM_ref4 -    - Code:            0x00000004 -      Tag:             DW_TAG_base_type -      Children:        DW_CHILDREN_no -      Attributes:       -        - Attribute:       DW_AT_name -          Form:            DW_FORM_strp -        - Attribute:       DW_AT_encoding -          Form:            DW_FORM_data1 -        - Attribute:       DW_AT_byte_size -          Form:            DW_FORM_data1 -    - Code:            0x00000005 -      Tag:             DW_TAG_pointer_type -      Children:        DW_CHILDREN_no -      Attributes:       -        - Attribute:       DW_AT_type -          Form:            DW_FORM_ref4 -  debug_aranges:    -    - Length:          44 -      Version:         2 -      CuOffset:        0 -      AddrSize:        8 -      SegSize:         0 -      Descriptors:      -        - Address:         0x0000000100000F50 -          Length:          52 -  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 -  debug_info:       -    - Length:          117 -      Version:         4 -      AbbrOffset:      0 -      AddrSize:        8 -      Entries:          -        - AbbrCode:        0x00000001 -          Values:           -            - Value:           0x0000000000000001 -            - Value:           0x000000000000000C -            - Value:           0x0000000000000038 -            - Value:           0x0000000000000000 -            - Value:           0x0000000000000046 -            - Value:           0x0000000100000F50 -            - Value:           0x0000000000000034 -        - AbbrCode:        0x00000002 -          Values:           -            - Value:           0x0000000100000F50 -            - Value:           0x0000000000000034 -            - Value:           0x0000000000000001 -              BlockData:        -                - 0x56 -            - Value:           0x0000000000000076 -            - Value:           0x0000000000000001 -            - Value:           0x0000000000000003 -            - Value:           0x0000000000000001 -            - Value:           0x0000000000000060 -            - Value:           0x0000000000000001 -        - AbbrCode:        0x00000003 -          Values:           -            - Value:           0x0000000000000002 -              BlockData:        -                - 0x91 -                - 0x78 -            - Value:           0x000000000000007B -            - Value:           0x0000000000000001 -            - Value:           0x0000000000000003 -            - Value:           0x0000000000000060 -        - AbbrCode:        0x00000003 -          Values:           -            - Value:           0x0000000000000002 -              BlockData:        -                - 0x91 -                - 0x70 -            - Value:           0x0000000000000080 -            - Value:           0x0000000000000001 -            - Value:           0x0000000000000003 -            - Value:           0x0000000000000067 -        - AbbrCode:        0x00000000 -          Values:           -        - AbbrCode:        0x00000004 -          Values:           -            - Value:           0x0000000000000085 -            - Value:           0x0000000000000005 -            - Value:           0x0000000000000004 -        - AbbrCode:        0x00000005 -          Values:           -            - Value:           0x000000000000006C -        - AbbrCode:        0x00000005 -          Values:           -            - Value:           0x0000000000000071 -        - AbbrCode:        0x00000004 -          Values:           -            - Value:           0x0000000000000089 -            - Value:           0x0000000000000006 -            - Value:           0x0000000000000001 -        - AbbrCode:        0x00000000 -          Values:           -  debug_line:       -    - TotalLength:     65 -      Version:         2 -      PrologueLength:  36 -      MinInstLength:   1 -      MaxOpsPerInst:   0 -      DefaultIsStmt:   1 -      LineBase:        251 -      LineRange:       14 -      OpcodeBase:      13 -      StandardOpcodeLengths:  -        - 0 -        - 1 -        - 1 -        - 1 -        - 1 -        - 0 -        - 0 -        - 0 -        - 1 -        - 0 -        - 0 -        - 1 -      IncludeDirs:      -      Files:            -        - Name:            hello_world.c -          DirIdx:          0 -          ModTime:         0 -          Length:          0 -      Opcodes:          -        - Opcode:          DW_LNS_extended_op -          ExtLen:          9 -          SubOpcode:       DW_LNE_set_address -          Data:            4294971216 -        - Opcode:          0x14 -          Data:            4294971216 -        - Opcode:          DW_LNS_set_column -          Data:            3 -        - Opcode:          DW_LNS_set_prologue_end -          Data:            3 -        - Opcode:          DW_LNS_const_add_pc -          Data:            3 -        - Opcode:          0xBB -          Data:            3 -        - Opcode:          0xBB -          Data:            3 -        - Opcode:          DW_LNS_advance_pc -          Data:            11 -        - Opcode:          DW_LNS_extended_op -          ExtLen:          1 -          SubOpcode:       DW_LNE_end_sequence -          Data:            11 -... - -#CHECK:   debug_line:       -#CHECK:     - TotalLength:     65 -#CHECK:       Version:         2 -#CHECK:       PrologueLength:  36 -#CHECK:       MinInstLength:   1 -#CHECK:       MaxOpsPerInst:   0 -#CHECK:       DefaultIsStmt:   1 -#CHECK:       LineBase:        251 -#CHECK:       LineRange:       14 -#CHECK:       OpcodeBase:      13 -#CHECK:       StandardOpcodeLengths:  -#CHECK:         - 0 -#CHECK:         - 1 -#CHECK:         - 1 -#CHECK:         - 1 -#CHECK:         - 1 -#CHECK:         - 0 -#CHECK:         - 0 -#CHECK:         - 0 -#CHECK:         - 1 -#CHECK:         - 0 -#CHECK:         - 0 -#CHECK:         - 1 -#CHECK:       IncludeDirs:      -#CHECK:       Files:            -#CHECK:         - Name:            hello_world.c -#CHECK:           DirIdx:          0 -#CHECK:           ModTime:         0 -#CHECK:           Length:          0 -#CHECK:       Opcodes:          -#CHECK:         - Opcode:          DW_LNS_extended_op -#CHECK:           ExtLen:          9 -#CHECK:           SubOpcode:       DW_LNE_set_address -#CHECK:           Data:            4294971216 -#CHECK:         - Opcode:          0x14 -#CHECK:           Data:            4294971216 -#CHECK:         - Opcode:          DW_LNS_set_column -#CHECK:           Data:            3 -#CHECK:         - Opcode:          DW_LNS_set_prologue_end -#CHECK:           Data:            3 -#CHECK:         - Opcode:          DW_LNS_const_add_pc -#CHECK:           Data:            3 -#CHECK:         - Opcode:          0xBB -#CHECK:           Data:            3 -#CHECK:         - Opcode:          0xBB -#CHECK:           Data:            3 -#CHECK:         - Opcode:          DW_LNS_advance_pc -#CHECK:           Data:            11 -#CHECK:         - Opcode:          DW_LNS_extended_op -#CHECK:           ExtLen:          1 -#CHECK:           SubOpcode:       DW_LNE_end_sequence -#CHECK:           Data:            11 -#CHECK: ... diff --git a/llvm/tools/obj2yaml/dwarf2yaml.cpp b/llvm/tools/obj2yaml/dwarf2yaml.cpp index cbf34ed5388..cf8b3e5b927 100644 --- a/llvm/tools/obj2yaml/dwarf2yaml.cpp +++ b/llvm/tools/obj2yaml/dwarf2yaml.cpp @@ -127,7 +127,7 @@ void dumpDebugInfo(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) {            NewValue.Value = 0xDEADBEEFDEADBEEF;            DWARFDie DIEWrapper(CU.get(), &DIE);            auto FormValue = DIEWrapper.getAttributeValue(AttrSpec.Attr); -          if (!FormValue) +          if(!FormValue)              return;            auto Form = FormValue.getValue().getForm();            bool indirect = false; @@ -211,137 +211,11 @@ void dumpDebugInfo(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) {    }  } -bool dumpFileEntry(DataExtractor &Data, uint32_t &Offset, -                   DWARFYAML::File &File) { -  File.Name = Data.getCStr(&Offset); -  if (File.Name.empty()) -    return false; -  File.DirIdx = Data.getULEB128(&Offset); -  File.ModTime = Data.getULEB128(&Offset); -  File.Length = Data.getULEB128(&Offset); -  return true; -} - -void dumpDebugLines(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) { -  for (const auto &CU : DCtx.compile_units()) { -    auto CUDIE = CU->getUnitDIE(); -    if (!CUDIE) -      continue; -    if (auto StmtOffset = -            CUDIE.getAttributeValueAsSectionOffset(dwarf::DW_AT_stmt_list)) { -      DWARFYAML::LineTable DebugLines; -      DataExtractor LineData(DCtx.getLineSection().Data, DCtx.isLittleEndian(), -                             CU->getAddressByteSize()); -      uint32_t Offset = *StmtOffset; -      uint64_t SizeOfPrologueLength = 4; -      DebugLines.TotalLength = LineData.getU32(&Offset); -      uint64_t LineTableLength = DebugLines.TotalLength; -      if (DebugLines.TotalLength == UINT32_MAX) { -        DebugLines.TotalLength64 = LineData.getU64(&Offset); -        LineTableLength = DebugLines.TotalLength64; -        SizeOfPrologueLength = 8; -      } -      DebugLines.Version = LineData.getU16(&Offset); -      DebugLines.PrologueLength = -          LineData.getUnsigned(&Offset, SizeOfPrologueLength); -      const uint64_t EndPrologue = DebugLines.PrologueLength + Offset; - -      DebugLines.MinInstLength = LineData.getU8(&Offset); -      if (DebugLines.Version >= 4) -        DebugLines.MaxOpsPerInst = LineData.getU8(&Offset); -      DebugLines.DefaultIsStmt = LineData.getU8(&Offset); -      DebugLines.LineBase = LineData.getU8(&Offset); -      DebugLines.LineRange = LineData.getU8(&Offset); -      DebugLines.OpcodeBase = LineData.getU8(&Offset); - -      DebugLines.StandardOpcodeLengths.reserve(DebugLines.OpcodeBase - 1); -      for (uint8_t i = 1; i < DebugLines.OpcodeBase; ++i) -        DebugLines.StandardOpcodeLengths.push_back(LineData.getU8(&Offset)); - -      while (Offset < EndPrologue) { -        StringRef Dir = LineData.getCStr(&Offset); -        if (!Dir.empty()) -          DebugLines.IncludeDirs.push_back(Dir); -        else -          break; -      } - -      while (Offset < EndPrologue) { -        DWARFYAML::File TmpFile; -        if (dumpFileEntry(LineData, Offset, TmpFile)) -          DebugLines.Files.push_back(TmpFile); -        else -          break; -      } - -      const uint64_t LineEnd = -          LineTableLength + *StmtOffset + SizeOfPrologueLength; -      while (Offset < LineEnd) { -        DWARFYAML::LineTableOpcode NewOp; -        NewOp.Opcode = (dwarf::LineNumberOps)LineData.getU8(&Offset); -        if (NewOp.Opcode == 0) { -          auto StartExt = Offset; -          NewOp.ExtLen = LineData.getULEB128(&Offset); -          NewOp.SubOpcode = -              (dwarf::LineNumberExtendedOps)LineData.getU8(&Offset); -          switch (NewOp.SubOpcode) { -          case dwarf::DW_LNE_set_address: -          case dwarf::DW_LNE_set_discriminator: -            NewOp.Data = LineData.getAddress(&Offset); -            break; -          case dwarf::DW_LNE_define_file: -            dumpFileEntry(LineData, Offset, NewOp.FileEntry); -            break; -          case dwarf::DW_LNE_end_sequence: -            break; -          default: -            while (Offset < StartExt + NewOp.ExtLen) -              NewOp.UnknownOpcodeData.push_back(LineData.getU8(&Offset)); -          } -        } else if (NewOp.Opcode < DebugLines.OpcodeBase) { -          switch (NewOp.Opcode) { -          case dwarf::DW_LNS_copy: -          case dwarf::DW_LNS_negate_stmt: -          case dwarf::DW_LNS_set_basic_block: -          case dwarf::DW_LNS_const_add_pc: -          case dwarf::DW_LNS_set_prologue_end: -          case dwarf::DW_LNS_set_epilogue_begin: -            break; - -          case dwarf::DW_LNS_advance_pc: -          case dwarf::DW_LNS_set_file: -          case dwarf::DW_LNS_set_column: -          case dwarf::DW_LNS_set_isa: -            NewOp.Data = LineData.getULEB128(&Offset); -            break; - -          case dwarf::DW_LNS_advance_line: -            NewOp.SData = LineData.getSLEB128(&Offset); -            break; - -          case dwarf::DW_LNS_fixed_advance_pc: -            NewOp.Data = LineData.getU16(&Offset); -            break; - -          default: -            for (uint8_t i = 0; -                 i < DebugLines.StandardOpcodeLengths[NewOp.Opcode - 1]; ++i) -              NewOp.StandardOpcodeData.push_back(LineData.getULEB128(&Offset)); -          } -        } -        DebugLines.Opcodes.push_back(NewOp); -      } -      Y.DebugLines.push_back(DebugLines); -    } -  } -} -  std::error_code dwarf2yaml(DWARFContextInMemory &DCtx, DWARFYAML::Data &Y) {    dumpDebugAbbrev(DCtx, Y);    dumpDebugStrings(DCtx, Y);    dumpDebugARanges(DCtx, Y);    dumpDebugPubSections(DCtx, Y);    dumpDebugInfo(DCtx, Y); -  dumpDebugLines(DCtx, Y);    return obj2yaml_error::success;  } diff --git a/llvm/tools/yaml2obj/yaml2dwarf.cpp b/llvm/tools/yaml2obj/yaml2dwarf.cpp index 3ceb7772b96..8ba1190c56a 100644 --- a/llvm/tools/yaml2obj/yaml2dwarf.cpp +++ b/llvm/tools/yaml2obj/yaml2dwarf.cpp @@ -233,98 +233,3 @@ void yaml2debug_info(raw_ostream &OS, const DWARFYAML::Data &DI) {      }    }  } - -void yaml2FileEntry(raw_ostream &OS, const DWARFYAML::File &File) { -  OS.write(File.Name.data(), File.Name.size()); -  OS.write('\0'); -  encodeULEB128(File.DirIdx, OS); -  encodeULEB128(File.ModTime, OS); -  encodeULEB128(File.Length, OS); -} - -void yaml2debug_line(raw_ostream &OS, const DWARFYAML::Data &DI) { -  for (const auto LineTable : DI.DebugLines) { -    writeInteger((uint32_t)LineTable.TotalLength, OS, DI.IsLittleEndian); -    uint64_t SizeOfPrologueLength = 4; -    if (LineTable.TotalLength == UINT32_MAX) { -      writeInteger((uint64_t)LineTable.TotalLength64, OS, DI.IsLittleEndian); -      SizeOfPrologueLength = 8; -    } -    writeInteger((uint16_t)LineTable.Version, OS, DI.IsLittleEndian); -    writeVariableSizedInteger(LineTable.PrologueLength, SizeOfPrologueLength, -                              OS, DI.IsLittleEndian); -    writeInteger((uint8_t)LineTable.MinInstLength, OS, DI.IsLittleEndian); -    if (LineTable.Version >= 4) -      writeInteger((uint8_t)LineTable.MaxOpsPerInst, OS, DI.IsLittleEndian); -    writeInteger((uint8_t)LineTable.DefaultIsStmt, OS, DI.IsLittleEndian); -    writeInteger((uint8_t)LineTable.LineBase, OS, DI.IsLittleEndian); -    writeInteger((uint8_t)LineTable.LineRange, OS, DI.IsLittleEndian); -    writeInteger((uint8_t)LineTable.OpcodeBase, OS, DI.IsLittleEndian); - -    for (auto OpcodeLength : LineTable.StandardOpcodeLengths) -      writeInteger((uint8_t)OpcodeLength, OS, DI.IsLittleEndian); - -    for (auto IncludeDir : LineTable.IncludeDirs) { -      OS.write(IncludeDir.data(), IncludeDir.size()); -      OS.write('\0'); -    } -    OS.write('\0'); - -    for (auto File : LineTable.Files) -      yaml2FileEntry(OS, File); -    OS.write('\0'); - -    for (auto Op : LineTable.Opcodes) { -      writeInteger((uint8_t)Op.Opcode, OS, DI.IsLittleEndian); -      if (Op.Opcode == 0) { -        encodeULEB128(Op.ExtLen, OS); -        writeInteger((uint8_t)Op.SubOpcode, OS, DI.IsLittleEndian); -        switch (Op.SubOpcode) { -        case dwarf::DW_LNE_set_address: -        case dwarf::DW_LNE_set_discriminator: -          writeVariableSizedInteger(Op.Data, DI.CompileUnits[0].AddrSize, OS, -                                    DI.IsLittleEndian); -          break; -        case dwarf::DW_LNE_define_file: -          yaml2FileEntry(OS, Op.FileEntry); -          break; -        case dwarf::DW_LNE_end_sequence: -          break; -        default: -          for (auto OpByte : Op.UnknownOpcodeData) -            writeInteger((uint8_t)OpByte, OS, DI.IsLittleEndian); -        } -      } else if (Op.Opcode < LineTable.OpcodeBase) { -        switch (Op.Opcode) { -        case dwarf::DW_LNS_copy: -        case dwarf::DW_LNS_negate_stmt: -        case dwarf::DW_LNS_set_basic_block: -        case dwarf::DW_LNS_const_add_pc: -        case dwarf::DW_LNS_set_prologue_end: -        case dwarf::DW_LNS_set_epilogue_begin: -          break; - -        case dwarf::DW_LNS_advance_pc: -        case dwarf::DW_LNS_set_file: -        case dwarf::DW_LNS_set_column: -        case dwarf::DW_LNS_set_isa: -          encodeULEB128(Op.Data, OS); -          break; - -        case dwarf::DW_LNS_advance_line: -          encodeSLEB128(Op.SData, OS); -          break; - -        case dwarf::DW_LNS_fixed_advance_pc: -          writeInteger((uint16_t)Op.Data, OS, DI.IsLittleEndian); -          break; - -        default: -          for (auto OpData : Op.StandardOpcodeData) { -            encodeULEB128(OpData, OS); -          } -        } -      } -    } -  } -} diff --git a/llvm/tools/yaml2obj/yaml2macho.cpp b/llvm/tools/yaml2obj/yaml2macho.cpp index cbc4d7ff50d..a41ec55d73b 100644 --- a/llvm/tools/yaml2obj/yaml2macho.cpp +++ b/llvm/tools/yaml2obj/yaml2macho.cpp @@ -280,8 +280,6 @@ Error MachOWriter::writeSectionData(raw_ostream &OS) {              yaml2pubsection(OS, Obj.DWARF.PubTypes, Obj.IsLittleEndian);            } else if (0 == strncmp(&Sec.sectname[0], "__debug_info", 16)) {              yaml2debug_info(OS, Obj.DWARF); -          } else if (0 == strncmp(&Sec.sectname[0], "__debug_line", 16)) { -            yaml2debug_line(OS, Obj.DWARF);            }          } else {            // Fills section data with 0xDEADBEEF diff --git a/llvm/tools/yaml2obj/yaml2obj.h b/llvm/tools/yaml2obj/yaml2obj.h index 4a637366e1a..7cad4ca8675 100644 --- a/llvm/tools/yaml2obj/yaml2obj.h +++ b/llvm/tools/yaml2obj/yaml2obj.h @@ -46,6 +46,5 @@ void yaml2pubsection(llvm::raw_ostream &OS,                       const llvm::DWARFYAML::PubSection &Sect,                       bool IsLittleEndian);  void yaml2debug_info(llvm::raw_ostream &OS, const llvm::DWARFYAML::Data &DI); -void yaml2debug_line(llvm::raw_ostream &OS, const llvm::DWARFYAML::Data &DI);  #endif | 

