[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Bug-gnubg] bad __attribute__ handling breaks w/newer standards, new
From: |
Russ Allbery |
Subject: |
Re: [Bug-gnubg] bad __attribute__ handling breaks w/newer standards, newer gcc, & glibc and causes infinite loop |
Date: |
Tue, 06 Oct 2015 13:00:50 -0700 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
Mike Frysinger <address@hidden> writes:
> we got a report about gnubg hanging on startup when built w/gcc-5:
> https://bugs.gentoo.org/551896
> but when built w/older versions (<=gcc-4.9), everything worked great.
> there seems to be a similar report here from a few months ago:
> https://lists.gnu.org/archive/html/bug-gnubg/2015-07/msg00011.html
> this is because of bad code in gnubg itself:
> http://cvs.savannah.gnu.org/viewvc/gnubg/gnubg/common.h?revision=1.31&view=markup
> #if !_GNU_SOURCE && !defined (__attribute__)
> /*! \brief GNU C specific attributes, e.g. unused
> * // */
> #define __attribute__(X)
> #endif
[...]
> (2) common.h should be changed from checking for _GNU_SOURCE to __GNUC__ since
> the attribute is tied to the GNU C compiler. or maybe test whether the
> syntax __attribute__ works regardless of other defines.
In case it helps, the pattern I use in all of my code, and which I've
never had trouble with, is:
/*
* __attribute__ is available in gcc 2.5 and later, but only with gcc 2.7
* could you use the __format__ form of the attributes, which is what we use
* (to avoid confusion with other macros).
*/
#ifndef __attribute__
# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
# define __attribute__(spec) /* empty */
# endif
#endif
This also works with the Intel compiler and with Clang, in my experience.
--
Russ Allbery (address@hidden) <http://www.eyrie.org/~eagle/>
- [Bug-gnubg] bad __attribute__ handling breaks w/newer standards, newer gcc, & glibc and causes infinite loop, Mike Frysinger, 2015/10/08
- Re: [Bug-gnubg] bad __attribute__ handling breaks w/newer standards, newer gcc, & glibc and causes infinite loop,
Russ Allbery <=
- Re: [Bug-gnubg] bad __attribute__ handling breaks w/newer standards, newer gcc, & glibc and causes infinite loop, Michael Petch, 2015/10/08
- Re: [Bug-gnubg] bad __attribute__ handling breaks w/newer standards, newer gcc, & glibc and causes infinite loop, Russ Allbery, 2015/10/08
- Re: [Bug-gnubg] bad __attribute__ handling breaks w/newer standards, newer gcc, & glibc and causes infinite loop, Philippe Michel, 2015/10/08
- Re: [Bug-gnubg] bad __attribute__ handling breaks w/newer standards, newer gcc, & glibc and causes infinite loop, Michael Petch, 2015/10/08
- Re: [Bug-gnubg] bad __attribute__ handling breaks w/newer standards, newer gcc, & glibc and causes infinite loop - FIX NEEDS TESTING, Michael Petch, 2015/10/08
- Re: [Bug-gnubg] bad __attribute__ handling breaks w/newer standards, newer gcc, & glibc and causes infinite loop - FIX NEEDS TESTING, Mike Frysinger, 2015/10/09