patches/gdb/6.3/690-debian_member-field-symtab.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun May 20 13:48:26 2007 +0000 (2007-05-20)
changeset 112 ea15433daba0
permissions -rw-r--r--
Ah! I finally have a progress bar that doesn't stall the build!
- pipe size in Linux is only 8*512=4096 bytes
- pipe size is not setable
- when the feeding process spits out data faster than the eating
process can read it, then the feeding process stalls after 4KiB
of data sent to the pipe
- for us, the progress bar would spawn a sub-shell every line,
and the sub-shell would in turn spawn a 'date' command.
Which was sloooww as hell, and would cause some kind of a
starvation: the pipe was full most of the time, and the
feeding process was stalled all this time.

Now, we use internal variables and a little hack based onan offset
to determine the elapsed time. Much faster this way, but still
CPU-intensive.
     1 Status: unsubmitted
     2 
     3 This patch was for Debian bug #239535.  It needs to be tested, and
     4 submitted.
     5 
     6 Index: gdb-6.3/gdb/valops.c
     7 ===================================================================
     8 --- gdb-6.3.orig/gdb/valops.c	2004-11-09 22:51:07.000000000 -0500
     9 +++ gdb-6.3/gdb/valops.c	2004-11-10 00:43:54.036837699 -0500
    10 @@ -2314,8 +2314,10 @@ check_field_in (struct type *type, const
    11  	return 1;
    12      }
    13  
    14 +  /* Check each baseclass.  Call check_typedef, which will follow typedefs
    15 +     and do opaque/stub type resolution.  */
    16    for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
    17 -    if (check_field_in (TYPE_BASECLASS (type, i), name))
    18 +    if (check_field_in (check_typedef (TYPE_BASECLASS (type, i)), name))
    19        return 1;
    20  
    21    return 0;
    22 Index: gdb-6.3/gdb/dwarf2read.c
    23 ===================================================================
    24 --- gdb-6.3.orig/gdb/dwarf2read.c	2004-10-15 20:41:00.000000000 -0400
    25 +++ gdb-6.3/gdb/dwarf2read.c	2004-11-10 00:46:21.970935829 -0500
    26 @@ -2099,8 +2099,8 @@ guess_structure_name (struct partial_die
    27  				    strlen (actual_class_name),
    28  				    &cu->comp_unit_obstack);
    29  		  xfree (actual_class_name);
    30 +		  break;
    31  		}
    32 -	      break;
    33  	    }
    34  
    35  	  child_pdi = child_pdi->die_sibling;