[PATCH] D79061: [ELF] --gdb-index: support .debug_loclists

Fangrui Song via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 29 15:07:48 PDT 2020


This revision was automatically updated to reflect the committed changes.
Closed by commit rG1ccde533425a: [ELF] --gdb-index: support .debug_loclists (authored by MaskRay).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D79061/new/

https://reviews.llvm.org/D79061

Files:
  lld/ELF/DWARF.cpp
  lld/ELF/DWARF.h
  lld/test/ELF/gdb-index-loclists.s


Index: lld/test/ELF/gdb-index-loclists.s
===================================================================
--- /dev/null
+++ lld/test/ELF/gdb-index-loclists.s
@@ -0,0 +1,37 @@
+# REQUIRES: x86
+## Regression test that we don't crash on DWARF v5 .debug_loclists
+
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
+# RUN: ld.lld --gdb-index %t.o -o /dev/null
+
+.section .debug_abbrev,"", at progbits
+  .byte 1            # Abbreviation Code
+  .byte 17           # DW_TAG_compile_unit
+  .byte 0            # DW_CHILDREN_no
+  .ascii "\214\001"  # DW_AT_loclists_base
+  .byte 23           # DW_FORM_sec_offset
+  .byte 0            # EOM(1)
+  .byte 0            # EOM(2)
+  .byte 0
+
+.section .debug_info,"", at progbits
+.Lcu_begin0:
+  .long .Lcu_end0-.Lcu_begin0-4  # Length of Unit
+  .short 5                       # DWARF version number
+  .byte  1                       # DWARF Unit Type
+  .byte  8                       # Address Size
+  .long  0                       # Offset Into Abbrev. Section
+  .byte  1                       # Abbrev [1] DW_TAG_compile_unit
+  .long  .Lloclists_table_base0  # DW_AT_loclists_base
+.Lcu_end0:
+
+.section .debug_loclists,"", at progbits
+  .long .Ldebug_loclist_table_end0-.Ldebug_loclist_table_start0 # Length
+.Ldebug_loclist_table_start0:
+  .short 5                # Version
+  .byte  8                # Address size
+  .byte  0                # Segment selector size
+  .long  0                # Offset entry count
+.Lloclists_table_base0:
+  .byte  0                # DW_LLE_end_of_list
+.Ldebug_loclist_table_end0:
Index: lld/ELF/DWARF.h
===================================================================
--- lld/ELF/DWARF.h
+++ lld/ELF/DWARF.h
@@ -32,6 +32,10 @@
     f(infoSection);
   }
 
+  const llvm::DWARFSection &getLoclistsSection() const override {
+    return loclistsSection;
+  }
+
   const llvm::DWARFSection &getRangesSection() const override {
     return rangesSection;
   }
@@ -81,6 +85,7 @@
   LLDDWARFSection gnuPubnamesSection;
   LLDDWARFSection gnuPubtypesSection;
   LLDDWARFSection infoSection;
+  LLDDWARFSection loclistsSection;
   LLDDWARFSection rangesSection;
   LLDDWARFSection rnglistsSection;
   LLDDWARFSection strOffsetsSection;
Index: lld/ELF/DWARF.cpp
===================================================================
--- lld/ELF/DWARF.cpp
+++ lld/ELF/DWARF.cpp
@@ -36,6 +36,7 @@
                 .Case(".debug_gnu_pubnames", &gnuPubnamesSection)
                 .Case(".debug_gnu_pubtypes", &gnuPubtypesSection)
                 .Case(".debug_info", &infoSection)
+                .Case(".debug_loclists", &loclistsSection)
                 .Case(".debug_ranges", &rangesSection)
                 .Case(".debug_rnglists", &rnglistsSection)
                 .Case(".debug_str_offsets", &strOffsetsSection)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D79061.261057.patch
Type: text/x-patch
Size: 2807 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200429/755da0de/attachment.bin>


More information about the llvm-commits mailing list