Add gold support for two-level line tables.

2015-01-30  Cary Coutant  <ccoutant@google.com>

elfcpp/
	* dwarf.h (enum DW_LNS): Add experimental two-level line table opcodes.
	(enum DW_LNCT): New enum for DWARF-5.

gold/
	* debug.h (DEBUG_LOCATION): New constant.
	(debug_string_to_enum): Add DEBUG_LOCATION.
	* dwarf_reader.cc (struct LineStateMachine): Add context field.
	(ResetLineStateMachine): Likewise.
	(Sized_dwarf_line_info::Sized_dwarf_line_info): Add support for
	two-level line tables.
	(Sized_dwarf_line_info::read_header_prolog): Likewise. Also add
	support for DWARF-3+ line tables.
	(Sized_dwarf_line_info::read_header_tables_v5): New method.
	(Sized_dwarf_line_info::process_one_opcode): Add support for two-level
	line tables.
	(Sized_dwarf_line_info::read_lines): Likewise.
	(Sized_dwarf_line_info::read_line_mappings): Likewise.
	(Sized_dwarf_line_info::do_addr2line): Add debug output.
	* dwarf_reader.h (Sized_dwarf_line_info::~Sized_dwarf_line_info):
	Delete str_buffer_start_.
	(DWARF5_EXPERIMENTAL_LINE_TABLE): New constant.
	(Sized_dwarf_line_info::read_header_tables_v5): New method.
	(Sized_dwarf_line_info::read_lines): Update prototype.
	(Sized_dwarf_line_info::process_one_opcode): Likewise.
	(Sized_dwarf_line_info::max_ops_per_insn): New data member.
	(Sized_dwarf_line_info::str_buffer_): New data member.
	(Sized_dwarf_line_info::str_buffer_end_): New data member.
	(Sized_dwarf_line_info::str_buffer_start_): New data member.
	(Sized_dwarf_line_info::end_of_header_length_): New data member.
	(Sized_dwarf_line_info::logicals_start_): New data member.
	(Sized_dwarf_line_info::actuals_start_): New data member.
	(Sized_dwarf_line_info::end_of_unit_): New data member.
4 files changed