On 2009-12-22 12:40, Renato Botelho wrote: > 2009/12/22 Török Edwin <edwinto...@gmail.com>: > >> On 2009-12-21 16:57, Renato Botelho wrote: >> >>> 2009/12/21 Török Edwin <edwinto...@gmail.com>: >>> >>> >>>> Hi Renato, >>>> >>>> Thanks for the patch, what if you only wrap the include by #ifdef >>>> HAVE_UNISTD_H? >>>> >>>> Something like: >>>> #ifdef HAVE_UNISTD_H >>>> #include <unistd.h> >>>> #endif >>>> >>>> We have a similar bug for OS X >>>> https://wwws.clamav.net/bugzilla/show_bug.cgi?id=1776, which I haven't >>>> had time to look into yet. >>>> >>>> >>> FYI, I've attached this patch on bug 1776 asking someone to test it on OSX >>> >>> >>> >> Thanks, I applied the patch here: >> http://git.clamav.net/gitweb?p=clamav-devel.git;a=commit;h=ce0c204a7ebcd6075cd58daeb5a5c2909343556c >> > > Thank you. > > But there is a user saying he still has problems on FreeBSD 7.2, i can't > reproduce, maybe you can help me to identify what's happening. > > Attached is the user's buildlog. >
The problems is around here: checking build system type... i386-portbld-freebsd7.2 checking host system type... i386-portbld-freebsd7.2 checking target system type... i386-portbld-freebsd7.2 That should be i686-... ..... checking for supported C++ compiler version... ok (4.2.1) checking for supported OS... ok (i386-freebsd7.2) .... checking for GCC atomic builtins... no configure: WARNING: LLVM will be built thread-unsafe because atomic builtins are missing ... bytecode2llvm.cpp:63:2: error: #error "Multithreading support must be available to LLVM!" I can work around the missing atomics (by adding a mutex around the entire code), however I think its better if we find out why the atomics are not available. This is the test program: int main() { volatile unsigned long val = 1; __sync_synchronize(); __sync_val_compare_and_swap(&val, 1, 0); __sync_add_and_fetch(&val, 1); __sync_sub_and_fetch(&val, 1); return 0; } It builds fine with default settings for me: gcc test.c However it fails with -march=i386: gcc test.c -march=i386 /tmp/cc6dcRh7.o: In function `main': test.c:(.text+0x29): undefined reference to `__sync_val_compare_and_swap_4' collect2: ld returned 1 exit status But even building for 486 works: gcc test.c -march=i486 What does happen on user's system if he/she runs gcc test.c? Question is why is ClamAV/LLVM built for i386? It should build for i686.... Best regards, --Edwin _______________________________________________ http://lurker.clamav.net/list/clamav-devel.html Please submit your patches to our Bugzilla: http://bugs.clamav.net