Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
__cxa_get_globals is not a member of abi #59
QNX 7.0 actually has a
In the QNX compiler
I fixed compilation by patching the
#if !defined(__FreeBSD__) && \ ( \ (defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) < 407) || \ defined(__OpenBSD__) || \ defined(_LIBCPPABI_VERSION) \ )
#if !defined(__FreeBSD__) && \ ( \ (defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) < 407) || \ defined(__OpenBSD__) || \ defined(__QNXNTO__) || \ defined(_LIBCPPABI_VERSION) \ )
I will test this a little bit more but until now this does the trick.
I'm not sure I understand. In the file you attached,
Try looking at the preprocessed output and track what headers are included. It is also possible that there is some sort of macro collision that causes
You can see full command lines used to build Boost if you add
What I found was that
For QNX SDP 7.0 there are by default two C++ libraries available (see docs) "GNU C++ library" (QNX abbr. name: gpp) and "LLVM C++ library" (QNX abbr. name: cxx) which is the default.
I did a text search for
This means only for the LLVM library boost needs to provide its own definition of
For the LLVM variant there is a
I will try to do a workaround to detect if the
The output of the preprocessed code shows that the
# 1 "./boost/config/compiler/gcc.hpp" 1 # 165 "./boost/config/compiler/gcc.hpp" # 1 "c:\\qnx700\\target\\qnx7\\usr\\include\\c++\\v1\\cstddef" 1 3 4 # 36 "c:\\qnx700\\target\\qnx7\\usr\\include\\c++\\v1\\cstddef" 3 4 # 1 "c:\\qnx700\\target\\qnx7\\usr\\include\\c++\\v1\\__config" 1 3 4 # 15 "c:\\qnx700\\target\\qnx7\\usr\\include\\c++\\v1\\__config" 3 4 # 16 "c:\\qnx700\\target\\qnx7\\usr\\include\\c++\\v1\\__config" 3 # 25 "c:\\qnx700\\target\\qnx7\\usr\\include\\c++\\v1\\__config" 3 # 1 "c:\\qnx700\\target\\qnx7\\usr\\include\\unistd.h" 1 3 4 # 27 "c:\\qnx700\\target\\qnx7\\usr\\include\\unistd.h" 3 4 # 1 "c:\\qnx700\\target\\qnx7\\usr\\include\\confname.h" 1 3 4 # 28 "c:\\qnx700\\target\\qnx7\\usr\\include\\unistd.h" 2 3 4
I just did a quick search and it gets included by all
The background for those checks is that only with the LLVM backend it is necessary to declare
Have a look at the patch file in the attachment:
I don't think checking for libc++ version is correct. As I said earlier, it is not tied to libc++abi, so the latter may get updated without the former and vice versa.
I will add an open check for
I tested the tentative fix with QNX SDP 6.5 (GNU C++, Dinkum C++), QNX SDP 7.0 (GNU C++, LLVM C++). All variants
All in all it worked.
If I may: The comment you put into the fix is not 100% correct.
As the different variants of the header files are not included in sequence or in any order at all.
I would change the comment you made in the fix to the following to clarify this:
The tested patch code I have been using is (including your fix and my modified comments):