Use libiberty's crc32 implementation in gdbserver
authorPatrick Palka <patrick@parcs.ath.cx>
Mon, 2 Nov 2015 18:21:44 +0000 (13:21 -0500)
committerPatrick Palka <patrick@parcs.ath.cx>
Mon, 28 Dec 2015 16:17:57 +0000 (11:17 -0500)
Tested on x86_64-pc-linux-gnu native-gdbserver, no new regressions.

gdb/gdbserver/ChangeLog:

* server.c (crc32_table): Delete.
(crc32): Use libiberty's xcrc32 function.

gdb/gdbserver/ChangeLog
gdb/gdbserver/server.c

index dd19262..cbc7763 100644 (file)
@@ -1,3 +1,8 @@
+2015-12-28  Patrick Palka  <patrick@parcs.ath.cx>
+
+       * server.c (crc32_table): Delete.
+       (crc32): Use libiberty's xcrc32 function.
+
 2015-12-22  Joel Brobecker  <brobecker@adacore.com>
 
        * lynx-low.c (lynx_delete_thread_callback): New function.
index b385afb..0e3ac4e 100644 (file)
@@ -1911,11 +1911,6 @@ handle_qxfer (char *own_buf, int packet_len, int *new_packet_len_p)
   return 0;
 }
 
-/* Table used by the crc32 function to calcuate the checksum.  */
-
-static unsigned int crc32_table[256] =
-{0, 0};
-
 /* Compute 32 bit CRC from inferior memory.
 
    On success, return 32 bit CRC.
@@ -1924,20 +1919,6 @@ static unsigned int crc32_table[256] =
 static unsigned long long
 crc32 (CORE_ADDR base, int len, unsigned int crc)
 {
-  if (!crc32_table[1])
-    {
-      /* Initialize the CRC table and the decoding table.  */
-      int i, j;
-      unsigned int c;
-
-      for (i = 0; i < 256; i++)
-       {
-         for (c = i << 24, j = 8; j > 0; --j)
-           c = c & 0x80000000 ? (c << 1) ^ 0x04c11db7 : (c << 1);
-         crc32_table[i] = c;
-       }
-    }
-
   while (len--)
     {
       unsigned char byte = 0;
@@ -1946,7 +1927,7 @@ crc32 (CORE_ADDR base, int len, unsigned int crc)
       if (read_inferior_memory (base, &byte, 1) != 0)
        return (unsigned long long) -1;
 
-      crc = (crc << 8) ^ crc32_table[((crc >> 24) ^ byte) & 255];
+      crc = xcrc32 (&byte, 1, crc);
       base++;
     }
   return (unsigned long long) crc;