[PATCH] util.h: fix gcc version checking

Augie Fackler raf at durin42.com
Mon Sep 30 14:24:34 CDT 2013


On Mon, Sep 30, 2013 at 09:23:07AM -0700, Siddharth Agarwal wrote:
> On 09/30/2013 06:44 AM, Pierre-Yves David wrote:
> >On 09/19/2013 06:57 PM, Siddharth Agarwal wrote:
> >># HG changeset patch
> >># User Siddharth Agarwal<sid0 at fb.com>
> >># Date 1379609100 25200
> >>#      Thu Sep 19 09:45:00 2013 -0700
> >># Node ID a14b158920b990f6e65632767b59ed7cccc80858
> >># Parent  1b592791351d126d8af39f70bbc63a707a11a75f
> >>util.h: fix gcc version checking
> >>
> >>gcc doesn't have a predefined GCC_VERSION macro.
> >>
> >>diff --git a/mercurial/util.h b/mercurial/util.h
> >>--- a/mercurial/util.h
> >>+++ b/mercurial/util.h
> >>@@ -156,7 +156,7 @@
> >>  {
> >>      return _byteswap_ulong(*(uint32_t *)c);
> >>  }
> >>-#elif GCC_VERSION>= 403
> >>+#elif __GNUC__>  4 || (__GNUC__ == 4&& __GNUC_MINOR__>= 3)
> >>  static inline uint32_t getbe32(const char *c)
> >>  {
> >>      return __builtin_bswap32(*(uint32_t *)c);
> >>@@ -179,7 +179,7 @@
> >>      x = _byteswap_ulong(x);
> >>      *(uint32_t *)c = x;
> >>  }
> >>-#elif GCC_VERSION>= 403
> >>+#elif __GNUC__>  4 || (__GNUC__ == 4&& __GNUC_MINOR__>= 3)
> >>  static inline void putbe32(uint32_t x, char *c)
> >>  {
> >>      x = __builtin_bswap32(x);
> >>_______________________________________________
> >>Mercurial-devel mailing list
> >>Mercurial-devel at selenic.com
> >>http://selenic.com/mailman/listinfo/mercurial-devel
> >
> >This changeset turn my Fedora test machine crazy. Any test result in
> >corrupted changeset and running hg incoming ends in a segmentation fault.
>
> Oh, doh, __builtin_bswap32 will do the wrong thing on big endian systems.
>
> Two options:
> (1) Add more ifdefs for big-endian vs little.
> (2) Back this out.
>
> Given that there's no significant performance difference, I'm in favour of
> (2).

Can one of you two mail the backout with the explanation of why it's wrong?

> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list