libiberty: Tweak the documentation of libiberty's xcrc32 function

In some places the xcrc32 documentation refers to GDB's own crc32
implementation, but GDB no longer has its own crc32 implementation.
It now uses libiberty's xcrc32 throughout.  So this patch removes
these references to GDB's now-nonexistent crc32 implementation.

Also, there appears to be a bug in the table-generation program embedded
within the documentation.  When the variable "int i" is >= 128, the
computation "i << 24" shifts a one bit into the sign bit (assuming a
32-bit int), which is UB.  To avoid this UB, I think it is sufficient to
make the induction variables i and j have type unsigned int.  This bug
seems latent, however.  I ran the program before and after this change
and the table output is the same.
This commit is contained in:
Patrick Palka 2015-12-28 22:00:14 +00:00 committed by Mike Frysinger
parent 13b356b2b5
commit 4bec0ef03e
2 changed files with 13 additions and 7 deletions

View File

@ -1,3 +1,11 @@
2015-12-28 Patrick Palka <ppalka@gcc.gnu.org>
* crc32.c: In the documentation, don't refer to GDB's
now-nonexistent crc32 implementation. In the table-generation
program embedded within the documentation, change the type of
the induction variables i and j from int to unsigned int, to
avoid undefined behavior.
2015-12-21 Nick Clifton <nickc@redhat.com>
PR 66827

View File

@ -33,15 +33,14 @@
#include "libiberty.h"
/* This table was generated by the following program. This matches
what gdb does.
/* This table was generated by the following program.
#include <stdio.h>
int
main ()
{
int i, j;
unsigned int i, j;
unsigned int c;
int table[256];
@ -146,10 +145,9 @@ starting value is @var{init}; this may be used to compute the CRC of
data split across multiple buffers by passing the return value of each
call as the @var{init} parameter of the next.
This is intended to match the CRC used by the @command{gdb} remote
protocol for the @samp{qCRC} command. In order to get the same
results as gdb for a block of data, you must pass the first CRC
parameter as @code{0xffffffff}.
This is used by the @command{gdb} remote protocol for the @samp{qCRC}
command. In order to get the same results as gdb for a block of data,
you must pass the first CRC parameter as @code{0xffffffff}.
This CRC can be specified as: