- Fix crash on missing filenames debug info (BZ 242155).
This commit is contained in:
parent
1485ed2965
commit
da8ce49b55
|
@ -738,3 +738,147 @@ instructions that take RMC operands.
|
||||||
--
|
--
|
||||||
Alan Modra
|
Alan Modra
|
||||||
IBM OzLabs - Linux Technology Centre
|
IBM OzLabs - Linux Technology Centre
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
--- src/gdb/dwarf2read.c 2007/04/18 13:25:04 1.218
|
||||||
|
+++ src/gdb/dwarf2read.c 2007/05/14 17:15:20 1.219
|
||||||
|
@@ -688,6 +688,13 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
+dwarf2_debug_line_missing_file_complaint (void)
|
||||||
|
+{
|
||||||
|
+ complaint (&symfile_complaints,
|
||||||
|
+ _(".debug_line section has line data without a file"));
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void
|
||||||
|
dwarf2_complex_location_expr_complaint (void)
|
||||||
|
{
|
||||||
|
complaint (&symfile_complaints, _("location expression too complex"));
|
||||||
|
@@ -6708,19 +6715,24 @@
|
||||||
|
address += (adj_opcode / lh->line_range)
|
||||||
|
* lh->minimum_instruction_length;
|
||||||
|
line += lh->line_base + (adj_opcode % lh->line_range);
|
||||||
|
- lh->file_names[file - 1].included_p = 1;
|
||||||
|
- if (!decode_for_pst_p)
|
||||||
|
- {
|
||||||
|
- if (last_subfile != current_subfile)
|
||||||
|
- {
|
||||||
|
- if (last_subfile)
|
||||||
|
- record_line (last_subfile, 0, address);
|
||||||
|
- last_subfile = current_subfile;
|
||||||
|
+ if (lh->num_file_names < file)
|
||||||
|
+ dwarf2_debug_line_missing_file_complaint ();
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ lh->file_names[file - 1].included_p = 1;
|
||||||
|
+ if (!decode_for_pst_p)
|
||||||
|
+ {
|
||||||
|
+ 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;
|
||||||
|
}
|
||||||
|
else switch (op_code)
|
||||||
|
@@ -6734,9 +6746,15 @@
|
||||||
|
{
|
||||||
|
case DW_LNE_end_sequence:
|
||||||
|
end_sequence = 1;
|
||||||
|
- lh->file_names[file - 1].included_p = 1;
|
||||||
|
- if (!decode_for_pst_p)
|
||||||
|
- record_line (current_subfile, 0, address);
|
||||||
|
+
|
||||||
|
+ if (lh->num_file_names < file)
|
||||||
|
+ 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;
|
||||||
|
case DW_LNE_set_address:
|
||||||
|
address = read_address (abfd, line_ptr, cu, &bytes_read);
|
||||||
|
@@ -6769,17 +6787,22 @@
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DW_LNS_copy:
|
||||||
|
- lh->file_names[file - 1].included_p = 1;
|
||||||
|
- if (!decode_for_pst_p)
|
||||||
|
+ if (lh->num_file_names < file)
|
||||||
|
+ dwarf2_debug_line_missing_file_complaint ();
|
||||||
|
+ else
|
||||||
|
{
|
||||||
|
- if (last_subfile != current_subfile)
|
||||||
|
- {
|
||||||
|
- if (last_subfile)
|
||||||
|
- record_line (last_subfile, 0, address);
|
||||||
|
- last_subfile = current_subfile;
|
||||||
|
- }
|
||||||
|
- record_line (current_subfile, line,
|
||||||
|
- check_cu_functions (address, cu));
|
||||||
|
+ lh->file_names[file - 1].included_p = 1;
|
||||||
|
+ if (!decode_for_pst_p)
|
||||||
|
+ {
|
||||||
|
+ if (last_subfile != current_subfile)
|
||||||
|
+ {
|
||||||
|
+ if (last_subfile)
|
||||||
|
+ record_line (last_subfile, 0, address);
|
||||||
|
+ last_subfile = current_subfile;
|
||||||
|
+ }
|
||||||
|
+ record_line (current_subfile, line,
|
||||||
|
+ check_cu_functions (address, cu));
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
basic_block = 0;
|
||||||
|
break;
|
||||||
|
@@ -6806,15 +6806,19 @@ dwarf_decode_lines (struct line_header *
|
||||||
|
|
||||||
|
file = read_unsigned_leb128 (abfd, line_ptr, &bytes_read);
|
||||||
|
line_ptr += bytes_read;
|
||||||
|
- fe = &lh->file_names[file - 1];
|
||||||
|
- if (fe->dir_index)
|
||||||
|
- dir = lh->include_dirs[fe->dir_index - 1];
|
||||||
|
-
|
||||||
|
- if (!decode_for_pst_p)
|
||||||
|
- {
|
||||||
|
- last_subfile = current_subfile;
|
||||||
|
- dwarf2_start_subfile (fe->name, dir, comp_dir, file);
|
||||||
|
- }
|
||||||
|
+ if (lh->num_file_names < file)
|
||||||
|
+ dwarf2_debug_line_missing_file_complaint ();
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ fe = &lh->file_names[file - 1];
|
||||||
|
+ if (fe->dir_index)
|
||||||
|
+ dir = lh->include_dirs[fe->dir_index - 1];
|
||||||
|
+ if (!decode_for_pst_p)
|
||||||
|
+ {
|
||||||
|
+ last_subfile = current_subfile;
|
||||||
|
+ dwarf2_start_subfile (fe->name, dir, comp_dir, file);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case DW_LNS_set_column:
|
||||||
|
|
5
gdb.spec
5
gdb.spec
|
@ -11,7 +11,7 @@ Name: gdb
|
||||||
Version: 6.6
|
Version: 6.6
|
||||||
|
|
||||||
# The release always contains a leading reserved number, start it at 1.
|
# The release always contains a leading reserved number, start it at 1.
|
||||||
Release: 14%{?dist}
|
Release: 15%{?dist}
|
||||||
|
|
||||||
License: GPL
|
License: GPL
|
||||||
Group: Development/Debuggers
|
Group: Development/Debuggers
|
||||||
|
@ -637,6 +637,9 @@ fi
|
||||||
# don't include the files in include, they are part of binutils
|
# don't include the files in include, they are part of binutils
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Jun 5 2007 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.6-15
|
||||||
|
- Fix crash on missing filenames debug info (BZ 242155).
|
||||||
|
|
||||||
* Sat Apr 28 2007 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.6-14
|
* Sat Apr 28 2007 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.6-14
|
||||||
- Fixup for the PPC Power6/DFP instructions disassembly (BZ 230000).
|
- Fixup for the PPC Power6/DFP instructions disassembly (BZ 230000).
|
||||||
- New testcase for the GCORE buffer overflow (for BZ 238285, formerly 235753).
|
- New testcase for the GCORE buffer overflow (for BZ 238285, formerly 235753).
|
||||||
|
|
Loading…
Reference in New Issue