On 07/30/2014 03:25 PM, Eric Blake wrote: > Compiling coreutils.git on cygwin with gcc 4.8.3, I got: > > lib/openat-die.c:34:1: error: function might be candidate for attribute > 'noreturn' [-Werror=suggest-attribute=noreturn] > openat_save_fail (int errnum) > ^ > > * modules/openat-die (Depends-on): Add stdnoreturn. > * lib/openat-die.c (openat_save_fail, openat_restore_fail): Mark > _Noreturn. > > Signed-off-by: Eric Blake <ebl...@redhat.com> > --- > > I noticed that the c-stack module does NOT depend on the stdnoreturn > modules, and that lib/c-stack.c does not include <stdnoreturn.h> but > DOES use _Noreturn. Therefore, I'm not 100% sure that this patch is > right, and if we need to touch up other modules that are using > _Noreturn improperly; vs. this patch being too complex and I could > just simplify it to be more like c-stack.c. I _think_ c-stack.c was > getting a guaranteed _Noreturn by virtue of (indirectly) getting > a definition from the stdlib module using snippet/_Noreturn.
Okay, after a bit more research, I see that _Noreturn is either a keyword (new enough C11 compiler) or faked by snippet/_Noreturn (where it can be pulled in explicitly in a module, but some modules are relying on it being present indirectly). Use of <stdnoreturn.h> merely provides 'noreturn' as a synonym, so it is overkill for my proposed patch. I'll try another version. Meanwhile, './gnulib-tool --test stdnoreturn' is failing on cygwin, so I'm trying to track down why. In file included from /usr/include/stdlib.h:11:0, from ../../gltests/test-stdnoreturn.c:23: ./../config.h:33:21: error: expected '(' before '__attribute__' # define _Noreturn __attribute__ ((__noreturn__)) ^ -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature