Re: Build failure due to block_abi.h

From: David Chisnall <theraven_at_FreeBSD.org>
Date: Fri, 4 Apr 2014 23:48:39 +0100
Hi Marcel,

This error is a warning for me with gcc 4.7.3 when I try.  With 4.2.1 in the tree, it appears to be silenced by something (or possibly we're using the native blocks code path with gcc and clang doesn't emit that warning in non-blocks mode).  We could pull out the structure definitions - this is what I've done in the GNUstep versions of these macros, which provide separate macros for declaring the type.  It will clutter the code a bit, but if it's not possible to silence the warnings with your compiler then I can make that change.

Unfortunately, the warning actually is spurious here - the structure really is expected to be only for the scope of the function, because any compiler that can actually generate those structure in a useful way will give the type a different internal name.  

I'll try to send you a patch to test tomorrow - in the meantime, removing the -Werror should make it build.  Unfortunately, gcc (especially 4.2) doesn't provide very fine-grained control over warnings and it doesn't seem to be possible (or, at least, not documented) to disable the ones that are part of their default set.  

David

On 4 Apr 2014, at 18:42, Marcel Moolenaar <marcel_at_xcllnt.net> wrote:

> David,
> 
> The definition of DECLARE_BLOCK seems to trip over GCC 4.2.1 here
> at Juniper. This is how we run the compiler:
> 
> /volume/fwtools/gcc/jnpr/4.2.1/amd64-juniper-junos.5/bin/amd64-juniper-junos-gcc  -O2 -pipe   -I/b/marcelm/fbsd-head/src/lib/libc/include -I/b/marcelm/fbsd-head/src/lib/libc/../../include -I/b/marcelm/fbsd-head/src/lib/libc/amd64 -DNLS  -D__DBINTERFACE_PRIVATE -I/b/marcelm/fbsd-head/src/lib/libc/../../contrib/gdtoa -I/b/marcelm/fbsd-head/src/lib/libc/../../contrib/libc-vis -DINET6 -I/b/marcelm/fbsd-head/obj/amd64/lib/libc -I/b/marcelm/fbsd-head/src/lib/libc/resolv -D_ACL_PRIVATE -DPOSIX_MISTAKE -I/b/marcelm/fbsd-head/src/lib/libc/../../contrib/jemalloc/include -I/b/marcelm/fbsd-head/src/lib/libc/../../contrib/tzcode/stdtime -I/b/marcelm/fbsd-head/src/lib/libc/stdtime  -I/b/marcelm/fbsd-head/src/lib/libc/locale -DBROKEN_DES -DPORTMAP -DDES_BUILTIN -I/b/marcelm/fbsd-head/src/lib/libc/rpc -DNS_CACHING -DSYMBOL_VERSIONING -D__ELF__  -Dunix  -D__unix  -D__unix__    -D__FreeBSD__=9  --sysroot /volume/sisyphus/occam/sysroot/projects_tp5/20131031.611483/amd64  -fno-builtin-printf   -g -nostdinc -isystem/b/marcelm/fbsd-head/obj/stage/amd64/usr/include -isystem/b/marcelm/fbsd-head/obj/stage/amd64/include  -std=gnu99  -Wsystem-headers -Werror -Wall -Wno-format-y2k -Wno-uninitialized -Wno-pointer-sign -I/b/marcelm/fbsd-head/src/lib/libutil -I/b/marcelm/fbsd-head/src/lib/msun/src -I/b/marcelm/fbsd-head/src/lib/msun/x86 -c /b/marcelm/fbsd-head/src/lib/libc/stdlib/atexit.c -o atexit.o
> whatever set of flags we use here at Juniper:
> 
> This is the error:
> 
> Building /b/marcelm/fbsd-head/obj/amd64/lib/libc/atexit.o
> cc1: warnings being treated as errors
> /b/marcelm/fbsd-head/src/lib/libc/stdlib/atexit.c:144: warning: anonymous struct declared inside parameter list
> /b/marcelm/fbsd-head/src/lib/libc/stdlib/atexit.c:144: warning: its scope is only this definition or declaration, which is probably not what you want
> *** Error code 1
> 
> This hurdle is a bit higher than the hurdles I normally run into
> when syncing with ^/head, so I could use your expertise.
> 
> We need to continue to be able to build the sources with compilers
> outside of the tree as much as possible and I haven't found a way
> yet (one I don't dislike to be precise) to get this blocks stuff
> to compile. It's a huge blocker right now.
> 
> Thanks,
> 
> -- 
> Marcel Moolenaar
> marcel_at_xcllnt.net
> 
> 
Received on Fri Apr 04 2014 - 20:48:49 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:48 UTC