[binutils-gdb] gold: Skip address size and segment selector for DWARF5

H.J. Lu hjl@sourceware.org
Thu Jan 28 12:26:50 GMT 2021


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=0318cca4934fc5d85e83351842985ad2a3475146

commit 0318cca4934fc5d85e83351842985ad2a3475146
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Thu Jan 28 04:21:15 2021 -0800

    gold: Skip address size and segment selector for DWARF5
    
    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.

Diff:
---
 gold/ChangeLog       | 6 ++++++
 gold/dwarf_reader.cc | 4 ++++
 2 files changed, 10 insertions(+)

diff --git a/gold/ChangeLog b/gold/ChangeLog
index 64f7b78a00b..5180c02f260 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -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-19  Alan Modra  <amodra@gmail.com>
 
 	PR 27203
diff --git a/gold/dwarf_reader.cc b/gold/dwarf_reader.cc
index 487376965db..f0e6b89bde2 100644
--- a/gold/dwarf_reader.cc
+++ b/gold/dwarf_reader.cc
@@ -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


More information about the Binutils-cvs mailing list