This is the mail archive of the
binutils-cvs@sourceware.org
mailing list for the binutils project.
[binutils-gdb] Add support for DWARF-4 line number tables.
- From: Cary Coutant <ccoutant at sourceware dot org>
- To: bfd-cvs at sourceware dot org
- Date: 3 Feb 2018 01:44:37 -0000
- Subject: [binutils-gdb] Add support for DWARF-4 line number tables.
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=c83344582375e65643c5efe68b3739e87db482f3
commit c83344582375e65643c5efe68b3739e87db482f3
Author: Cary Coutant <ccoutant@gmail.com>
Date: Fri Feb 2 17:44:27 2018 -0800
Add support for DWARF-4 line number tables.
Reads the maximum_operations_per_instruction field, added in DWARF-4 to the
line number program header.
gold/
* PR gold/22776
* dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog): Add
support for DWARF-4 line number tables.
* dwarf_reader.h (Sized_dwarf_line_info::max_ops_per_insn): New field.
Diff:
---
gold/ChangeLog | 7 +++++++
gold/dwarf_reader.cc | 11 +++++++++++
gold/dwarf_reader.h | 3 ++-
3 files changed, 20 insertions(+), 1 deletion(-)
diff --git a/gold/ChangeLog b/gold/ChangeLog
index b833a7b..b341fd2 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,3 +1,10 @@
+2018-02-02 Cary Coutant <ccoutant@gmail.com>
+
+ * PR gold/22776
+ * dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog): Add
+ support for DWARF-4 line number tables.
+ * dwarf_reader.h (Sized_dwarf_line_info::max_ops_per_insn): New field.
+
2018-01-18 Alan Modra <amodra@gmail.com>
* powerpc.cc (param_plt_align): New function supplying default
diff --git a/gold/dwarf_reader.cc b/gold/dwarf_reader.cc
index 6350247..5cdb0b2 100644
--- a/gold/dwarf_reader.cc
+++ b/gold/dwarf_reader.cc
@@ -1667,6 +1667,17 @@ Sized_dwarf_line_info<size, big_endian>::read_header_prolog(
header_.min_insn_length = *lineptr;
lineptr += 1;
+ if (header_.version < 4)
+ header_.max_ops_per_insn = 1;
+ else
+ {
+ // DWARF 4 added the maximum_operations_per_instruction field.
+ header_.max_ops_per_insn = *lineptr;
+ lineptr += 1;
+ // TODO: Add support for values other than 1.
+ gold_assert(header_.max_ops_per_insn == 1);
+ }
+
header_.default_is_stmt = *lineptr;
lineptr += 1;
diff --git a/gold/dwarf_reader.h b/gold/dwarf_reader.h
index f994bf2..8c96923 100644
--- a/gold/dwarf_reader.h
+++ b/gold/dwarf_reader.h
@@ -1070,7 +1070,8 @@ class Sized_dwarf_line_info : public Dwarf_line_info
off_t total_length;
int version;
off_t prologue_length;
- int min_insn_length; // insn stands for instructin
+ int min_insn_length; // insn stands for instruction
+ int max_ops_per_insn; // Added in DWARF-4.
bool default_is_stmt; // stmt stands for statement
signed char line_base;
int line_range;