rpms/gdb/F-7 gdb-6.6-upstream.patch,1.5,1.6 gdb.spec,1.231,1.232

Jan Kratochvil (jkratoch) fedora-extras-commits at redhat.com
Tue Jun 5 17:07:12 UTC 2007


Author: jkratoch

Update of /cvs/pkgs/rpms/gdb/F-7
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv1540

Modified Files:
	gdb-6.6-upstream.patch gdb.spec 
Log Message:
* Tue Jun  5 2007 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.6-15
- Fix crash on missing filenames debug info (BZ 242155).


gdb-6.6-upstream.patch:

Index: gdb-6.6-upstream.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/F-7/gdb-6.6-upstream.patch,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- gdb-6.6-upstream.patch	28 Apr 2007 21:50:42 -0000	1.5
+++ gdb-6.6-upstream.patch	5 Jun 2007 17:07:00 -0000	1.6
@@ -738,3 +738,147 @@
 -- 
 Alan Modra
 IBM OzLabs - Linux Technology Centre
+
+
+
+2007-05-14  Paul Brook  <paul at codesourcery.com>
+	    Daniel Jacobowitz  <dan at 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:


Index: gdb.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/F-7/gdb.spec,v
retrieving revision 1.231
retrieving revision 1.232
diff -u -r1.231 -r1.232
--- gdb.spec	28 Apr 2007 21:50:42 -0000	1.231
+++ gdb.spec	5 Jun 2007 17:07:00 -0000	1.232
@@ -11,7 +11,7 @@
 Version: 6.6
 
 # The release always contains a leading reserved number, start it at 1.
-Release: 14%{?dist}
+Release: 15%{?dist}
 
 License: GPL
 Group: Development/Debuggers
@@ -637,6 +637,9 @@
 # don't include the files in include, they are part of binutils
 
 %changelog
+* Tue Jun  5 2007 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.6-15
+- Fix crash on missing filenames debug info (BZ 242155).
+
 * Sat Apr 28 2007 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.6-14
 - Fixup for the PPC Power6/DFP instructions disassembly (BZ 230000).
 - New testcase for the GCORE buffer overflow (for BZ 238285, formerly 235753).




More information about the fedora-extras-commits mailing list