]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gold: Skip address size and segment selector for DWARF5
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 28 Jan 2021 12:21:15 +0000 (04:21 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 28 Jan 2021 12:38:03 +0000 (04:38 -0800)
The .debug_line secton in DWARF5 has a byte for address size and a byte
for segment selector after DWARF version.  Skip them for DWARF5.

PR gold/27246
* dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog):
Skip address size and segment selector for DWARF5.

(cherry picked from commit 0318cca4934fc5d85e83351842985ad2a3475146)

gold/ChangeLog
gold/dwarf_reader.cc

index ea4927330e264088c9b27a8fea52cd2c70d671b9..3157932f22afa0c8fa30816aa5cf30ddbe4fe5c0 100644 (file)
@@ -1,3 +1,9 @@
+2021-01-28  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gold/27246
+       * dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog):
+       Skip address size and segment selector for DWARF5.
+
 2021-01-03  Alan Modra  <amodra@gmail.com>
 
        PR 27140
index ac9fbad5482f997117a9f2b465e2b3502dacd884..ba60654393c0343d3e1b3928f2cdcc76143ba4d4 100644 (file)
@@ -1658,6 +1658,10 @@ Sized_dwarf_line_info<size, big_endian>::read_header_prolog(
   header_.version = elfcpp::Swap_unaligned<16, big_endian>::readval(lineptr);
   lineptr += 2;
 
+  // Skip address size and segment selector for DWARF5.
+  if (header_.version >= 5)
+    lineptr += 2;
+
   if (header_.offset_size == 4)
     header_.prologue_length = elfcpp::Swap_unaligned<32, big_endian>::readval(lineptr);
   else