]> 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:30:02 +0000 (04:30 -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 94443eeaaa4535c4c05f1384c30d863a09094a36..8988f198b21352f723c6fe3ce359a89ef85447f2 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-24  Nick Clifton  <nickc@redhat.com>
 
        This is the 2.36 release.
index 487376965db763fc62bdaa64b5057bcee75a1992..f0e6b89bde2fb791bcd6479e07d6d142f9397380 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