Open william4code opened 2 years ago
Try adding nostdinc++
in sym++
script.
stdlib_cflags="-isystem ${!libcxx_var}/include/c++/v1 -nostdinc++ -nostdlib++"
Ref: https://releases.llvm.org/16.0.0/projects/libcxx/docs/UsingLibcxx.html#using-a-custom-built-libc
I am using symcc to analyze C++ programs with libcxx. I follow the document c++.txt in docs. Firstly, I compile and instrument libcxx using sym++ and install the instrumented libcxx to path: /home/user/programs/libcxx_install Then I use sym++ to compile my target c++ program main.cpp. But I get the following error. It seems that some headers files are missed.
By the way, I can compile and install libcxx without symcc. The uninstrumented libcxx works well on my computer. I can also use standard cxx library by setting SYMCC_REGULAR_LIBCXX=yes.
The errors are as follows.
=================================== In file included from main.cpp:1: In file included from /home/user/programs/libcxx_install/include/c++/v1/iostream:37: In file included from /home/user/programs/libcxx_install/include/c++/v1/ios:214: /home/user/programs/libcxx_install/include/c++/v1/iosfwd:189:14: error: use of undeclared identifier 'mbstate_t' typedef fpos streampos;
^
/home/user/programs/libcxx_install/include/c++/v1/iosfwd:190:14: error: use of undeclared identifier 'mbstate_t'
typedef fpos wstreampos;
^
/home/user/programs/libcxx_install/include/c++/v1/iosfwd:195:14: error: use of undeclared identifier 'mbstate_t'
typedef fpos u16streampos;
^
/home/user/programs/libcxx_install/include/c++/v1/iosfwd:196:14: error: use of undeclared identifier 'mbstate_t'
typedef fpos u32streampos;
^
In file included from main.cpp:1:
In file included from /home/user/programs/libcxx_install/include/c++/v1/iostream:37:
In file included from /home/user/programs/libcxx_install/include/c++/v1/ios:215:
In file included from /home/user/programs/libcxx_install/include/c++/v1/locale:14:
In file included from /home/user/programs/libcxx_install/include/c++/v1/string:506:
In file included from /home/user/programs/libcxx_install/include/c++/v1/string_view:175:
In file included from /home/user/programs/libcxx_install/include/c++/v1/string:57:
In file included from /home/user/programs/libcxx_install/include/c++/v1/algorithm:639:
In file included from /home/user/programs/libcxx_install/include/c++/v1/initializer_list:46:
/home/user/programs/libcxx_install/include/c++/v1/cstddef:49:9: error: no member named 'ptrdiff_t' in the global namespace
using ::ptrdiff_t;
~~^
/home/user/programs/libcxx_install/include/c++/v1/cstddef:50:9: error: no member named 'size_t' in the global namespace
using ::size_t;
~~^
/home/user/programs/libcxx_install/include/c++/v1/cstddef:53:9: error: no member named 'max_align_t' in the global namespace
using ::max_align_t;
~~^
In file included from main.cpp:1:
In file included from /home/user/programs/libcxx_install/include/c++/v1/iostream:37:
In file included from /home/user/programs/libcxx_install/include/c++/v1/ios:215:
In file included from /home/user/programs/libcxx_install/include/c++/v1/locale:14:
In file included from /home/user/programs/libcxx_install/include/c++/v1/string:506:
In file included from /home/user/programs/libcxx_install/include/c++/v1/string_view:175:
In file included from /home/user/programs/libcxx_install/include/c++/v1/string:57:
In file included from /home/user/programs/libcxx_install/include/c++/v1/algorithm:639:
/home/user/programs/libcxx_install/include/c++/v1/initializer_list:61:5: error: unknown type name 'size_t'
size_t size_;
^
/home/user/programs/libcxx_install/include/c++/v1/initializer_list:65:38: error: unknown type name 'size_t'
initializer_list(const _Ep* b, size_t __s) _NOEXCEPT
^
/home/user/programs/libcxx_install/include/c++/v1/initializer_list:73:13: error: unknown type name 'size_t'
typedef size_t size_type;
^
/home/user/programs/libcxx_install/include/c++/v1/initializer_list:84:5: error: unknown type name 'size_t'
size_t size() const _NOEXCEPT {return size_;}
^
In file included from main.cpp:1:
In file included from /home/user/programs/libcxx_install/include/c++/v1/iostream:37:
In file included from /home/user/programs/libcxx_install/include/c++/v1/ios:215:
In file included from /home/user/programs/libcxx_install/include/c++/v1/locale:14:
In file included from /home/user/programs/libcxx_install/include/c++/v1/string:506:
In file included from /home/user/programs/libcxx_install/include/c++/v1/string_view:175:
In file included from /home/user/programs/libcxx_install/include/c++/v1/__string:57:
In file included from /home/user/programs/libcxx_install/include/c++/v1/algorithm:640:
/home/user/programs/libcxx_install/include/c++/v1/type_traits:1553:32: error: use of undeclared identifier 'size_t'; did you mean 'sizeof'?
: public integral_constant<size_t, 0> {};
^
/home/user/programs/libcxx_install/include/c++/v1/type_traits:1553:38: error: expected expression
: public integral_constant<size_t, 0> {};
^
/home/user/programs/libcxx_install/include/c++/v1/type_traits:1555:32: error: use of undeclared identifier 'size_t'; did you mean 'sizeof'?
: public integral_constant<size_t, rank<_Tp>::value + 1> {};
^
/home/user/programs/libcxx_install/include/c++/v1/type_traits:1555:38: error: expected expression
: public integral_constant<size_t, rank<_Tp>::value + 1> {};
^
/home/user/programs/libcxx_install/include/c++/v1/type_traits:1555:51: error: expected class name
: public integral_constant<size_t, rank<_Tp>::value + 1> {};
^
/home/user/programs/libcxx_install/include/c++/v1/type_traits:1556:22: error: unknown type name 'size_t'
template <class _Tp, size_t _Np> struct _LIBCPP_TEMPLATE_VIS rank<_Tp[_Np]>
^
/home/user/programs/libcxx_install/include/c++/v1/type_traits:1557:32: error: use of undeclared identifier 'size_t'; did you mean 'sizeof'?
: public integral_constant<size_t, rank<_Tp>::value + 1> {};
^
/home/user/programs/libcxx_install/include/c++/v1/type_traits:1557:38: error: expected expression
: public integral_constant<size_t, rank<_Tp>::value + 1> {};
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
Anyone can help me?