* [RFC]: remove inconsistency in printcmd.c: print_scalar_formatted
@ 2003-12-12 20:36 Jeff Johnston
2003-12-12 22:17 ` Kevin Buettner
0 siblings, 1 reply; 20+ messages in thread
From: Jeff Johnston @ 2003-12-12 20:36 UTC (permalink / raw)
To: gdb-patches
[-- Attachment #1: Type: text/plain, Size: 1790 bytes --]
There's some code in print_scalar_formatted() I would like to remove.
It tests if the sizeof the type of the value being printed is greater
than the sizeof of LONGEST and if so, it may attempt to use
extract_unsigned_integer(). If that fails, it prints out the value in hex.
There a number of problems with this. First and foremost is the fact
that it is comparing the sizeof with the host's LONGEST type, not the
target. The second problem is that extract_unsigned_integer() does the
same size test and returns failure so the call is pointless. The third
problem is that this code creates an inconsistency in how doubles/floats
are treated in comparison to long double. All three of these types
are capable of storing a value greater than that which can be contained
in a LONGEST. At present, floats and possibly doubles will pass the
size test and end up calling unpack_long(). True long double doesn't
pass the test and ends up printing in hex. This problem causes a number
of new errors on ia64 with the latest changes to structs.exp. The new
testcase uses p/c to print out various types and is not ready for the
hex version of the long double value being printed out.
To remedy the problem, I have removed the code. I don't think it is
particularly helpful. I think if the user asks for an integral format,
then they should be prepared to take what that choice entails when
printing a float input.
With this change, the new failures for the ia64 testsuite go away (no
regressions).
Comments?
-- Jeff J.
2003-12-12 Jeff Johnston <jjohnstn@redhat.com>
* printcmd.c (print_scalar_formatted): Do not check for sizeof
type being greater than sizeof of host's LONGEST. Always use
unpack_long() unless format 'f' chosen.
[-- Attachment #2: printcmd.patch --]
[-- Type: text/plain, Size: 1712 bytes --]
Index: printcmd.c
===================================================================
RCS file: /cvs/src/src/gdb/printcmd.c,v
retrieving revision 1.69
diff -u -p -r1.69 printcmd.c
--- printcmd.c 21 Sep 2003 01:26:45 -0000 1.69
+++ printcmd.c 12 Dec 2003 20:16:16 -0000
@@ -346,44 +346,7 @@ print_scalar_formatted (void *valaddr, s
LONGEST val_long;
unsigned int len = TYPE_LENGTH (type);
- if (len > sizeof (LONGEST)
- && (format == 't'
- || format == 'c'
- || format == 'o'
- || format == 'u'
- || format == 'd'
- || format == 'x'))
- {
- if (!TYPE_UNSIGNED (type)
- || !extract_long_unsigned_integer (valaddr, len, &val_long))
- {
- /* We can't print it normally, but we can print it in hex.
- Printing it in the wrong radix is more useful than saying
- "use /x, you dummy". */
- /* FIXME: we could also do octal or binary if that was the
- desired format. */
- /* FIXME: we should be using the size field to give us a
- minimum field width to print. */
-
- if (format == 'o')
- print_octal_chars (stream, valaddr, len);
- else if (format == 'd')
- print_decimal_chars (stream, valaddr, len);
- else if (format == 't')
- print_binary_chars (stream, valaddr, len);
- else
- /* replace with call to print_hex_chars? Looks
- like val_print_type_code_int is redoing
- work. - edie */
-
- val_print_type_code_int (type, valaddr, stream);
-
- return;
- }
-
- /* If we get here, extract_long_unsigned_integer set val_long. */
- }
- else if (format != 'f')
+ if (format != 'f')
val_long = unpack_long (type, valaddr);
/* If the value is a pointer, and pointers and addresses are not the
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [RFC]: remove inconsistency in printcmd.c: print_scalar_formatted
2003-12-12 20:36 [RFC]: remove inconsistency in printcmd.c: print_scalar_formatted Jeff Johnston
@ 2003-12-12 22:17 ` Kevin Buettner
2003-12-12 23:05 ` Daniel Jacobowitz
2003-12-13 0:55 ` J. Johnston
0 siblings, 2 replies; 20+ messages in thread
From: Kevin Buettner @ 2003-12-12 22:17 UTC (permalink / raw)
To: Jeff Johnston, gdb-patches
On Dec 12, 3:36pm, Jeff Johnston wrote:
> There's some code in print_scalar_formatted() I would like to remove.
> It tests if the sizeof the type of the value being printed is greater
> than the sizeof of LONGEST and if so, it may attempt to use
> extract_unsigned_integer(). If that fails, it prints out the value in hex.
>
> There a number of problems with this. First and foremost is the fact
> that it is comparing the sizeof with the host's LONGEST type, not the
> target.
I think this is (sort of) okay. The assumption that's being made is that
the space needed to hold the bits on the target will be the same as that
on the host. I think gdb has serious problems on host/target combinations
where this is untrue.
> The second problem is that extract_unsigned_integer() does the
> same size test and returns failure so the call is pointless.
You mean extract_long_unsigned_integer(), right? When I studied it
just now, the call didn't appear to be pointless. It looks to me
like the code you're deleting is intended to handle the case where
the space needed by a LONGEST isn't large enough to hold the target's
type.
> The third
> problem is that this code creates an inconsistency in how doubles/floats
> are treated in comparison to long double. All three of these types
> are capable of storing a value greater than that which can be contained
> in a LONGEST. At present, floats and possibly doubles will pass the
> size test and end up calling unpack_long(). True long double doesn't
> pass the test and ends up printing in hex. This problem causes a number
> of new errors on ia64 with the latest changes to structs.exp. The new
> testcase uses p/c to print out various types and is not ready for the
> hex version of the long double value being printed out.
I think this is the real problem. The extract_long_unsigned_integer()
call attempts to fetch the bits from the type with no conversion
(other than leading zero removal if the type is overlong), but, if
I'm not mistaken, unpack_long() attempts to do a type conversion
and these two approaches to fetching the data definitely yield different
kinds of results.
> To remedy the problem, I have removed the code. I don't think it is
> particularly helpful. I think if the user asks for an integral format,
> then they should be prepared to take what that choice entails when
> printing a float input.
I think you're right.
Something that I've wanted from time to time is a way to print the
bits comprising a value as some other type. E.g, if I have a float,
I'd like to be be able to print the bits that comprise the float as an
int (or vice versa). At first, I thought that was the intent of
print_scalar_formatted(), but I see now that it's not. If the value
is stored in memory, you can do it with the appropriate cast, e.g,
if ``val'' is of type float, you can do ``print *(int *)&val'', but
AFAIK, you can't do this for values stored in registers or convenience
variables. If we had such a mechanism, then I think we'd need some
code similar to the chunk that you're deleting.
Kevin
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [RFC]: remove inconsistency in printcmd.c: print_scalar_formatted
2003-12-12 22:17 ` Kevin Buettner
@ 2003-12-12 23:05 ` Daniel Jacobowitz
2003-12-13 0:55 ` J. Johnston
1 sibling, 0 replies; 20+ messages in thread
From: Daniel Jacobowitz @ 2003-12-12 23:05 UTC (permalink / raw)
To: Kevin Buettner; +Cc: Jeff Johnston, gdb-patches
On Fri, Dec 12, 2003 at 03:17:04PM -0700, Kevin Buettner wrote:
> Something that I've wanted from time to time is a way to print the
> bits comprising a value as some other type. E.g, if I have a float,
> I'd like to be be able to print the bits that comprise the float as an
> int (or vice versa). At first, I thought that was the intent of
> print_scalar_formatted(), but I see now that it's not. If the value
> is stored in memory, you can do it with the appropriate cast, e.g,
> if ``val'' is of type float, you can do ``print *(int *)&val'', but
> AFAIK, you can't do this for values stored in registers or convenience
> variables. If we had such a mechanism, then I think we'd need some
> code similar to the chunk that you're deleting.
Personally, I've always thought that this is a more natural
interpretation of print/x on a floating point value. Yes, I realize
it's not what GDB has ever done - I don't know what other people think
about this, or whether it would be a useful change, but since we only
support printing floating point numbers in base 10 it seems more useful
to dump the bit pattern rather than round to nearest integer.
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [RFC]: remove inconsistency in printcmd.c: print_scalar_formatted
2003-12-12 22:17 ` Kevin Buettner
2003-12-12 23:05 ` Daniel Jacobowitz
@ 2003-12-13 0:55 ` J. Johnston
2004-01-19 22:23 ` J. Johnston
1 sibling, 1 reply; 20+ messages in thread
From: J. Johnston @ 2003-12-13 0:55 UTC (permalink / raw)
To: Kevin Buettner; +Cc: gdb-patches
Kevin Buettner wrote:
> On Dec 12, 3:36pm, Jeff Johnston wrote:
>
>
>>There's some code in print_scalar_formatted() I would like to remove.
>>It tests if the sizeof the type of the value being printed is greater
>>than the sizeof of LONGEST and if so, it may attempt to use
>>extract_unsigned_integer(). If that fails, it prints out the value in hex.
>>
>>There a number of problems with this. First and foremost is the fact
>>that it is comparing the sizeof with the host's LONGEST type, not the
>>target.
>
>
> I think this is (sort of) okay. The assumption that's being made is that
> the space needed to hold the bits on the target will be the same as that
> on the host. I think gdb has serious problems on host/target combinations
> where this is untrue.
>
>
>>The second problem is that extract_unsigned_integer() does the
>>same size test and returns failure so the call is pointless.
>
>
> You mean extract_long_unsigned_integer(), right? When I studied it
> just now, the call didn't appear to be pointless. It looks to me
> like the code you're deleting is intended to handle the case where
> the space needed by a LONGEST isn't large enough to hold the target's
> type.
>
Yes, sorry about the name typo. The extract_long_unsigned_integer() function
ends up testing the type_size - leading zeroes vs the sizeof(LONGEST). For most
floats this will fail because of the biased exponent so it returns false.
if (len <= (int) sizeof (LONGEST))
{
*pval = (LONGEST) extract_unsigned_integer (first_addr,
sizeof (LONGEST));
return 1;
}
return 0;
}
>
>>The third
>>problem is that this code creates an inconsistency in how doubles/floats
>>are treated in comparison to long double. All three of these types
>>are capable of storing a value greater than that which can be contained
>>in a LONGEST. At present, floats and possibly doubles will pass the
>>size test and end up calling unpack_long(). True long double doesn't
>>pass the test and ends up printing in hex. This problem causes a number
>>of new errors on ia64 with the latest changes to structs.exp. The new
>>testcase uses p/c to print out various types and is not ready for the
>>hex version of the long double value being printed out.
>
>
> I think this is the real problem. The extract_long_unsigned_integer()
> call attempts to fetch the bits from the type with no conversion
> (other than leading zero removal if the type is overlong), but, if
> I'm not mistaken, unpack_long() attempts to do a type conversion
> and these two approaches to fetching the data definitely yield different
> kinds of results.
>
>
>>To remedy the problem, I have removed the code. I don't think it is
>>particularly helpful. I think if the user asks for an integral format,
>>then they should be prepared to take what that choice entails when
>>printing a float input.
>
>
> I think you're right.
>
> Something that I've wanted from time to time is a way to print the
> bits comprising a value as some other type. E.g, if I have a float,
> I'd like to be be able to print the bits that comprise the float as an
> int (or vice versa). At first, I thought that was the intent of
> print_scalar_formatted(), but I see now that it's not. If the value
> is stored in memory, you can do it with the appropriate cast, e.g,
> if ``val'' is of type float, you can do ``print *(int *)&val'', but
> AFAIK, you can't do this for values stored in registers or convenience
> variables. If we had such a mechanism, then I think we'd need some
> code similar to the chunk that you're deleting.
>
I suppose new format specifiers could always be added in the future to do just
what you want.
-- Jeff J.
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [RFC]: remove inconsistency in printcmd.c: print_scalar_formatted
2003-12-13 0:55 ` J. Johnston
@ 2004-01-19 22:23 ` J. Johnston
2004-01-19 22:57 ` Andrew Cagney
0 siblings, 1 reply; 20+ messages in thread
From: J. Johnston @ 2004-01-19 22:23 UTC (permalink / raw)
To: J. Johnston; +Cc: Kevin Buettner, gdb-patches, drow
Ping. Could we continue discussing this topic and come to some form of
resolution? The new additional ia64 test failures are annoying.
-- Jeff J.
J. Johnston wrote:
> Kevin Buettner wrote:
>
>> On Dec 12, 3:36pm, Jeff Johnston wrote:
>>
>>
>>> There's some code in print_scalar_formatted() I would like to
>>> remove. It tests if the sizeof the type of the value being printed
>>> is greater than the sizeof of LONGEST and if so, it may attempt to
>>> use extract_unsigned_integer(). If that fails, it prints out the
>>> value in hex.
>>>
>>> There a number of problems with this. First and foremost is the fact
>>> that it is comparing the sizeof with the host's LONGEST type, not the
>>> target.
>>
>>
>>
>> I think this is (sort of) okay. The assumption that's being made is that
>> the space needed to hold the bits on the target will be the same as that
>> on the host. I think gdb has serious problems on host/target
>> combinations
>> where this is untrue.
>>
>>
>>> The second problem is that extract_unsigned_integer() does the same
>>> size test and returns failure so the call is pointless.
>>
>>
>>
>> You mean extract_long_unsigned_integer(), right? When I studied it
>> just now, the call didn't appear to be pointless. It looks to me
>> like the code you're deleting is intended to handle the case where
>> the space needed by a LONGEST isn't large enough to hold the target's
>> type.
>>
>
> Yes, sorry about the name typo. The extract_long_unsigned_integer()
> function ends up testing the type_size - leading zeroes vs the
> sizeof(LONGEST). For most floats this will fail because of the biased
> exponent so it returns false.
>
> if (len <= (int) sizeof (LONGEST))
> {
> *pval = (LONGEST) extract_unsigned_integer (first_addr,
> sizeof (LONGEST));
> return 1;
> }
>
> return 0;
> }
>
>>
>>> The third problem is that this code creates an inconsistency in how
>>> doubles/floats are treated in comparison to long double. All three
>>> of these types are capable of storing a value greater than that
>>> which can be contained in a LONGEST. At present, floats and possibly
>>> doubles will pass the size test and end up calling unpack_long().
>>> True long double doesn't pass the test and ends up printing in hex.
>>> This problem causes a number of new errors on ia64 with the latest
>>> changes to structs.exp. The new testcase uses p/c to print out
>>> various types and is not ready for the hex version of the long double
>>> value being printed out.
>>
>>
>>
>> I think this is the real problem. The extract_long_unsigned_integer()
>> call attempts to fetch the bits from the type with no conversion
>> (other than leading zero removal if the type is overlong), but, if
>> I'm not mistaken, unpack_long() attempts to do a type conversion
>> and these two approaches to fetching the data definitely yield different
>> kinds of results.
>>
>>
>>> To remedy the problem, I have removed the code. I don't think it is
>>> particularly helpful. I think if the user asks for an integral
>>> format, then they should be prepared to take what that choice entails
>>> when printing a float input.
>>
>>
>>
>> I think you're right.
>>
>> Something that I've wanted from time to time is a way to print the
>> bits comprising a value as some other type. E.g, if I have a float,
>> I'd like to be be able to print the bits that comprise the float as an
>> int (or vice versa). At first, I thought that was the intent of
>> print_scalar_formatted(), but I see now that it's not. If the value
>> is stored in memory, you can do it with the appropriate cast, e.g,
>> if ``val'' is of type float, you can do ``print *(int *)&val'', but
>> AFAIK, you can't do this for values stored in registers or convenience
>> variables. If we had such a mechanism, then I think we'd need some
>> code similar to the chunk that you're deleting.
>>
>
> I suppose new format specifiers could always be added in the future to
> do just what you want.
>
> -- Jeff J.
>
>
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [RFC]: remove inconsistency in printcmd.c: print_scalar_formatted
2004-01-19 22:23 ` J. Johnston
@ 2004-01-19 22:57 ` Andrew Cagney
2004-01-19 23:18 ` Daniel Jacobowitz
0 siblings, 1 reply; 20+ messages in thread
From: Andrew Cagney @ 2004-01-19 22:57 UTC (permalink / raw)
To: J. Johnston; +Cc: Kevin Buettner, gdb-patches, drow
> Ping. Could we continue discussing this topic and come to some form of resolution? The new additional ia64 test failures are annoying.
I thought there was basic agreement with your change (It sux less then
the current behavior :-). Yes, change it. That way, behavior such as:
(gdb) print/x 1.0
will at least be more consistent.
Andrew
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [RFC]: remove inconsistency in printcmd.c: print_scalar_formatted
2004-01-19 22:57 ` Andrew Cagney
@ 2004-01-19 23:18 ` Daniel Jacobowitz
2004-01-19 23:27 ` Kevin Buettner
2004-01-20 0:41 ` Andrew Cagney
0 siblings, 2 replies; 20+ messages in thread
From: Daniel Jacobowitz @ 2004-01-19 23:18 UTC (permalink / raw)
To: gdb-patches
On Mon, Jan 19, 2004 at 05:57:04PM -0500, Andrew Cagney wrote:
> >Ping. Could we continue discussing this topic and come to some form of
> >resolution? The new additional ia64 test failures are annoying.
>
> I thought there was basic agreement with your change (It sux less then
> the current behavior :-). Yes, change it. That way, behavior such as:
> (gdb) print/x 1.0
> will at least be more consistent.
Yeah, I agree, and re-reading Kevin's message I don't think he objects.
How do you all feel about a more sweeping change instead:
(gdb) set $doublevar = 2.0
(gdb) print doublevar
$1 = 2.0
(gdb) print (int) doublevar
$1 = 2
(gdb) print/x (int) doublevar
$1 = 2
(gdb) print/x doublevar
$1 = 0xc000000000000000
(gdb) print/i doublevar
???? [no preference really]
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [RFC]: remove inconsistency in printcmd.c: print_scalar_formatted
2004-01-19 23:18 ` Daniel Jacobowitz
@ 2004-01-19 23:27 ` Kevin Buettner
2004-01-20 0:41 ` Andrew Cagney
1 sibling, 0 replies; 20+ messages in thread
From: Kevin Buettner @ 2004-01-19 23:27 UTC (permalink / raw)
To: gdb-patches
On Mon, 19 Jan 2004 18:18:53 -0500
Daniel Jacobowitz <drow@mvista.com> wrote:
> On Mon, Jan 19, 2004 at 05:57:04PM -0500, Andrew Cagney wrote:
> > >Ping. Could we continue discussing this topic and come to some form of
> > >resolution? The new additional ia64 test failures are annoying.
> >
> > I thought there was basic agreement with your change (It sux less then
> > the current behavior :-). Yes, change it. That way, behavior such as:
> > (gdb) print/x 1.0
> > will at least be more consistent.
>
> Yeah, I agree, and re-reading Kevin's message I don't think he objects.
Right, no objection from me, but...
> How do you all feel about a more sweeping change instead:
> (gdb) set $doublevar = 2.0
> (gdb) print doublevar
> $1 = 2.0
> (gdb) print (int) doublevar
> $1 = 2
> (gdb) print/x (int) doublevar
> $1 = 2
> (gdb) print/x doublevar
> $1 = 0xc000000000000000
...I like this better.
Kevin
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [RFC]: remove inconsistency in printcmd.c: print_scalar_formatted
2004-01-19 23:18 ` Daniel Jacobowitz
2004-01-19 23:27 ` Kevin Buettner
@ 2004-01-20 0:41 ` Andrew Cagney
2004-01-20 1:22 ` Daniel Jacobowitz
1 sibling, 1 reply; 20+ messages in thread
From: Andrew Cagney @ 2004-01-20 0:41 UTC (permalink / raw)
To: Daniel Jacobowitz; +Cc: gdb-patches
> On Mon, Jan 19, 2004 at 05:57:04PM -0500, Andrew Cagney wrote:
>
>> >Ping. Could we continue discussing this topic and come to some form of
>> >resolution? The new additional ia64 test failures are annoying.
>
>>
>> I thought there was basic agreement with your change (It sux less then
>> the current behavior :-). Yes, change it. That way, behavior such as:
>> (gdb) print/x 1.0
>> will at least be more consistent.
>
>
> Yeah, I agree, and re-reading Kevin's message I don't think he objects.
>
> How do you all feel about a more sweeping change instead:
> (gdb) set $doublevar = 2.0
> (gdb) print doublevar
> $1 = 2.0
> (gdb) print (int) doublevar
> $1 = 2
> (gdb) print/x (int) doublevar
> $1 = 2
> (gdb) print/x doublevar
> $1 = 0xc000000000000000
> (gdb) print/i doublevar
> ???? [no preference really]
No. That would be wrong. print/<format> prints the value (not the
implementation) using the specified format. Being able to examine the
underlying implementation in various formats is more of an "examine"
command.
Andrew
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [RFC]: remove inconsistency in printcmd.c: print_scalar_formatted
2004-01-20 0:41 ` Andrew Cagney
@ 2004-01-20 1:22 ` Daniel Jacobowitz
[not found] ` <400C8CC0.3040706@gnu.org>
0 siblings, 1 reply; 20+ messages in thread
From: Daniel Jacobowitz @ 2004-01-20 1:22 UTC (permalink / raw)
To: gdb-patches
On Mon, Jan 19, 2004 at 07:41:44PM -0500, Andrew Cagney wrote:
> >On Mon, Jan 19, 2004 at 05:57:04PM -0500, Andrew Cagney wrote:
> >
> >>>Ping. Could we continue discussing this topic and come to some form of
> >>>resolution? The new additional ia64 test failures are annoying.
> >
> >>
> >>I thought there was basic agreement with your change (It sux less then
> >>the current behavior :-). Yes, change it. That way, behavior such as:
> >> (gdb) print/x 1.0
> >>will at least be more consistent.
> >
> >
> >Yeah, I agree, and re-reading Kevin's message I don't think he objects.
> >
> >How do you all feel about a more sweeping change instead:
> >(gdb) set $doublevar = 2.0
> >(gdb) print doublevar
> >$1 = 2.0
> >(gdb) print (int) doublevar
> >$1 = 2
> >(gdb) print/x (int) doublevar
> >$1 = 2
> >(gdb) print/x doublevar
> >$1 = 0xc000000000000000
> >(gdb) print/i doublevar
> >???? [no preference really]
>
> No. That would be wrong. print/<format> prints the value (not the
> implementation) using the specified format. Being able to examine the
> underlying implementation in various formats is more of an "examine"
> command.
Andrew, please explain to us all how you can respond to "I think this
would be a better, different-than-the-current behavior" with "No, that
would be wrong".
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2004-02-19 22:53 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-12-12 20:36 [RFC]: remove inconsistency in printcmd.c: print_scalar_formatted Jeff Johnston
2003-12-12 22:17 ` Kevin Buettner
2003-12-12 23:05 ` Daniel Jacobowitz
2003-12-13 0:55 ` J. Johnston
2004-01-19 22:23 ` J. Johnston
2004-01-19 22:57 ` Andrew Cagney
2004-01-19 23:18 ` Daniel Jacobowitz
2004-01-19 23:27 ` Kevin Buettner
2004-01-20 0:41 ` Andrew Cagney
2004-01-20 1:22 ` Daniel Jacobowitz
[not found] ` <400C8CC0.3040706@gnu.org>
2004-01-20 5:48 ` Daniel Jacobowitz
2004-01-20 6:55 ` Eli Zaretskii
2004-01-20 14:52 ` Daniel Jacobowitz
2004-01-20 19:15 ` Eli Zaretskii
2004-01-20 19:33 ` Daniel Jacobowitz
2004-01-20 20:32 ` Eli Zaretskii
2004-01-20 16:50 ` Andrew Cagney
2004-01-20 19:10 ` Eli Zaretskii
2004-01-20 21:29 ` Andrew Cagney
2004-02-19 22:53 ` Jeff Johnston
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox