rpms/gdb/F-8 gdb-6.6-cu-ranges.patch, NONE, 1.1 gdb-6.6-vdso-i386-on-amd64-warning.patch, NONE, 1.1 gdb-6.6-buildid-locate.patch, 1.2, 1.3 gdb.spec, 1.248, 1.249

Jan Kratochvil (jkratoch) fedora-extras-commits at redhat.com
Wed Oct 10 23:23:21 UTC 2007


Author: jkratoch

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

Modified Files:
	gdb-6.6-buildid-locate.patch gdb.spec 
Added Files:
	gdb-6.6-cu-ranges.patch 
	gdb-6.6-vdso-i386-on-amd64-warning.patch 
Log Message:
* Wed Oct 10 2007 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.6-32
- Fix debug load for sparse assembler files (such as vDSO32 for i386-on-x86_64).
- Fix a TUI visual corruption due to the build-id warnings (BZ 320061).
- Fixed the kernel i386-on-x86_64 VDSO loading (producing `Lowest section in').


gdb-6.6-cu-ranges.patch:

--- NEW FILE gdb-6.6-cu-ranges.patch ---
2007-10-09  Jan Kratochvil  <jan.kratochvil at redhat.com>

	* dwarf2read.c (dwarf2_get_pc_bounds): Moved the `DW_AT_ranges' parsing
	code with its variables OBJFILE, CU_HEADER and OBFD into ...
	(dwarf2_ranges_read): ... a new function.
	(read_partial_die): Implemented the parsing of `DW_AT_ranges'.

2007-10-09  Jan Kratochvil  <jan.kratochvil at redhat.com>

	* gdb.dwarf2/dw2-ranges.S, gdb.dwarf2/dw2-ranges.exp,
	gdb.dwarf2/dw2-ranges.lds: New files.

--- ./gdb/dwarf2read.c	26 Sep 2007 13:59:54 -0000	1.232
+++ ./gdb/dwarf2read.c	9 Oct 2007 15:03:09 -0000
@@ -3075,6 +3075,124 @@ read_lexical_block_scope (struct die_inf
   local_symbols = new->locals;
 }
 
+/* Get low and high pc attributes from DW_AT_ranges attribute value OFFSET.
+   Return 1 if the attributes are present and valid, otherwise, return 0.  */
+
+static int
+dwarf2_ranges_read (unsigned offset, CORE_ADDR *low_return,
+		    CORE_ADDR *high_return, struct dwarf2_cu *cu)
+{
+  struct objfile *objfile = cu->objfile;
+  struct comp_unit_head *cu_header = &cu->header;
+  bfd *obfd = objfile->obfd;
+  unsigned int addr_size = cu_header->addr_size;
+  CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
+  /* Base address selection entry.  */
+  CORE_ADDR base;
+  int found_base;
+  unsigned int dummy;
+  gdb_byte *buffer;
+  CORE_ADDR marker;
+  int low_set;
+  CORE_ADDR low = 0;
+  CORE_ADDR high = 0;
+
+  found_base = cu_header->base_known;
+  base = cu_header->base_address;
+
+  if (offset >= dwarf2_per_objfile->ranges_size)
+    {
+      complaint (&symfile_complaints,
+		 _("Offset %d out of bounds for DW_AT_ranges attribute"),
+		 offset);
+      return 0;
+    }
+  buffer = dwarf2_per_objfile->ranges_buffer + offset;
+
+  /* Read in the largest possible address.  */
+  marker = read_address (obfd, buffer, cu, &dummy);
+  if ((marker & mask) == mask)
+    {
+      /* If we found the largest possible address, then
+	 read the base address.  */
+      base = read_address (obfd, buffer + addr_size, cu, &dummy);
+      buffer += 2 * addr_size;
+      offset += 2 * addr_size;
+      found_base = 1;
+    }
+
+  low_set = 0;
+
+  while (1)
+    {
+      CORE_ADDR range_beginning, range_end;
+
+      range_beginning = read_address (obfd, buffer, cu, &dummy);
+      buffer += addr_size;
+      range_end = read_address (obfd, buffer, cu, &dummy);
+      buffer += addr_size;
+      offset += 2 * addr_size;
+
+      /* An end of list marker is a pair of zero addresses.  */
+      if (range_beginning == 0 && range_end == 0)
+	/* Found the end of list entry.  */
+	break;
+
+      /* Each base address selection entry is a pair of 2 values.
+	 The first is the largest possible address, the second is
+	 the base address.  Check for a base address here.  */
+      if ((range_beginning & mask) == mask)
+	{
+	  /* If we found the largest possible address, then
+	     read the base address.  */
+	  base = read_address (obfd, buffer + addr_size, cu, &dummy);
+	  found_base = 1;
+	  continue;
+	}
+
+      if (!found_base)
+	{
+	  /* We have no valid base address for the ranges
+	     data.  */
+	  complaint (&symfile_complaints,
+		     _("Invalid .debug_ranges data (no base address)"));
+	  return 0;
+	}
+
+      range_beginning += base;
+      range_end += base;
+
+      /* FIXME: This is recording everything as a low-high
+	 segment of consecutive addresses.  We should have a
+	 data structure for discontiguous block ranges
+	 instead.  */
+      if (! low_set)
+	{
+	  low = range_beginning;
+	  high = range_end;
+	  low_set = 1;
+	}
+      else
+	{
+	  if (range_beginning < low)
+	    low = range_beginning;
+	  if (range_end > high)
+	    high = range_end;
+	}
+    }
+
+  if (! low_set)
+    /* If the first entry is an end-of-list marker, the range
+       describes an empty scope, i.e. no instructions.  */
+    return 0;
+
+  if (low_return)
+    *low_return = low;
+  if (high_return)
+    *high_return = high;
+  return 1;
+}
+
 /* Get low and high pc attributes from a die.  Return 1 if the attributes
    are present and valid, otherwise, return 0.  Return -1 if the range is
    discontinuous, i.e. derived from DW_AT_ranges information.  */
@@ -3082,10 +3200,7 @@ static int
 dwarf2_get_pc_bounds (struct die_info *die, CORE_ADDR *lowpc,
 		      CORE_ADDR *highpc, struct dwarf2_cu *cu)
 {
-  struct objfile *objfile = cu->objfile;
-  struct comp_unit_head *cu_header = &cu->header;
   struct attribute *attr;
-  bfd *obfd = objfile->obfd;
   CORE_ADDR low = 0;
   CORE_ADDR high = 0;
   int ret = 0;
@@ -3109,108 +3224,11 @@ dwarf2_get_pc_bounds (struct die_info *d
       attr = dwarf2_attr (die, DW_AT_ranges, cu);
       if (attr != NULL)
 	{
-	  unsigned int addr_size = cu_header->addr_size;
-	  CORE_ADDR mask = ~(~(CORE_ADDR)1 << (addr_size * 8 - 1));
 	  /* Value of the DW_AT_ranges attribute is the offset in the
 	     .debug_ranges section.  */
-	  unsigned int offset = DW_UNSND (attr);
-	  /* Base address selection entry.  */
-	  CORE_ADDR base;
-	  int found_base;
-	  unsigned int dummy;
-	  gdb_byte *buffer;
-	  CORE_ADDR marker;
-	  int low_set;
- 
-	  found_base = cu_header->base_known;
-	  base = cu_header->base_address;
-
-	  if (offset >= dwarf2_per_objfile->ranges_size)
-	    {
-	      complaint (&symfile_complaints,
-	                 _("Offset %d out of bounds for DW_AT_ranges attribute"),
-			 offset);
-	      return 0;
-	    }
-	  buffer = dwarf2_per_objfile->ranges_buffer + offset;
-
-	  /* Read in the largest possible address.  */
-	  marker = read_address (obfd, buffer, cu, &dummy);
-	  if ((marker & mask) == mask)
-	    {
-	      /* If we found the largest possible address, then
-		 read the base address.  */
-	      base = read_address (obfd, buffer + addr_size, cu, &dummy);
-	      buffer += 2 * addr_size;
-	      offset += 2 * addr_size;
-	      found_base = 1;
-	    }
-
-	  low_set = 0;
-
-	  while (1)
-	    {
-	      CORE_ADDR range_beginning, range_end;
-
-	      range_beginning = read_address (obfd, buffer, cu, &dummy);
-	      buffer += addr_size;
-	      range_end = read_address (obfd, buffer, cu, &dummy);
-	      buffer += addr_size;
-	      offset += 2 * addr_size;
-
-	      /* An end of list marker is a pair of zero addresses.  */
-	      if (range_beginning == 0 && range_end == 0)
-		/* Found the end of list entry.  */
-		break;
-
-	      /* Each base address selection entry is a pair of 2 values.
-		 The first is the largest possible address, the second is
-		 the base address.  Check for a base address here.  */
-	      if ((range_beginning & mask) == mask)
-		{
-		  /* If we found the largest possible address, then
-		     read the base address.  */
-		  base = read_address (obfd, buffer + addr_size, cu, &dummy);
-		  found_base = 1;
-		  continue;
-		}
-
-	      if (!found_base)
-		{
-		  /* We have no valid base address for the ranges
-		     data.  */
-		  complaint (&symfile_complaints,
-			     _("Invalid .debug_ranges data (no base address)"));
-		  return 0;
-		}
-
-	      range_beginning += base;
-	      range_end += base;
-
-	      /* FIXME: This is recording everything as a low-high
-		 segment of consecutive addresses.  We should have a
-		 data structure for discontiguous block ranges
-		 instead.  */
-	      if (! low_set)
-		{
-		  low = range_beginning;
-		  high = range_end;
-		  low_set = 1;
-		}
-	      else
-		{
-		  if (range_beginning < low)
-		    low = range_beginning;
-		  if (range_end > high)
-		    high = range_end;
-		}
-	    }
-
-	  if (! low_set)
-	    /* If the first entry is an end-of-list marker, the range
-	       describes an empty scope, i.e. no instructions.  */
+	  if (!dwarf2_ranges_read (DW_UNSND (attr), &low, &high, cu))
 	    return 0;
-
+	  /* Found discontinuous range of addresses.  */
 	  ret = -1;
 	}
     }
@@ -5571,6 +5589,11 @@ read_partial_die (struct partial_die_inf
 	  has_high_pc_attr = 1;
 	  part_die->highpc = DW_ADDR (&attr);
 	  break;
+	case DW_AT_ranges:
+	  if (dwarf2_ranges_read (DW_UNSND (&attr), &part_die->lowpc,
+				  &part_die->highpc, cu))
+	    has_low_pc_attr = has_high_pc_attr = 1;
+	  break;
 	case DW_AT_location:
           /* Support the .debug_loc offsets */
           if (attr_form_is_block (&attr))
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ranges.S	9 Oct 2007 15:03:10 -0000
@@ -0,0 +1,33 @@
+/*
+   Copyright 2007 Free Software Foundation, Inc.
+   
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+   
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+   
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+	.text
+
+	.section	.text._start, "ax", @progbits
+	.globl	_start
+	.func	_start
+_start:	call	func
+	.endfunc
+	.size	_start, . - _start
+
+	.section	.text.func, "ax", @progbits
+	.globl	func
+	.func	func
+func:	int3
+	nop
+	.endfunc
+	.size	func, . - func
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ranges.exp	9 Oct 2007 15:03:10 -0000
@@ -0,0 +1,82 @@
+# Copyright 2007 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Test DW_TAG_compile_unit with no children and with neither DW_AT_low_pc nor
+# DW_AT_high_pc but with DW_AT_ranges instead.  We created the hole there for
+# DW_AT_ranges by the linker script.
+
+# This test can only be run on targets which support DWARF-2 and use gas.
+# For now pick a sampling of likely targets.
+if {![istarget *-*-linux*]
+    && ![istarget *-*-gnu*]
+    && ![istarget *-*-elf*]
+    && ![istarget *-*-openbsd*]
+    && ![istarget arm-*-eabi*]
+    && ![istarget powerpc-*-eabi*]} {
+    verbose "Skipping i386/amd64 DW_AT_ranges test."
+    return 0  
+}
+if { ![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"] } then {
+    verbose "Skipping i386/amd64 DW_AT_ranges test."
+    return 0
+}
+
+set testfile "dw2-ranges"
+set srcfile ${testfile}.S
+set ldsfile ${testfile}.lds
+set binfile ${objdir}/${subdir}/${testfile}
+
+# Avoid `-lm' from `lib/ada.exp' as it would fail with out `-nostdlib'.
+# Provide BOARD for SET_BOARD_INFO.
+set board [target_info name]
+set_board_info mathlib ""
+
+if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug "additional_flags=-Wl,--script=${srcdir}/${subdir}/${ldsfile} -nostdlib"]] != "" } {
+    return -1
+}
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+# Former wrong output:
+# 	Program received signal SIGTRAP, Trace/breakpoint trap.
+# 	0x000000000000002b in func ()
+# 	(gdb) bt
+# 	#0  0x000000000000002b in func ()
+# 	#1  0x0000000000000029 in _start ()
+# 	(gdb) _
+# Correct output:
+# 	Program received signal SIGTRAP, Trace/breakpoint trap.
+# 	func () at dw2-ranges.S:14
+# 	14              nop
+# 	Current language:  auto; currently asm
+# 	(gdb) bt
+# 	#0  func () at dw2-ranges.S:14
+# 	#1  0x0000000000000029 in _start () at dw2-ranges.S:6
+# 	(gdb) _
+# The entry #1 is missing on i386.
+# 	"#0 +func \\(\\) at .*dw2-ranges.S:\[0-9\]+\r\n#1 .*in _start \\(\\) at .*dw2-ranges.S:\[0-9\]+"
+
+gdb_run_cmd
+set test "run"
+gdb_test_multiple "" "$test" {
+    -re "Program received signal SIGTRAP,.*$gdb_prompt $" {
+	pass $test
+    }
+}
+
+gdb_test "backtrace" "#0 +func \\(\\) at .*dw2-ranges.S:\[0-9\]+"
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ./gdb/testsuite/gdb.dwarf2/dw2-ranges.lds	9 Oct 2007 15:03:10 -0000
@@ -0,0 +1,25 @@
+/*
+   Copyright 2007 Free Software Foundation, Inc.
+   
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+   
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+   
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+SECTIONS
+{
+	.text._start : { *(.text._start) }
+	/* Create the hole.  */
+	. = . + 1;
+	.text.func : { *(.text.func) }
+}
+ENTRY(_start)

gdb-6.6-vdso-i386-on-amd64-warning.patch:

--- NEW FILE gdb-6.6-vdso-i386-on-amd64-warning.patch ---
Fix i386-on-x86_64 debugging giving the warning:
	warning: Lowest section in system-supplied DSO at 0xffffe000 is .hash at ffffe0b4

[ Backport for RH GDB-6.6. ]

--- gdb-6.6/gdb/symfile.c	2007-10-08 19:52:06.000000000 +0200
+++ gdb-6.6/gdb/symfile.c	2007-10-08 19:49:27.000000000 +0200
@@ -597,6 +597,37 @@ default_symfile_offsets (struct objfile 
   init_objfile_sect_indices (objfile);
 }
 
+/* Find lowest loadable section to be used as starting point for continguous
+   sections. FIXME!! won't work without call to find .text first, but this
+   assumes text is lowest section.  vDSO was seen for i386-on-amd64 processes
+   to have no `.text' as it has `.text.vsyscall', `.text.sigreturn' etc.
+   instead.  Execution of this function has been delayed till it is really
+   needed as it is broken for vDSOs, fortunately it is never needed on
+   GNU/Linux.  */
+
+static CORE_ADDR
+find_lower_offset (struct objfile *objfile)
+{
+  asection *lower_sect;
+
+  lower_sect = bfd_get_section_by_name (objfile->obfd, ".text");
+  if (lower_sect == NULL)
+    bfd_map_over_sections (objfile->obfd, find_lowest_section,
+			   &lower_sect);
+  if (lower_sect == NULL)
+    warning (_("no loadable sections found in added symbol-file %s"),
+	     objfile->name);
+  else
+    if ((bfd_get_section_flags (objfile->obfd, lower_sect) & SEC_CODE) == 0)
+      warning (_("Lowest section in %s is %s at %s"),
+	       objfile->name,
+	       bfd_section_name (objfile->obfd, lower_sect),
+	       paddr (bfd_section_vma (objfile->obfd, lower_sect)));
+  if (lower_sect != NULL)
+    return bfd_section_vma (objfile->obfd, lower_sect);
+  else
+    return 0;
+}
 
 /* Process a symbol file, as either the main file or as a dynamically
    loaded file.
@@ -696,32 +727,11 @@ syms_from_objfile (struct objfile *objfi
      happens for the PA64 port.  */
   if (/*!mainline &&*/ addrs && addrs->other[0].name)
     {
-      asection *lower_sect;
       asection *sect;
-      CORE_ADDR lower_offset;
+      CORE_ADDR lower_offset = 0;	/* Shut up the GCC warning.  */
+      int lower_offset_set = 0;
       int i;
 
-      /* Find lowest loadable section to be used as starting point for
-         continguous sections. FIXME!! won't work without call to find
-	 .text first, but this assumes text is lowest section. */
-      lower_sect = bfd_get_section_by_name (objfile->obfd, ".text");
-      if (lower_sect == NULL)
-	bfd_map_over_sections (objfile->obfd, find_lowest_section,
-			       &lower_sect);
-      if (lower_sect == NULL)
-	warning (_("no loadable sections found in added symbol-file %s"),
-		 objfile->name);
-      else
-	if ((bfd_get_section_flags (objfile->obfd, lower_sect) & SEC_CODE) == 0)
-	  warning (_("Lowest section in %s is %s at %s"),
-		   objfile->name,
-		   bfd_section_name (objfile->obfd, lower_sect),
-		   paddr (bfd_section_vma (objfile->obfd, lower_sect)));
-      if (lower_sect != NULL)
- 	lower_offset = bfd_section_vma (objfile->obfd, lower_sect);
-      else
- 	lower_offset = 0;
-
       /* Calculate offsets for the loadable sections.
  	 FIXME! Sections must be in order of increasing loadable section
  	 so that contiguous sections can use the lower-offset!!!
@@ -743,6 +753,7 @@ syms_from_objfile (struct objfile *objfi
                     addrs->other[i].addr
                       -= bfd_section_vma (objfile->obfd, sect);
                     lower_offset = addrs->other[i].addr;
+		    lower_offset_set = 1;
                     /* This is the index used by BFD. */
                     addrs->other[i].sectindex = sect->index ;
                   }
@@ -755,7 +766,17 @@ syms_from_objfile (struct objfile *objfi
                   }
               }
             else
-              addrs->other[i].addr = lower_offset;
+	      {
+		/* Delay finding LOWER_OFFSET only if it is needed.  Otherwise
+		   we would print a warning to detect a values never used.  */
+		if (!lower_offset_set)
+		  {
+		    lower_offset = find_lower_offset (objfile);
+		    lower_offset_set = 1;
+		  }
+
+		addrs->other[i].addr = lower_offset;
+	      }
           }
     }
 

gdb-6.6-buildid-locate.patch:

Index: gdb-6.6-buildid-locate.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/F-8/gdb-6.6-buildid-locate.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- gdb-6.6-buildid-locate.patch	25 Sep 2007 23:14:55 -0000	1.2
+++ gdb-6.6-buildid-locate.patch	10 Oct 2007 23:23:18 -0000	1.3
@@ -35,7 +35,7 @@
  
  
  #ifndef O_LARGEFILE
-@@ -253,6 +257,63 @@ add_to_thread_list (bfd *abfd, asection 
+@@ -253,6 +257,66 @@ add_to_thread_list (bfd *abfd, asection 
      inferior_ptid = pid_to_ptid (thread_id);	/* Yes, make it current */
  }
  
@@ -70,7 +70,9 @@
 +  if (exec_filename != NULL)
 +    exec_file_attach (exec_filename, from_tty);
 +  else
-+    warning (_("Missing the matching executable file: %s"), build_id_filename);
++    fprintf_unfiltered (gdb_stdlog,
++		     _("\nwarning: Missing the matching executable file: %s\n"),
++			build_id_filename);
 +  xfree (build_id_filename);
 +
 +  /* `.note.gnu.build-id' section exists even for files without a separate
@@ -86,8 +88,9 @@
 +      if (exec_filename != NULL)
 +	symbol_file_add_main (exec_filename, from_tty);
 +      if (symfile_objfile == NULL)
-+	warning (_("Missing the matching executable's debug info file: %s"),
-+		 build_id_filename);
++	fprintf_unfiltered (gdb_stdlog,
++	_("\nwarning: Missing the matching executable's debug info file: %s\n"),
++			    build_id_filename);
 +    }
 +  xfree (build_id_filename);
 +
