Add support for generating DWARF-5 format directory and file name tables from the assembler.

PR 25611
	PR 25614
	* dwarf.h (DWARF2_Internal_LineInfo): Add li_address_size and
	li_segment_size fields.
	* dwarf.c (read_debug_line_header): Record the address size and
	segment selector size values (if present) in the lineinfo
	structure.
	(display_formatted_table): Warn if the format count is empty but
	the table itself is not empty.
	Display the format count and entry count at the start of the table
	dump.
	(display_debug_lines_raw): Display the address size and segement
	selector size fields, if present.
	* testsuite/binutils-all/dw5.W: Update expected output.

gas	* dwarf2dbg.c (DWARF2_FILE_TIME_NAME): Default to -1.
	(DWARF2_FILE_SIZE_NAME): Default to -1.
	(DWARF2_LINE_VERSION): Default to the current dwarf level or 3,
	whichever is higher.
	(DWARF2_LINE_MAX_OPS_PER_INSN): Provide a default value of 1.
	(NUM_MD5_BYTES): Define.
	(struct file entry): Add md5 field.
	(get_filenum): Delete and replace with...
	(get_basename): New function.
	(get_directory_table_entry): New function.
	(allocate_filenum): New function.
	(allocate_filename_to_slot): New function.
	(dwarf2_where): Use new functions.
	(dwarf2_directive_filename): Add support for extended .file
	pseudo-op.
	(dwarf2_directive_loc): Allow the use of file number zero with
	DWARF 5 or higher.
	(out_file_list): Rename to...
	(out_dir_and_file_list): Add DWARF 5 support.
	(out_debug_line): Emit extra values into the section header for
	DWARF 5.
	(out_debug_str): Allow for file 0 to be used with DWARF 5.
	* doc/as.texi (.file): Update the description of this pseudo-op.
	* testsuite/gas/elf-dwarf-5-file0.s: Add more lines.
	* testsuite/gas/elf-dwarf-5-file0.d: Update expected dump output.
	* testsuite/gas/lns/lns-diag-1.l: Update expected error message.
	* NEWS: Mention the new feature.
This commit is contained in:
Nick Clifton
2020-03-11 10:17:14 +00:00
parent b76f3a4237
commit 5496f3c635
11 changed files with 672 additions and 196 deletions

View File

@ -291,6 +291,8 @@ Raw dump of debug contents of section .debug_line:
Offset: 0x0
Length: 144
DWARF Version: 5
Address size \(bytes\): 8
Segment selector \(bytes\): 0
Prologue Length: 60
Minimum Instruction Length: 1
Maximum Ops per Instruction: 1
@ -313,13 +315,13 @@ Raw dump of debug contents of section .debug_line:
Opcode 11 has 0 args
Opcode 12 has 1 arg
The Directory Table \(offset 0x22\):
The Directory Table \(offset 0x22, lines 3, columns 1\):
Entry Name
0 \(indirect line string, offset: 0x0\):
1 \(indirect line string, offset: 0x1\):
2 \(indirect line string, offset: 0x22\): /usr/include
The File Name Table \(offset 0x34\):
The File Name Table \(offset 0x34, lines 4, columns 2\):
Entry Dir Name
0 0 \(indirect line string, offset: 0x14\): main.c
1 1 \(indirect line string, offset: 0x1b\): main.c