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 <mar...@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 -nos
 tdinc -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
> mar...@xcllnt.net
> 
> 

_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to