@@ -132,7 +135,7 @@
 diff -u -rup gdb-6.6-orig/gdb/solib-svr4.c gdb-6.6/gdb/solib-svr4.c
 --- gdb-6.6-orig/gdb/solib-svr4.c	2007-08-28 15:31:19.000000000 +0200
 +++ gdb-6.6/gdb/solib-svr4.c	2007-08-28 15:34:02.000000000 +0200
-@@ -943,10 +943,34 @@ svr4_current_sos (void)
+@@ -943,10 +943,35 @@ svr4_current_sos (void)
  		}
                else
                  {
@@ -162,8 +165,9 @@
 +			  xfree (name);
 +			}
 +		      else
-+			warning (_("Missing the matching library file: %s"),
-+				 build_id_filename);
++			fprintf_unfiltered (gdb_stdlog,
++			_("\nwarning: Missing the matching library file: %s\n"),
++					    build_id_filename);
 +		      xfree (build_id_filename);
 +		      xfree (build_id);
 +		    }
@@ -728,7 +732,7 @@
        xfree (basename);
        xfree (dir);
        return xstrdup (debugfile);
-@@ -1384,11 +1795,19 @@ find_separate_debug_file (struct objfile
+@@ -1384,11 +1795,20 @@ find_separate_debug_file (struct objfile
  
    if (separate_debug_file_exists (debugfile, crc32, objfile->name))
      {
@@ -740,8 +744,9 @@
  
 +  if (build_id_filename != NULL)
 +    {
-+      warning (_("Missing the separate debug info file: %s"),
-+	       build_id_filename);
++      fprintf_unfiltered (gdb_stdlog,
++		     _("\nwarning: Missing the separate debug info file: %s\n"),
++			  build_id_filename);
 +      xfree (build_id_filename);
 +    }
 +


Index: gdb.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gdb/F-8/gdb.spec,v
retrieving revision 1.248
retrieving revision 1.249
diff -u -r1.248 -r1.249
--- gdb.spec	5 Oct 2007 15:00:27 -0000	1.248
+++ gdb.spec	10 Oct 2007 23:23:18 -0000	1.249
@@ -11,7 +11,7 @@
 Version: 6.6
 
 # The release always contains a leading reserved number, start it at 1.
-Release: 31%{?dist}
+Release: 32%{?dist}
 
 License: GPL
 Group: Development/Debuggers
@@ -374,9 +374,15 @@
 Patch273: gdb-6.6-buildid-verify.patch
 Patch274: gdb-6.6-buildid-locate.patch
 
-# Fixed the kernel VDSO loading (producing `no loadable sections found').
+# Fixed the kernel 8KB VDSO loading (producing `no loadable sections found').
 Patch276: gdb-6.6-bfd-vdso8k.patch
 
+# Fixed the kernel i386-on-x86_64 VDSO loading (producing `Lowest section in').
+Patch277: gdb-6.6-vdso-i386-on-amd64-warning.patch
+
+# Fix debug load for sparse assembler files (such as vDSO32 for i386-on-x86_64).
+Patch278: gdb-6.6-cu-ranges.patch
+
 BuildRequires: ncurses-devel glibc-devel gcc make gzip texinfo dejagnu gettext
 BuildRequires: flex bison sharutils expat-devel
 Requires: readline
@@ -533,6 +539,8 @@
 %patch273 -p1
 %patch274 -p1
 %patch276 -p1
+%patch277 -p1
+%patch278 -p1
 
 # Change the version that gets printed at GDB startup, so it is RedHat
 # specific.
@@ -689,6 +697,11 @@
 # don't include the files in include, they are part of binutils
 
 %changelog
+* Wed Oct 10 2007 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.6-32
+- Fix debug load for sparse assembler files (such as vDSO32 for i386-on-x86_64).
+- Fix a TUI visual corruption due to the build-id warnings (BZ 320061).
+- Fixed the kernel i386-on-x86_64 VDSO loading (producing `Lowest section in').
+
 * Fri Oct  5 2007 Jan Kratochvil <jan.kratochvil at redhat.com> - 6.6-31
 - Fix address changes of the ctors/dtors breakpoints w/multiple PCs (BZ 301701).
 - Delete an info doc file on `rpmbuild -bp' later rebuilt during `rpmbuild -bc'.




More information about the fedora-extras-commits mailing list