GrammaTech / gtirb

Intermediate Representation for Binary analysis and transformation
https://grammatech.github.io/gtirb/
Other
305 stars 36 forks source link

Unable to compile gtrib due to missing #include #61

Open fsgmhoward opened 1 year ago

fsgmhoward commented 1 year ago

Hi,

I tried to compile the latest commit (40c9b835c2982d57f6c33f506fe87f660c7f93db) and it fails. The compiler points out that AuxData.hpp used std::set without including it.

Error:

In file included from /root/gtirb/src/AuxData.cpp:15:
/root/gtirb/include/gtirb/AuxData.hpp:389:53: error: 'set' is not a member of 'std'
  389 | template <class... Args> struct auxdata_traits<std::set<Args...>> {
      |                                                     ^~~
/root/gtirb/include/gtirb/AuxData.hpp:25:1: note: 'std::set' is defined in header '<set>'; did you forget to '#include <set>'?
   24 | #include <list>
  +++ |+#include <set>
   25 | #include <map>
/root/gtirb/include/gtirb/AuxData.hpp:389:61: error: expected parameter pack before '...'
  389 | template <class... Args> struct auxdata_traits<std::set<Args...>> {
      |                                                             ^~~
/root/gtirb/include/gtirb/AuxData.hpp:389:61: error: template argument 1 is invalid
/root/gtirb/include/gtirb/AuxData.hpp:389:64: error: expected unqualified-id before '>' token
  389 | template <class... Args> struct auxdata_traits<std::set<Args...>> {
      |                                                                ^~
make[2]: *** [src/CMakeFiles/gtirb.dir/build.make:63: src/CMakeFiles/gtirb.dir/AuxData.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:449: src/CMakeFiles/gtirb.dir/all] Error 2
make: *** [Makefile:163: all] Error 2

Compilation command (used in dockerfile):

RUN git clone https://github.com/GrammaTech/gtirb.git && \
    cd gtirb && \
    git checkout 40c9b835c2982d57f6c33f506fe87f660c7f93db && \
    cmake -B build -DGTIRB_JAVA_API=OFF -DGTIRB_PY_API=OFF -DGTIRB_CL_API=OFF . && \
    cd build && \
    make install && \
    ldconfig && \
    cd ~
Full compilation log: ``` Cloning into 'gtirb'... Note: switching to '282161cd1e9f81da6a31eddb2d2e7ed746d41274'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by switching back to a branch. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -c with the switch command. Example: git switch -c Or undo this operation with: git switch - Turn off this advice by setting config variable advice.detachedHead to false HEAD is now at 282161cd No need to explicitly install libgtirb -- The C compiler identification is GNU 9.4.0 -- The CXX compiler identification is GNU 9.4.0 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Found Boost: /usr/local/lib/cmake/Boost-1.81.0/BoostConfig.cmake (found suitable version "1.81.0", minimum required is "1.67") -- Configuring done -- Generating done -- Build files have been written to: /root/gtirb/build/googletest-download Scanning dependencies of target googletest [ 11%] Creating directories for 'googletest' [ 22%] Performing download step (git clone) for 'googletest' Cloning into 'googletest-src'... Note: switching to 'release-1.10.0'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by switching back to a branch. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -c with the switch command. Example: git switch -c Or undo this operation with: git switch - Turn off this advice by setting config variable advice.detachedHead to false HEAD is now at 703bd9ca Googletest export [ 33%] No patch step for 'googletest' [ 44%] Performing update step for 'googletest' [ 55%] No configure step for 'googletest' [ 66%] No build step for 'googletest' [ 77%] No install step for 'googletest' [ 88%] No test step for 'googletest' [100%] Completed 'googletest' [100%] Built target googletest -- Found PythonInterp: /usr/bin/python (found version "2.7.18") -- Looking for pthread.h -- Looking for pthread.h - found -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed -- Looking for pthread_create in pthreads -- Looking for pthread_create in pthreads - not found -- Looking for pthread_create in pthread -- Looking for pthread_create in pthread - found -- Found Threads: TRUE -- Found Protobuf: /usr/local/lib/libprotobuf.so;-lpthread (found suitable version "3.20.3", minimum required is "3.0.0") -- clang-tidy not found. -- Looking for include file sys/resource.h -- Looking for include file sys/resource.h - found -- Found Doxygen: /usr/bin/doxygen (found version "1.8.17") found components: doxygen missing components: dot -- Found Python3: /usr/bin/python3.8 (found version "3.8.10") found components: Interpreter -- Found Doxygen: /usr/bin/doxygen (found suitable version "1.8.17", minimum required is "1.8.11") found components: doxygen missing components: dot APIs to be built: C++ ON Python OFF Lisp OFF Java OFF -- Configuring done -- Generating done -- Build files have been written to: /root/gtirb/build [ 1%] Running cpp protocol buffer compiler on /root/gtirb/proto/SymbolicExpression.proto [ 2%] Generating ../../../include/gtirb/proto/SymbolicExpression.pb.h [ 4%] Running cpp protocol buffer compiler on /root/gtirb/proto/AuxData.proto [ 4%] Running cpp protocol buffer compiler on /root/gtirb/proto/ByteInterval.proto [ 5%] Running cpp protocol buffer compiler on /root/gtirb/proto/CFG.proto [ 7%] Running cpp protocol buffer compiler on /root/gtirb/proto/CodeBlock.proto [ 7%] Running cpp protocol buffer compiler on /root/gtirb/proto/DataBlock.proto [ 8%] Running cpp protocol buffer compiler on /root/gtirb/proto/IR.proto [ 10%] Running cpp protocol buffer compiler on /root/gtirb/proto/Module.proto [ 10%] Running cpp protocol buffer compiler on /root/gtirb/proto/Offset.proto [ 11%] Running cpp protocol buffer compiler on /root/gtirb/proto/ProxyBlock.proto [ 12%] Running cpp protocol buffer compiler on /root/gtirb/proto/Section.proto [ 12%] Running cpp protocol buffer compiler on /root/gtirb/proto/Symbol.proto [ 14%] Generating ../../../include/gtirb/proto/AuxData.pb.h [ 14%] Generating ../../../include/gtirb/proto/ByteInterval.pb.h [ 15%] Generating ../../../include/gtirb/proto/CFG.pb.h [ 17%] Generating ../../../include/gtirb/proto/CodeBlock.pb.h [ 17%] Generating ../../../include/gtirb/proto/DataBlock.pb.h [ 18%] Generating ../../../include/gtirb/proto/IR.pb.h [ 20%] Generating ../../../include/gtirb/proto/Module.pb.h [ 20%] Generating ../../../include/gtirb/proto/Offset.pb.h [ 21%] Generating ../../../include/gtirb/proto/ProxyBlock.pb.h [ 21%] Generating ../../../include/gtirb/proto/Section.pb.h [ 22%] Generating ../../../include/gtirb/proto/Symbol.pb.h Scanning dependencies of target gtirb_proto [ 22%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/AuxData.pb.cc.o [ 24%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/ByteInterval.pb.cc.o [ 25%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/CFG.pb.cc.o [ 25%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/CodeBlock.pb.cc.o [ 27%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/DataBlock.pb.cc.o [ 28%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/IR.pb.cc.o [ 28%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/Module.pb.cc.o [ 30%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/Offset.pb.cc.o [ 31%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/ProxyBlock.pb.cc.o [ 31%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/Section.pb.cc.o [ 32%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/Symbol.pb.cc.o [ 34%] Building CXX object src/gtirb/proto/CMakeFiles/gtirb_proto.dir/SymbolicExpression.pb.cc.o [ 34%] Linking CXX static library ../../../lib/libgtirb_proto.a [ 34%] Built target gtirb_proto Scanning dependencies of target gtirb [ 35%] Building CXX object src/CMakeFiles/gtirb.dir/AuxData.cpp.o In file included from /root/gtirb/src/AuxData.cpp:15: /root/gtirb/include/gtirb/AuxData.hpp:389:53: error: 'set' is not a member of 'std' 389 | template struct auxdata_traits> { | ^~~ /root/gtirb/include/gtirb/AuxData.hpp:25:1: note: 'std::set' is defined in header ''; did you forget to '#include '? 24 | #include +++ |+#include 25 | #include /root/gtirb/include/gtirb/AuxData.hpp:389:61: error: expected parameter pack before '...' 389 | template struct auxdata_traits> { | ^~~ /root/gtirb/include/gtirb/AuxData.hpp:389:61: error: template argument 1 is invalid /root/gtirb/include/gtirb/AuxData.hpp:389:64: error: expected unqualified-id before '>' token 389 | template struct auxdata_traits> { | ^~ make[2]: *** [src/CMakeFiles/gtirb.dir/build.make:63: src/CMakeFiles/gtirb.dir/AuxData.cpp.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:449: src/CMakeFiles/gtirb.dir/all] Error 2 make: *** [Makefile:163: all] Error 2 ```

I checked the issue tracker and it seems that no one else reported this previously. Is it due to my dependency versions being too new or something? Thanks.

tjohnson-gt commented 1 year ago

Yes, this is a known issue (though not in our public issue tracker) - it crops up (along with a couple others) when one tries to compile with a newer install of the C++ libraries and/or compiler.

I'll try to see if we can get an expedited fix here soon.

fyrie6870 commented 3 months ago

Any update? Still seeing this issue.