mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-12-11 22:24:42 +00:00
* dwarf2read.c (dwarf2_debug_line_missing_file_complaint): New
function. (dwarf_decode_lines): Check for line info without a file.
This commit is contained in:
parent
af2cbe8c98
commit
25e43795f0
@ -1,3 +1,10 @@
|
|||||||
|
2007-05-14 Paul Brook <paul@codesourcery.com>
|
||||||
|
Daniel Jacobowitz <dan@codesourcery.com>
|
||||||
|
|
||||||
|
* dwarf2read.c (dwarf2_debug_line_missing_file_complaint): New
|
||||||
|
function.
|
||||||
|
(dwarf_decode_lines): Check for line info without a file.
|
||||||
|
|
||||||
2007-05-14 Daniel Jacobowitz <dan@codesourcery.com>
|
2007-05-14 Daniel Jacobowitz <dan@codesourcery.com>
|
||||||
|
|
||||||
* linux-thread-db.c (thread_db_pid_to_str): Print thread IDs
|
* linux-thread-db.c (thread_db_pid_to_str): Print thread IDs
|
||||||
|
@ -687,6 +687,13 @@ dwarf2_statement_list_fits_in_line_number_section_complaint (void)
|
|||||||
_("statement list doesn't fit in .debug_line section"));
|
_("statement list doesn't fit in .debug_line section"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
dwarf2_debug_line_missing_file_complaint (void)
|
||||||
|
{
|
||||||
|
complaint (&symfile_complaints,
|
||||||
|
_(".debug_line section has line data without a file"));
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
dwarf2_complex_location_expr_complaint (void)
|
dwarf2_complex_location_expr_complaint (void)
|
||||||
{
|
{
|
||||||
@ -6708,19 +6715,24 @@ dwarf_decode_lines (struct line_header *lh, char *comp_dir, bfd *abfd,
|
|||||||
address += (adj_opcode / lh->line_range)
|
address += (adj_opcode / lh->line_range)
|
||||||
* lh->minimum_instruction_length;
|
* lh->minimum_instruction_length;
|
||||||
line += lh->line_base + (adj_opcode % lh->line_range);
|
line += lh->line_base + (adj_opcode % lh->line_range);
|
||||||
lh->file_names[file - 1].included_p = 1;
|
if (lh->num_file_names < file)
|
||||||
if (!decode_for_pst_p)
|
dwarf2_debug_line_missing_file_complaint ();
|
||||||
{
|
else
|
||||||
if (last_subfile != current_subfile)
|
{
|
||||||
{
|
lh->file_names[file - 1].included_p = 1;
|
||||||
if (last_subfile)
|
if (!decode_for_pst_p)
|
||||||
record_line (last_subfile, 0, address);
|
{
|
||||||
last_subfile = current_subfile;
|
if (last_subfile != current_subfile)
|
||||||
|
{
|
||||||
|
if (last_subfile)
|
||||||
|
record_line (last_subfile, 0, address);
|
||||||
|
last_subfile = current_subfile;
|
||||||
|
}
|
||||||
|
/* Append row to matrix using current values. */
|
||||||
|
record_line (current_subfile, line,
|
||||||
|
check_cu_functions (address, cu));
|
||||||
}
|
}
|
||||||
/* Append row to matrix using current values. */
|
}
|
||||||
record_line (current_subfile, line,
|
|
||||||
check_cu_functions (address, cu));
|
|
||||||
}
|
|
||||||
basic_block = 1;
|
basic_block = 1;
|
||||||
}
|
}
|
||||||
else switch (op_code)
|
else switch (op_code)
|
||||||
@ -6734,9 +6746,15 @@ dwarf_decode_lines (struct line_header *lh, char *comp_dir, bfd *abfd,
|
|||||||
{
|
{
|
||||||
case DW_LNE_end_sequence:
|
case DW_LNE_end_sequence:
|
||||||
end_sequence = 1;
|
end_sequence = 1;
|
||||||
lh->file_names[file - 1].included_p = 1;
|
|
||||||
if (!decode_for_pst_p)
|
if (lh->num_file_names < file)
|
||||||
record_line (current_subfile, 0, address);
|
dwarf2_debug_line_missing_file_complaint ();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lh->file_names[file - 1].included_p = 1;
|
||||||
|
if (!decode_for_pst_p)
|
||||||
|
record_line (current_subfile, 0, address);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case DW_LNE_set_address:
|
case DW_LNE_set_address:
|
||||||
address = read_address (abfd, line_ptr, cu, &bytes_read);
|
address = read_address (abfd, line_ptr, cu, &bytes_read);
|
||||||
@ -6769,17 +6787,22 @@ dwarf_decode_lines (struct line_header *lh, char *comp_dir, bfd *abfd,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DW_LNS_copy:
|
case DW_LNS_copy:
|
||||||
lh->file_names[file - 1].included_p = 1;
|
if (lh->num_file_names < file)
|
||||||
if (!decode_for_pst_p)
|
dwarf2_debug_line_missing_file_complaint ();
|
||||||
|
else
|
||||||
{
|
{
|
||||||
if (last_subfile != current_subfile)
|
lh->file_names[file - 1].included_p = 1;
|
||||||
{
|
if (!decode_for_pst_p)
|
||||||
if (last_subfile)
|
{
|
||||||
record_line (last_subfile, 0, address);
|
if (last_subfile != current_subfile)
|
||||||
last_subfile = current_subfile;
|
{
|
||||||
}
|
if (last_subfile)
|
||||||
record_line (current_subfile, line,
|
record_line (last_subfile, 0, address);
|
||||||
check_cu_functions (address, cu));
|
last_subfile = current_subfile;
|
||||||
|
}
|
||||||
|
record_line (current_subfile, line,
|
||||||
|
check_cu_functions (address, cu));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
basic_block = 0;
|
basic_block = 0;
|
||||||
break;
|
break;
|
||||||
@ -6802,15 +6825,19 @@ dwarf_decode_lines (struct line_header *lh, char *comp_dir, bfd *abfd,
|
|||||||
|
|
||||||
file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
|
file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
|
||||||
line_ptr += bytes_read;
|
line_ptr += bytes_read;
|
||||||
fe = &lh->file_names[file - 1];
|
if (lh->num_file_names < file)
|
||||||
if (fe->dir_index)
|
dwarf2_debug_line_missing_file_complaint ();
|
||||||
dir = lh->include_dirs[fe->dir_index - 1];
|
else
|
||||||
|
{
|
||||||
if (!decode_for_pst_p)
|
fe = &lh->file_names[file - 1];
|
||||||
{
|
if (fe->dir_index)
|
||||||
last_subfile = current_subfile;
|
dir = lh->include_dirs[fe->dir_index - 1];
|
||||||
dwarf2_start_subfile (fe->name, dir, comp_dir);
|
if (!decode_for_pst_p)
|
||||||
}
|
{
|
||||||
|
last_subfile = current_subfile;
|
||||||
|
dwarf2_start_subfile (fe->name, dir, comp_dir);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case DW_LNS_set_column:
|
case DW_LNS_set_column:
|
||||||
|
Loading…
Reference in New Issue
Block a user