Re: [Cppcms-users] FreeBSD 11+clang fails to build backtrace.cpp
Brought to you by:
artyom-beilis
From: Artyom B. <art...@gm...> - 2017-02-22 06:49:35
|
Ok thanks... I'll apply the patch Artyom On Sat, Feb 11, 2017 at 9:02 PM, Nazım Can Bedir <naz...@ne...> wrote: > Hi Artyom, > > This looks like related with closed bug "#78 FreeBSD+clang w/ c++11 fails to > build backtrace.cpp...". > > Operating system: > > $ uname -a > FreeBSD web1.bhyve.local 11.0-RELEASE-p1 FreeBSD 11.0-RELEASE-p1 #0 r306420: > Thu Sep 29 01:43:23 UTC 2016 > ro...@re...:/usr/obj/usr/src/sys/GENERIC amd64 > > Compiler: > > $ clang --version > FreeBSD clang version 3.8.0 (tags/RELEASE_380/final 262564) (based on LLVM > 3.8.0) > Target: x86_64-unknown-freebsd11.0 > Thread model: posix > InstalledDir: /usr/bin > > When trying to compile CppCMS on this system, compiler generates following > errors: > > $ make > [ 0%] Building CXX object > booster/CMakeFiles/booster.dir/lib/backtrace/src/backtrace.cpp.o > /home/nazim/cppcms/booster/lib/backtrace/src/backtrace.cpp:51:16: error: > functions that differ only in their return type cannot be overloaded > extern void * _Unwind_GetIP (void *); > ~~~~~~ ^ > /usr/include/c++/v1/unwind-itanium.h:92:22: note: previous declaration is > here > extern unsigned long _Unwind_GetIP (struct _Unwind_Context *); > ~~~~~~~~ ^ > /home/nazim/cppcms/booster/lib/backtrace/src/backtrace.cpp:80:48: error: no > matching function for call to '_Unwind_GetIP' > d->array[d->total++] = _Unwind_GetIP(context); > ^~~~~~~~~~~~~ > /usr/include/c++/v1/unwind-itanium.h:92:22: note: candidate function not > viable: cannot convert argument of incomplete type 'void *' to > 'struct _Unwind_Context *' > extern unsigned long _Unwind_GetIP (struct _Unwind_Context *); > ^ > 2 errors generated. > *** Error code 1 > > Stop. > make[2]: stopped in /usr/home/nazim/cppcms > *** Error code 1 > > Stop. > make[1]: stopped in /usr/home/nazim/cppcms > *** Error code 1 > > Stop. > make: stopped in /usr/home/nazim/cppcms/booster > > I already read the conversion on the bug #78. > /usr/include/c++/v1/unwind-itanium.h is (indirectly) included by > /usr/include/c++/v1/cxxabi.h. backtrace.cpp file includes cxxabi.h at the > line #26, but feature testing code in CMakeLists.txt doesn't have such > #include directive (which makes CMake to succeed the feature test, while the > actual compilation fails). > > But, if we add following code to the booster's CMakeLists.txt, then the > feature test fails and the compilation completes without error. > > check_cxx_source_compiles( > "#include <execinfo.h> > int main() { backtrace(0,0); }" > BOOSTER_HAVE_EXECINFO) > > check_cxx_source_compiles( > "#include <stdexcept> > #include <iostream> > #include <stdlib.h> > #include <string.h> > #include <sstream> > #include <typeinfo> > #include <new> > + > + #if defined(__GNUC__) > + #include <cxxabi.h> > + #endif > + > extern \"C\" { > extern void* _Unwind_GetIP (void *); > extern int _Unwind_Backtrace(int (*)(void *,void *),void *); > } > > int main() { _Unwind_Backtrace(0,0); _Unwind_GetIP(0); }" > BOOSTER_HAVE_UNWIND_BACKTRACE) > > > Check_cxx_source_compiles( > "#include <atomic.h> > > > I am also sending output of 'svn diff' as attachment, for anyone who may > experience same issue on the future. > > Regards, > Nazim Can. > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, SlashDot.org! http://sdm.link/slashdot > _______________________________________________ > Cppcms-users mailing list > Cpp...@li... > https://lists.sourceforge.net/lists/listinfo/cppcms-users > |