linux-bcache.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: David Mohr <david@mcbf.net>
To: Rolf Fokkens <rolf@rolffokkens.nl>
Cc: linux-bcache@vger.kernel.org
Subject: Re: bcache-tools fails to build with gcc 5.1.1
Date: Mon, 25 May 2015 23:28:10 -0600	[thread overview]
Message-ID: <cbc3c220c8e862fc15ebb2696c6ca9e9@de.mcbf.net> (raw)
In-Reply-To: <555F6F66.20209@rolffokkens.nl>

Debian also noticed this issue [1] and had a submission of a slightly 
simpler patch below. Since crc64 doesn't seem to be particularly 
performance sensitive, I think it's nicer to just remove the inline (and 
that's what I will include for now until one or the other is applied to 
git).

~David

[1]: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=777798#10

diff --git a/bcache.c b/bcache.c
index 8f37445..8b4b986 100644
--- a/bcache.c
+++ b/bcache.c
@@ -115,7 +115,7 @@ static const uint64_t crc_table[256] = {
  	0x9AFCE626CE85B507ULL
  };

-inline uint64_t crc64(const void *_data, size_t len)
+uint64_t crc64(const void *_data, size_t len)
  {
  	uint64_t crc = 0xFFFFFFFFFFFFFFFFULL;
  	const unsigned char *data = _data;


On 2015-05-22 12:03, Rolf Fokkens wrote:
> Hi all,
> 
> By upgrading to Fedora 22 I've become a gcc 5.1.1 user. gcc rightfully
> complains about the following during make:
> 
> [rolf.fokkens@home07 bcache-tools-1.0.8.orig]$ make
> cc -O2 -Wall -g `pkg-config --cflags uuid blkid`   -c -o bcache.o 
> bcache.c
> bcache.c:125:9: warning: ‘crc_table’ is static but used in inline
> function ‘crc64’ which is not static
>    crc = crc_table[i] ^ (crc << 8);
>          ^
> cc -O2 -Wall -g `pkg-config --cflags uuid blkid`    make-bcache.c
> bcache.o  `pkg-config --libs uuid blkid` -o make-bcache
> /tmp/cchVVBrJ.o: In function `write_sb':
> /tmp/bcache-tools-1.0.8.orig/make-bcache.c:277: undefined reference to 
> `crc64'
> collect2: error: ld returned 1 exit status
> <builtin>: recipe for target 'make-bcache' failed
> make: *** [make-bcache] Error 1
> [rolf.fokkens@home07 bcache-tools-1.0.8.orig]$
> 
> This fix is:
> 
> diff -ruN bcache-tools-1.0.8.orig/bcache.c bcache-tools-1.0.8/bcache.c
> --- bcache-tools-1.0.8.orig/bcache.c    2014-12-04 23:51:24.000000000 
> +0100
> +++ bcache-tools-1.0.8/bcache.c    2015-05-22 19:40:41.039355096 +0200
> @@ -26,7 +26,7 @@
>   * x^7 + x^4 + x + 1
>  */
> 
> -static const uint64_t crc_table[256] = {
> +const uint64_t crc_table[256] = {
>      0x0000000000000000ULL, 0x42F0E1EBA9EA3693ULL, 
> 0x85E1C3D753D46D26ULL,
>      0xC711223CFA3E5BB5ULL, 0x493366450E42ECDFULL, 
> 0x0BC387AEA7A8DA4CULL,
>      0xCCD2A5925D9681F9ULL, 0x8E224479F47CB76AULL, 
> 0x9266CC8A1C85D9BEULL,
> @@ -114,16 +114,3 @@
>      0x5DEDC41A34BBEEB2ULL, 0x1F1D25F19D51D821ULL, 
> 0xD80C07CD676F8394ULL,
>      0x9AFCE626CE85B507ULL
>  };
> -
> -inline uint64_t crc64(const void *_data, size_t len)
> -{
> -    uint64_t crc = 0xFFFFFFFFFFFFFFFFULL;
> -    const unsigned char *data = _data;
> -
> -    while (len--) {
> -        int i = ((int) (crc >> 56) ^ *data++) & 0xFF;
> -        crc = crc_table[i] ^ (crc << 8);
> -    }
> -
> -    return crc ^ 0xFFFFFFFFFFFFFFFFULL;
> -}
> diff -ruN bcache-tools-1.0.8.orig/bcache.h bcache-tools-1.0.8/bcache.h
> --- bcache-tools-1.0.8.orig/bcache.h    2014-12-04 23:51:24.000000000 
> +0100
> +++ bcache-tools-1.0.8/bcache.h    2015-05-22 19:40:34.924320569 +0200
> @@ -115,7 +115,20 @@
>  #define BDEV_STATE_DIRTY    2U
>  #define BDEV_STATE_STALE    3U
> 
> -uint64_t crc64(const void *_data, size_t len);
> +extern const uint64_t crc_table[];
> +
> +inline uint64_t crc64(const void *_data, size_t len)
> +{
> +        uint64_t crc = 0xFFFFFFFFFFFFFFFFULL;
> +        const unsigned char *data = _data;
> +
> +        while (len--) {
> +                int i = ((int) (crc >> 56) ^ *data++) & 0xFF;
> +                crc = crc_table[i] ^ (crc << 8);
> +        }
> +
> +        return crc ^ 0xFFFFFFFFFFFFFFFFULL;
> +}
> 
>  #define node(i, j)        ((void *) ((i)->d + (j)))
>  #define end(i)            node(i, (i)->keys)
> 
> This is also on github:
> 
> https://github.com/g2p/bcache-tools/pull/24
> 
> Cheers!
> 
> Rolf
> --
> To unsubscribe from this list: send the line "unsubscribe linux-bcache" 
> in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

      reply	other threads:[~2015-05-26  7:39 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-22 18:03 bcache-tools fails to build with gcc 5.1.1 Rolf Fokkens
2015-05-26  5:28 ` David Mohr [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cbc3c220c8e862fc15ebb2696c6ca9e9@de.mcbf.net \
    --to=david@mcbf.net \
    --cc=linux-bcache@vger.kernel.org \
    --cc=rolf@rolffokkens.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).