0vercl0k / rp

rp++ is a fast C++ ROP gadget finder for PE/ELF/Mach-O x86/x64/ARM/ARM64 binaries.
MIT License
1.78k stars 251 forks source link

Compile error #1

Closed zTrix closed 10 years ago

zTrix commented 10 years ago

Hi, could you provide the instructions to build rp++? I used to compile without errors, but when I pulled the latest commit today, things started going wrong showed as follows:

[  4%] Building CXX object CMakeFiles/rp-lin-x64.dir/src/macho.cpp.o
/usr/bin/c++ -Wall -O2 -static -s -Wl,-z,relro,-z,now -fstack-protector-all -m64 -O3 -DNDEBUG -I/root/tools/rp/./src/inc -I/root/tools/rp/./lib/beaengine/inc -I/root/tools/rp/./lib/argtable2/inc -I/root/tools/rp/./lib/capstone/inc -o CMakeFiles/rp-lin-x64.dir/src/macho.cpp.o -c /root/tools/rp/src/macho.cpp
In file included from /root/tools/rp/./src/inc/toolbox.hpp:28:0,
                 from /root/tools/rp/./src/inc/macho_struct.hpp:24,
                 from /root/tools/rp/./src/inc/macho.hpp:23,
                 from /root/tools/rp/src/macho.cpp:20:
/root/tools/rp/./src/inc/gadget.hpp:70:19: error: ‘shared_ptr’ is not a member of ‘std’
         std::list<std::shared_ptr<Instruction>> get_instructions(void);
                   ^
/root/tools/rp/./src/inc/gadget.hpp:70:19: error: ‘shared_ptr’ is not a member of ‘std’
/root/tools/rp/./src/inc/gadget.hpp:70:70: error: a function call cannot appear in a constant-expression
         std::list<std::shared_ptr<Instruction>> get_instructions(void);
                                                                      ^
/root/tools/rp/./src/inc/gadget.hpp:70:70: error: template argument 1 is invalid
/root/tools/rp/./src/inc/gadget.hpp:70:70: error: template argument 2 is invalid
/root/tools/rp/./src/inc/gadget.hpp:107:14: error: ‘shared_ptr’ in namespace ‘std’ does not name a template type
         std::shared_ptr<Instruction> get_ending_instruction(void);
              ^
/root/tools/rp/./src/inc/gadget.hpp:115:40: error: ‘shared_ptr’ in namespace ‘std’ does not name a template type
             bool operator()(const std::shared_ptr<Gadget> g, const std::shared_ptr<Gadget> d) const
                                        ^
/root/tools/rp/./src/inc/gadget.hpp:115:50: error: expected ‘,’ or ‘...’ before ‘<’ token
             bool operator()(const std::shared_ptr<Gadget> g, const std::shared_ptr<Gadget> d) const
                                                  ^
/root/tools/rp/./src/inc/gadget.hpp:127:19: error: ‘shared_ptr’ is not a member of ‘std’
         std::list<std::shared_ptr<Instruction>> m_instructions; /*!< the list of the different instructions composing the gadget*/
                   ^
/root/tools/rp/./src/inc/gadget.hpp:127:19: error: ‘shared_ptr’ is not a member of ‘std’
/root/tools/rp/./src/inc/gadget.hpp:127:49: error: ‘m_instructions’ was not declared in this scope
         std::list<std::shared_ptr<Instruction>> m_instructions; /*!< the list of the different instructions composing the gadget*/
                                                 ^
/root/tools/rp/./src/inc/gadget.hpp:127:49: error: template argument 1 is invalid
/root/tools/rp/./src/inc/gadget.hpp:127:49: error: template argument 2 is invalid
/root/tools/rp/./src/inc/gadget.hpp: In member function ‘bool Gadget::Sort::operator()(int) const’:
/root/tools/rp/./src/inc/gadget.hpp:117:24: error: ‘g’ was not declared in this scope
                 return g->get_disassembly() < d->get_disassembly();
                        ^
/root/tools/rp/./src/inc/gadget.hpp:117:47: error: ‘d’ was not declared in this scope
                 return g->get_disassembly() < d->get_disassembly();
                                               ^
In file included from /root/tools/rp/./src/inc/macho_struct.hpp:24:0,
                 from /root/tools/rp/./src/inc/macho.hpp:23,
                 from /root/tools/rp/src/macho.cpp:20:
/root/tools/rp/./src/inc/toolbox.hpp: At global scope:
/root/tools/rp/./src/inc/toolbox.hpp:98:40: error: ‘shared_ptr’ is not a member of ‘std’
 void only_unique_gadgets(std::multiset<std::shared_ptr<Gadget>, Gadget::Sort> &list_gadgets, std::set<std::shared_ptr<Gadget>, Gadget::Sort> &unique_gadgets);
                                        ^
/root/tools/rp/./src/inc/toolbox.hpp:98:40: error: ‘shared_ptr’ is not a member of ‘std’
/root/tools/rp/./src/inc/toolbox.hpp:98:62: error: template argument 1 is invalid
 void only_unique_gadgets(std::multiset<std::shared_ptr<Gadget>, Gadget::Sort> &list_gadgets, std::set<std::shared_ptr<Gadget>, Gadget::Sort> &unique_gadgets);
                                                              ^
/root/tools/rp/./src/inc/toolbox.hpp:98:62: error: template argument 2 is invalid
/root/tools/rp/./src/inc/toolbox.hpp:98:62: error: template argument 3 is invalid
/root/tools/rp/./src/inc/toolbox.hpp:98:40: error: ‘shared_ptr’ is not a member of ‘std’
 void only_unique_gadgets(std::multiset<std::shared_ptr<Gadget>, Gadget::Sort> &list_gadgets, std::set<std::shared_ptr<Gadget>, Gadget::Sort> &unique_gadgets);
                                        ^
/root/tools/rp/./src/inc/toolbox.hpp:98:40: error: ‘shared_ptr’ is not a member of ‘std’
/root/tools/rp/./src/inc/toolbox.hpp:98:62: error: template argument 1 is invalid
 void only_unique_gadgets(std::multiset<std::shared_ptr<Gadget>, Gadget::Sort> &list_gadgets, std::set<std::shared_ptr<Gadget>, Gadget::Sort> &unique_gadgets);
                                                              ^
/root/tools/rp/./src/inc/toolbox.hpp:98:62: error: template argument 2 is invalid
/root/tools/rp/./src/inc/toolbox.hpp:98:62: error: template argument 3 is invalid
/root/tools/rp/./src/inc/toolbox.hpp:98:31: error: variable or field ‘only_unique_gadgets’ declared void
 void only_unique_gadgets(std::multiset<std::shared_ptr<Gadget>, Gadget::Sort> &list_gadgets, std::set<std::shared_ptr<Gadget>, Gadget::Sort> &unique_gadgets);
                               ^
/root/tools/rp/./src/inc/toolbox.hpp:98:40: error: ‘shared_ptr’ is not a member of ‘std’
 void only_unique_gadgets(std::multiset<std::shared_ptr<Gadget>, Gadget::Sort> &list_gadgets, std::set<std::shared_ptr<Gadget>, Gadget::Sort> &unique_gadgets);
                                        ^
/root/tools/rp/./src/inc/toolbox.hpp:98:40: error: ‘shared_ptr’ is not a member of ‘std’
/root/tools/rp/./src/inc/toolbox.hpp:98:62: error: template argument 1 is invalid
 void only_unique_gadgets(std::multiset<std::shared_ptr<Gadget>, Gadget::Sort> &list_gadgets, std::set<std::shared_ptr<Gadget>, Gadget::Sort> &unique_gadgets);
                                                              ^
/root/tools/rp/./src/inc/toolbox.hpp:98:62: error: template argument 2 is invalid
/root/tools/rp/./src/inc/toolbox.hpp:98:62: error: template argument 3 is invalid
/root/tools/rp/./src/inc/toolbox.hpp:98:77: error: expected primary-expression before ‘>’ token
 void only_unique_gadgets(std::multiset<std::shared_ptr<Gadget>, Gadget::Sort> &list_gadgets, std::set<std::shared_ptr<Gadget>, Gadget::Sort> &unique_gadgets);
                                                                             ^
/root/tools/rp/./src/inc/toolbox.hpp:98:80: error: ‘list_gadgets’ was not declared in this scope
 void only_unique_gadgets(std::multiset<std::shared_ptr<Gadget>, Gadget::Sort> &list_gadgets, std::set<std::shared_ptr<Gadget>, Gadget::Sort> &unique_gadgets);
                                                                                ^
/root/tools/rp/./src/inc/toolbox.hpp:98:103: error: ‘shared_ptr’ is not a member of ‘std’
 void only_unique_gadgets(std::multiset<std::shared_ptr<Gadget>, Gadget::Sort> &list_gadgets, std::set<std::shared_ptr<Gadget>, Gadget::Sort> &unique_gadgets);
                                                                                                       ^
/root/tools/rp/./src/inc/toolbox.hpp:98:103: error: ‘shared_ptr’ is not a member of ‘std’
/root/tools/rp/./src/inc/toolbox.hpp:98:125: error: template argument 1 is invalid
 void only_unique_gadgets(std::multiset<std::shared_ptr<Gadget>, Gadget::Sort> &list_gadgets, std::set<std::shared_ptr<Gadget>, Gadget::Sort> &unique_gadgets);
                                                                                                                             ^
/root/tools/rp/./src/inc/toolbox.hpp:98:125: error: template argument 2 is invalid
/root/tools/rp/./src/inc/toolbox.hpp:98:125: error: template argument 3 is invalid
/root/tools/rp/./src/inc/toolbox.hpp:98:140: error: expected primary-expression before ‘>’ token
 void only_unique_gadgets(std::multiset<std::shared_ptr<Gadget>, Gadget::Sort> &list_gadgets, std::set<std::shared_ptr<Gadget>, Gadget::Sort> &unique_gadgets);
                                                                                                                                            ^
/root/tools/rp/./src/inc/toolbox.hpp:98:143: error: ‘unique_gadgets’ was not declared in this scope
 void only_unique_gadgets(std::multiset<std::shared_ptr<Gadget>, Gadget::Sort> &list_gadgets, std::set<std::shared_ptr<Gadget>, Gadget::Sort> &unique_gadgets);
                                                                                                                                               ^
In file included from /root/tools/rp/./src/inc/macho.hpp:23:0,
                 from /root/tools/rp/src/macho.cpp:20:
/root/tools/rp/./src/inc/macho_struct.hpp:273:25: error: ‘shared_ptr’ is not a member of ‘std’
     virtual std::vector<std::shared_ptr<Section>> get_executable_section(std::ifstream &file) = 0;
                         ^
/root/tools/rp/./src/inc/macho_struct.hpp:273:25: error: ‘shared_ptr’ is not a member of ‘std’
/root/tools/rp/./src/inc/macho_struct.hpp:273:93: error: a function call cannot appear in a constant-expression
     virtual std::vector<std::shared_ptr<Section>> get_executable_section(std::ifstream &file) = 0;
                                                                                             ^
/root/tools/rp/./src/inc/macho_struct.hpp:273:97: error: an assignment cannot appear in a constant-expression
     virtual std::vector<std::shared_ptr<Section>> get_executable_section(std::ifstream &file) = 0;
                                                                                                 ^
/root/tools/rp/./src/inc/macho_struct.hpp:273:97: error: template argument 1 is invalid
/root/tools/rp/./src/inc/macho_struct.hpp:273:97: error: template argument 2 is invalid
/root/tools/rp/./src/inc/macho_struct.hpp:273:18: error: ‘virtual’ can only be specified for functions
     virtual std::vector<std::shared_ptr<Section>> get_executable_section(std::ifstream &file) = 0;
                  ^
/root/tools/rp/./src/inc/macho_struct.hpp:282:17: error: ‘shared_ptr’ is not a member of ‘std’
     std::vector<std::shared_ptr<RP_SEGMENT_COMMAND<T>>> seg_commands;
                 ^
/root/tools/rp/./src/inc/macho_struct.hpp:282:17: error: ‘shared_ptr’ is not a member of ‘std’
/root/tools/rp/./src/inc/macho_struct.hpp:282:53: error: ‘>>’ should be ‘> >’ within a nested template argument list
     std::vector<std::shared_ptr<RP_SEGMENT_COMMAND<T>>> seg_commands;
                                                     ^
/root/tools/rp/./src/inc/macho_struct.hpp:282:53: error: template argument 1 is invalid
/root/tools/rp/./src/inc/macho_struct.hpp:282:53: error: template argument 2 is invalid
/root/tools/rp/./src/inc/macho_struct.hpp:282:55: error: expected unqualified-id before ‘>’ token
     std::vector<std::shared_ptr<RP_SEGMENT_COMMAND<T>>> seg_commands;
                                                       ^
/root/tools/rp/./src/inc/macho_struct.hpp:283:17: error: ‘shared_ptr’ is not a member of ‘std’
     std::vector<std::shared_ptr<RP_SECTION<T>>> sections;
                 ^
/root/tools/rp/./src/inc/macho_struct.hpp:283:17: error: ‘shared_ptr’ is not a member of ‘std’
/root/tools/rp/./src/inc/macho_struct.hpp:283:45: error: ‘>>’ should be ‘> >’ within a nested template argument list
     std::vector<std::shared_ptr<RP_SECTION<T>>> sections;
                                             ^
/root/tools/rp/./src/inc/macho_struct.hpp:283:45: error: template argument 1 is invalid
/root/tools/rp/./src/inc/macho_struct.hpp:283:45: error: template argument 2 is invalid
/root/tools/rp/./src/inc/macho_struct.hpp:283:47: error: expected unqualified-id before ‘>’ token
     std::vector<std::shared_ptr<RP_SECTION<T>>> sections;
                                               ^
/root/tools/rp/./src/inc/macho_struct.hpp:285:34: error: ‘shared_ptr’ is not a member of ‘std’
     typedef typename std::vector<std::shared_ptr<RP_SECTION<T>>>::const_iterator iter_rp_section;
                                  ^
/root/tools/rp/./src/inc/macho_struct.hpp:285:34: error: ‘shared_ptr’ is not a member of ‘std’
/root/tools/rp/./src/inc/macho_struct.hpp:285:62: error: ‘>>’ should be ‘> >’ within a nested template argument list
     typedef typename std::vector<std::shared_ptr<RP_SECTION<T>>>::const_iterator iter_rp_section;
                                                              ^
/root/tools/rp/./src/inc/macho_struct.hpp:285:62: error: template argument 1 is invalid
/root/tools/rp/./src/inc/macho_struct.hpp:285:62: error: template argument 2 is invalid
/root/tools/rp/./src/inc/macho_struct.hpp:285:64: error: expected identifier before ‘>’ token
     typedef typename std::vector<std::shared_ptr<RP_SECTION<T>>>::const_iterator iter_rp_section;
                                                                ^
/root/tools/rp/./src/inc/macho_struct.hpp:285:64: error: expected unqualified-id before ‘>’ token
/root/tools/rp/./src/inc/macho_struct.hpp:286:34: error: ‘shared_ptr’ is not a member of ‘std’
     typedef typename std::vector<std::shared_ptr<RP_SEGMENT_COMMAND<T>>>::const_iterator iter_rp_segment;
                                  ^
/root/tools/rp/./src/inc/macho_struct.hpp:286:34: error: ‘shared_ptr’ is not a member of ‘std’
/root/tools/rp/./src/inc/macho_struct.hpp:286:70: error: ‘>>’ should be ‘> >’ within a nested template argument list
     typedef typename std::vector<std::shared_ptr<RP_SEGMENT_COMMAND<T>>>::const_iterator iter_rp_segment;
                                                                      ^
/root/tools/rp/./src/inc/macho_struct.hpp:286:70: error: template argument 1 is invalid
/root/tools/rp/./src/inc/macho_struct.hpp:286:70: error: template argument 2 is invalid
/root/tools/rp/./src/inc/macho_struct.hpp:286:72: error: expected identifier before ‘>’ token
     typedef typename std::vector<std::shared_ptr<RP_SEGMENT_COMMAND<T>>>::const_iterator iter_rp_segment;
                                                                        ^
/root/tools/rp/./src/inc/macho_struct.hpp:286:72: error: expected unqualified-id before ‘>’ token
In file included from /root/tools/rp/./src/inc/macho.hpp:23:0,
                 from /root/tools/rp/src/macho.cpp:20:
/root/tools/rp/./src/inc/macho_struct.hpp:358:17: error: ‘shared_ptr’ is not a member of ‘std’
     std::vector<std::shared_ptr<Section>> get_executable_section(std::ifstream &file)
                 ^
/root/tools/rp/./src/inc/macho_struct.hpp:358:17: error: ‘shared_ptr’ is not a member of ‘std’
/root/tools/rp/./src/inc/macho_struct.hpp:358:85: error: a function call cannot appear in a constant-expression
     std::vector<std::shared_ptr<Section>> get_executable_section(std::ifstream &file)
                                                                                     ^
/root/tools/rp/./src/inc/macho_struct.hpp:358:85: error: template argument 1 is invalid
/root/tools/rp/./src/inc/macho_struct.hpp:358:85: error: template argument 2 is invalid
/root/tools/rp/./src/inc/macho_struct.hpp:359:5: error: expected unqualified-id before ‘{’ token
     {
     ^
/root/tools/rp/src/macho.cpp:106:1: error: expected ‘}’ at end of input
 }
 ^
In file included from /root/tools/rp/./src/inc/macho.hpp:23:0,
                 from /root/tools/rp/src/macho.cpp:20:
/root/tools/rp/./src/inc/macho_struct.hpp: In member function ‘void MachoArchLayout<T>::fill_structures(std::ifstream&)’:
/root/tools/rp/./src/inc/macho_struct.hpp:317:21: error: ‘shared_ptr’ is not a member of ‘std’
                     std::shared_ptr<RP_SEGMENT_COMMAND<T>> seg_cmd = std::make_shared<RP_SEGMENT_COMMAND<T>>();
                     ^
/root/tools/rp/./src/inc/macho_struct.hpp:317:57: error: spurious ‘>>’, use ‘>’ to terminate a template argument list
                     std::shared_ptr<RP_SEGMENT_COMMAND<T>> seg_cmd = std::make_shared<RP_SEGMENT_COMMAND<T>>();
                                                         ^
/root/tools/rp/./src/inc/macho_struct.hpp:317:60: error: expected primary-expression before ‘seg_cmd’
                     std::shared_ptr<RP_SEGMENT_COMMAND<T>> seg_cmd = std::make_shared<RP_SEGMENT_COMMAND<T>>();
                                                            ^
/root/tools/rp/./src/inc/macho_struct.hpp:319:38: error: ‘seg_cmd’ was not declared in this scope
                     file.read((char*)seg_cmd.get(), sizeof(RP_SEGMENT_COMMAND<T>));
                                      ^
/root/tools/rp/./src/inc/macho_struct.hpp:320:21: error: ‘seg_commands’ was not declared in this scope
                     seg_commands.push_back(seg_cmd);
                     ^
/root/tools/rp/./src/inc/macho_struct.hpp:322:66: error: there are no arguments to ‘_stricmp’ that depend on a template parameter, so a declaration of ‘_stricmp’ must be available [-fpermissive]
                     if(_stricmp((char*)seg_cmd->segname, "__TEXT") == 0)
                                                                  ^
/root/tools/rp/./src/inc/macho_struct.hpp:322:66: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
/root/tools/rp/./src/inc/macho_struct.hpp:333:25: error: ‘shared_ptr’ is not a member of ‘std’
                         std::shared_ptr<RP_SECTION<T>> sect = std::make_shared<RP_SECTION<T>>();
                         ^
/root/tools/rp/./src/inc/macho_struct.hpp:333:53: error: spurious ‘>>’, use ‘>’ to terminate a template argument list
                         std::shared_ptr<RP_SECTION<T>> sect = std::make_shared<RP_SECTION<T>>();
                                                     ^
/root/tools/rp/./src/inc/macho_struct.hpp:333:56: error: expected primary-expression before ‘sect’
                         std::shared_ptr<RP_SECTION<T>> sect = std::make_shared<RP_SECTION<T>>();
                                                        ^
/root/tools/rp/./src/inc/macho_struct.hpp:335:42: error: ‘sect’ was not declared in this scope
                         file.read((char*)sect.get(), sizeof(RP_SECTION<T>));
                                          ^
/root/tools/rp/./src/inc/macho_struct.hpp:336:25: error: ‘sections’ was not declared in this scope
                         sections.push_back(sect);
                         ^
In file included from /root/tools/rp/./src/inc/macho.hpp:23:0,
                 from /root/tools/rp/src/macho.cpp:20:
/root/tools/rp/./src/inc/macho_struct.hpp: At global scope:
/root/tools/rp/./src/inc/macho_struct.hpp:356:5: error: expected unqualified-id at end of input
     }
     ^
CMakeFiles/rp-lin-x64.dir/build.make:57: recipe for target 'CMakeFiles/rp-lin-x64.dir/src/macho.cpp.o' failed
make[2]: *** [CMakeFiles/rp-lin-x64.dir/src/macho.cpp.o] Error 1
CMakeFiles/Makefile2:63: recipe for target 'CMakeFiles/rp-lin-x64.dir/all' failed
make[1]: *** [CMakeFiles/rp-lin-x64.dir/all] Error 2
Makefile:75: recipe for target 'all' failed
make: *** [all] Error 2
:( rp # /usr/bin/c++ -std=c++0x -Wall -O2 -static -s -Wl,-z,relro,-z,now -fstack-protector-all -m64 -O3 -DNDEBUG -I/root/tools/rp/./src/inc -I/root/tools/rp/./lib/beaengine/inc -I/root/tools/rp/./lib/argtable2/inc -I/root/tools/rp/./lib/capstone/inc -o CMakeFiles/rp-lin-x64.dir/src/macho.cpp.o -c /root/tools/rp/src/macho.cpp
In file included from /root/tools/rp/./src/inc/macho.hpp:23:0,
                 from /root/tools/rp/src/macho.cpp:20:
/root/tools/rp/./src/inc/macho_struct.hpp: In member function ‘void MachoArchLayout<T>::fill_structures(std::ifstream&)’:
/root/tools/rp/./src/inc/macho_struct.hpp:322:66: error: there are no arguments to ‘_stricmp’ that depend on a template parameter, so a declaration of ‘_stricmp’ must be available [-fpermissive]
                     if(_stricmp((char*)seg_cmd->segname, "__TEXT") == 0)
                                                                  ^
/root/tools/rp/./src/inc/macho_struct.hpp:322:66: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
/root/tools/rp/./src/inc/macho_struct.hpp: In instantiation of ‘void MachoArchLayout<T>::fill_structures(std::ifstream&) [with T = unsigned int; std::ifstream = std::basic_ifstream<char>]’:
/root/tools/rp/src/macho.cpp:106:1:   required from here
/root/tools/rp/./src/inc/macho_struct.hpp:322:66: error: ‘_stricmp’ was not declared in this scope
In file included from /root/tools/rp/./src/inc/macho.hpp:23:0,
                 from /root/tools/rp/src/macho.cpp:20:
/root/tools/rp/./src/inc/macho_struct.hpp: In instantiation of ‘std::vector<std::shared_ptr<Section> > MachoArchLayout<T>::get_executable_section(std::ifstream&) [with T = unsigned int; std::ifstream = std::basic_ifstream<char>]’:
/root/tools/rp/src/macho.cpp:106:1:   required from here
/root/tools/rp/./src/inc/macho_struct.hpp:371:17: error: cannot bind packed field ‘(& it.__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator*<const std::shared_ptr<RP_SECTION<unsigned int> >*, std::vector<std::shared_ptr<RP_SECTION<unsigned int> >, std::allocator<std::shared_ptr<RP_SECTION<unsigned int> > > > >())->std::shared_ptr<RP_SECTION<unsigned int> >::<anonymous>.std::__shared_ptr<_Tp, _Lp>::operator-><RP_SECTION<unsigned int>, (__gnu_cxx::_Lock_policy)2u>()->RP_SECTION<unsigned int>::offset’ to ‘unsigned int&’
                 );
                 ^
In file included from /root/tools/rp/./src/inc/macho.hpp:23:0,
                 from /root/tools/rp/src/macho.cpp:20:
/root/tools/rp/./src/inc/macho_struct.hpp: In instantiation of ‘void MachoArchLayout<T>::fill_structures(std::ifstream&) [with T = long long unsigned int; std::ifstream = std::basic_ifstream<char>]’:
/root/tools/rp/src/macho.cpp:106:1:   required from here
/root/tools/rp/./src/inc/macho_struct.hpp:322:66: error: ‘_stricmp’ was not declared in this scope
                     if(_stricmp((char*)seg_cmd->segname, "__TEXT") == 0)
                                                                  ^
In file included from /root/tools/rp/./src/inc/macho.hpp:23:0,
                 from /root/tools/rp/src/macho.cpp:20:
/root/tools/rp/./src/inc/macho_struct.hpp: In instantiation of ‘std::vector<std::shared_ptr<Section> > MachoArchLayout<T>::get_executable_section(std::ifstream&) [with T = long long unsigned int; std::ifstream = std::basic_ifstream<char>]’:
/root/tools/rp/src/macho.cpp:106:1:   required from here
/root/tools/rp/./src/inc/macho_struct.hpp:371:17: error: cannot bind packed field ‘(& it.__gnu_cxx::__normal_iterator<_Iterator, _Container>::operator*<const std::shared_ptr<RP_SECTION<long long unsigned int> >*, std::vector<std::shared_ptr<RP_SECTION<long long unsigned int> >, std::allocator<std::shared_ptr<RP_SECTION<long long unsigned int> > > > >())->std::shared_ptr<RP_SECTION<long long unsigned int> >::<anonymous>.std::__shared_ptr<_Tp, _Lp>::operator-><RP_SECTION<long long unsigned int>, (__gnu_cxx::_Lock_policy)2u>()->RP_SECTION<long long unsigned int>::offset’ to ‘unsigned int&’
                 );
                 ^

Thanks.

0vercl0k commented 10 years ago

Hey there,

Yeah, I'm currently doing quite some changes in rp++ and I'm testing all of those only on Windows at the moment. So I'm not really surprised to see errors when compiling with g++ ; I will make sure that it compiles on other platforms when my changes for the v2 will be ready. The latest version of rp++ I know successfully compiling on Linux is this one: https://github.com/0vercl0k/rp/releases

Cheers, 0vercl0k

2014-05-15 10:50 GMT+01:00 Wenlei Zhu notifications@github.com:

Hi, could you provide the instructions to build rp++? I used to compile without errors, but when I pulled the latest commit today, things started going wrong showed as follows:

[ 4%] Building CXX object CMakeFiles/rp-lin-x64.dir/src/macho.cpp.o /usr/bin/c++ -Wall -O2 -static -s -Wl,-z,relro,-z,now -fstack-protector-all -m64 -O3 -DNDEBUG -I/root/tools/rp/./src/inc -I/root/tools/rp/./lib/beaengine/inc -I/root/tools/rp/./lib/argtable2/inc -I/root/tools/rp/./lib/capstone/inc -o CMakeFiles/rp-lin-x64.dir/src/macho.cpp.o -c /root/tools/rp/src/macho.cpp In file included from /root/tools/rp/./src/inc/toolbox.hpp:28:0, from /root/tools/rp/./src/inc/macho_struct.hpp:24, from /root/tools/rp/./src/inc/macho.hpp:23, from /root/tools/rp/src/macho.cpp:20: /root/tools/rp/./src/inc/gadget.hpp:70:19: error: ‘shared_ptr’ is not a member of ‘std’ std::liststd::shared_ptr get_instructions(void); ^ /root/tools/rp/./src/inc/gadget.hpp:70:19: error: ‘shared_ptr’ is not a member of ‘std’ /root/tools/rp/./src/inc/gadget.hpp:70:70: error: a function call cannot appear in a constant-expression std::liststd::shared_ptr get_instructions(void); ^ /root/tools/rp/./src/inc/gadget.hpp:70:70: error: template argument 1 is invalid /root/tools/rp/./src/inc/gadget.hpp:70:70: error: template argument 2 is invalid /root/tools/rp/./src/inc/gadget.hpp:107:14: error: ‘shared_ptr’ in namespace ‘std’ does not name a template type std::shared_ptr get_ending_instruction(void); ^ /root/tools/rp/./src/inc/gadget.hpp:115:40: error: ‘shared_ptr’ in namespace ‘std’ does not name a template type bool operator()(const std::shared_ptr g, const std::shared_ptr d) const ^ /root/tools/rp/./src/inc/gadget.hpp:115:50: error: expected ‘,’ or ‘...’ before ‘<’ token bool operator()(const std::shared_ptr g, const std::shared_ptr d) const ^ /root/tools/rp/./src/inc/gadget.hpp:127:19: error: ‘shared_ptr’ is not a member of ‘std’ std::liststd::shared_ptr minstructions; /!< the list of the different instructions composing the gadget_/ ^ /root/tools/rp/./src/inc/gadget.hpp:127:19: error: ‘shared_ptr’ is not a member of ‘std’ /root/tools/rp/./src/inc/gadget.hpp:127:49: error: ‘m_instructions’ was not declared in this scope std::liststd::shared_ptr minstructions; /!< the list of the different instructions composing the gadget_/ ^ /root/tools/rp/./src/inc/gadget.hpp:127:49: error: template argument 1 is invalid /root/tools/rp/./src/inc/gadget.hpp:127:49: error: template argument 2 is invalid /root/tools/rp/./src/inc/gadget.hpp: In member function ‘bool Gadget::Sort::operator()(int) const’: /root/tools/rp/./src/inc/gadget.hpp:117:24: error: ‘g’ was not declared in this scope return g->get_disassembly() < d->get_disassembly(); ^ /root/tools/rp/./src/inc/gadget.hpp:117:47: error: ‘d’ was not declared in this scope return g->get_disassembly() < d->get_disassembly(); ^ In file included from /root/tools/rp/./src/inc/macho_struct.hpp:24:0, from /root/tools/rp/./src/inc/macho.hpp:23, from /root/tools/rp/src/macho.cpp:20: /root/tools/rp/./src/inc/toolbox.hpp: At global scope: /root/tools/rp/./src/inc/toolbox.hpp:98:40: error: ‘shared_ptr’ is not a member of ‘std’ void only_unique_gadgets(std::multisetstd::shared_ptr<Gadget, Gadget::Sort> &list_gadgets, std::setstd::shared_ptr<Gadget, Gadget::Sort> &unique_gadgets); ^ /root/tools/rp/./src/inc/toolbox.hpp:98:40: error: ‘shared_ptr’ is not a member of ‘std’ /root/tools/rp/./src/inc/toolbox.hpp:98:62: error: template argument 1 is invalid void only_unique_gadgets(std::multisetstd::shared_ptr<Gadget, Gadget::Sort> &list_gadgets, std::setstd::shared_ptr<Gadget, Gadget::Sort> &unique_gadgets); ^ /root/tools/rp/./src/inc/toolbox.hpp:98:62: error: template argument 2 is invalid /root/tools/rp/./src/inc/toolbox.hpp:98:62: error: template argument 3 is invalid /root/tools/rp/./src/inc/toolbox.hpp:98:40: error: ‘shared_ptr’ is not a member of ‘std’ void only_unique_gadgets(std::multisetstd::shared_ptr<Gadget, Gadget::Sort> &list_gadgets, std::setstd::shared_ptr<Gadget, Gadget::Sort> &unique_gadgets); ^ /root/tools/rp/./src/inc/toolbox.hpp:98:40: error: ‘shared_ptr’ is not a member of ‘std’ /root/tools/rp/./src/inc/toolbox.hpp:98:62: error: template argument 1 is invalid void only_unique_gadgets(std::multisetstd::shared_ptr<Gadget, Gadget::Sort> &list_gadgets, std::setstd::shared_ptr<Gadget, Gadget::Sort> &unique_gadgets); ^ /root/tools/rp/./src/inc/toolbox.hpp:98:62: error: template argument 2 is invalid /root/tools/rp/./src/inc/toolbox.hpp:98:62: error: template argument 3 is invalid /root/tools/rp/./src/inc/toolbox.hpp:98:31: error: variable or field ‘only_unique_gadgets’ declared void void only_unique_gadgets(std::multisetstd::shared_ptr<Gadget, Gadget::Sort> &list_gadgets, std::setstd::shared_ptr<Gadget, Gadget::Sort> &unique_gadgets); ^ /root/tools/rp/./src/inc/toolbox.hpp:98:40: error: ‘shared_ptr’ is not a member of ‘std’ void only_unique_gadgets(std::multisetstd::shared_ptr<Gadget, Gadget::Sort> &list_gadgets, std::setstd::shared_ptr<Gadget, Gadget::Sort> &unique_gadgets); ^ /root/tools/rp/./src/inc/toolbox.hpp:98:40: error: ‘shared_ptr’ is not a member of ‘std’ /root/tools/rp/./src/inc/toolbox.hpp:98:62: error: template argument 1 is invalid void only_unique_gadgets(std::multisetstd::shared_ptr<Gadget, Gadget::Sort> &list_gadgets, std::setstd::shared_ptr<Gadget, Gadget::Sort> &unique_gadgets); ^ /root/tools/rp/./src/inc/toolbox.hpp:98:62: error: template argument 2 is invalid /root/tools/rp/./src/inc/toolbox.hpp:98:62: error: template argument 3 is invalid /root/tools/rp/./src/inc/toolbox.hpp:98:77: error: expected primary-expression before ‘>’ token void only_unique_gadgets(std::multisetstd::shared_ptr<Gadget, Gadget::Sort> &list_gadgets, std::setstd::shared_ptr<Gadget, Gadget::Sort> &unique_gadgets); ^ /root/tools/rp/./src/inc/toolbox.hpp:98:80: error: ‘list_gadgets’ was not declared in this scope void only_unique_gadgets(std::multisetstd::shared_ptr<Gadget, Gadget::Sort> &list_gadgets, std::setstd::shared_ptr<Gadget, Gadget::Sort> &unique_gadgets); ^ /root/tools/rp/./src/inc/toolbox.hpp:98:103: error: ‘shared_ptr’ is not a member of ‘std’ void only_unique_gadgets(std::multisetstd::shared_ptr<Gadget, Gadget::Sort> &list_gadgets, std::setstd::shared_ptr<Gadget, Gadget::Sort> &unique_gadgets); ^ /root/tools/rp/./src/inc/toolbox.hpp:98:103: error: ‘shared_ptr’ is not a member of ‘std’ /root/tools/rp/./src/inc/toolbox.hpp:98:125: error: template argument 1 is invalid void only_unique_gadgets(std::multisetstd::shared_ptr<Gadget, Gadget::Sort> &list_gadgets, std::setstd::shared_ptr<Gadget, Gadget::Sort> &unique_gadgets); ^ /root/tools/rp/./src/inc/toolbox.hpp:98:125: error: template argument 2 is invalid /root/tools/rp/./src/inc/toolbox.hpp:98:125: error: template argument 3 is invalid /root/tools/rp/./src/inc/toolbox.hpp:98:140: error: expected primary-expression before ‘>’ token void only_unique_gadgets(std::multisetstd::shared_ptr<Gadget, Gadget::Sort> &list_gadgets, std::setstd::shared_ptr<Gadget, Gadget::Sort> &unique_gadgets); ^ /root/tools/rp/./src/inc/toolbox.hpp:98:143: error: ‘unique_gadgets’ was not declared in this scope void only_unique_gadgets(std::multisetstd::shared_ptr<Gadget, Gadget::Sort> &list_gadgets, std::setstd::shared_ptr<Gadget, Gadget::Sort> &unique_gadgets); ^ In file included from /root/tools/rp/./src/inc/macho.hpp:23:0, from /root/tools/rp/src/macho.cpp:20: /root/tools/rp/./src/inc/macho_struct.hpp:273:25: error: ‘shared_ptr’ is not a member of ‘std’ virtual std::vectorstd::shared_ptr

get_executable_section(std::ifstream &file) = 0; ^ /root/tools/rp/./src/inc/macho_struct.hpp:273:25: error: ‘shared_ptr’ is not a member of ‘std’ /root/tools/rp/./src/inc/macho_struct.hpp:273:93: error: a function call cannot appear in a constant-expression virtual std::vectorstd::shared_ptr
get_executable_section(std::ifstream &file) = 0; ^ /root/tools/rp/./src/inc/macho_struct.hpp:273:97: error: an assignment cannot appear in a constant-expression virtual std::vectorstd::shared_ptr
get_executable_section(std::ifstream &file) = 0; ^ /root/tools/rp/./src/inc/macho_struct.hpp:273:97: error: template argument 1 is invalid /root/tools/rp/./src/inc/macho_struct.hpp:273:97: error: template argument 2 is invalid /root/tools/rp/./src/inc/macho_struct.hpp:273:18: error: ‘virtual’ can only be specified for functions virtual std::vectorstd::shared_ptr
get_executable_section(std::ifstream &file) = 0; ^ /root/tools/rp/./src/inc/macho_struct.hpp:282:17: error: ‘shared_ptr’ is not a member of ‘std’ std::vectorstd::shared_ptr<RP_SEGMENT_COMMAND> seg_commands; ^ /root/tools/rp/./src/inc/macho_struct.hpp:282:17: error: ‘shared_ptr’ is not a member of ‘std’ /root/tools/rp/./src/inc/macho_struct.hpp:282:53: error: ‘>>’ should be ‘> >’ within a nested template argument list std::vectorstd::shared_ptr<RP_SEGMENT_COMMAND> seg_commands; ^ /root/tools/rp/./src/inc/macho_struct.hpp:282:53: error: template argument 1 is invalid /root/tools/rp/./src/inc/macho_struct.hpp:282:53: error: template argument 2 is invalid /root/tools/rp/./src/inc/macho_struct.hpp:282:55: error: expected unqualified-id before ‘>’ token std::vectorstd::shared_ptr<RP_SEGMENT_COMMAND> seg_commands; ^ /root/tools/rp/./src/inc/macho_struct.hpp:283:17: error: ‘shared_ptr’ is not a member of ‘std’ std::vectorstd::shared_ptr<RP_SECTION> sections; ^ /root/tools/rp/./src/inc/macho_struct.hpp:283:17: error: ‘shared_ptr’ is not a member of ‘std’ /root/tools/rp/./src/inc/macho_struct.hpp:283:45: error: ‘>>’ should be ‘> >’ within a nested template argument list std::vectorstd::shared_ptr<RP_SECTION> sections; ^ /root/tools/rp/./src/inc/macho_struct.hpp:283:45: error: template argument 1 is invalid /root/tools/rp/./src/inc/macho_struct.hpp:283:45: error: template argument 2 is invalid /root/tools/rp/./src/inc/macho_struct.hpp:283:47: error: expected unqualified-id before ‘>’ token std::vectorstd::shared_ptr<RP_SECTION> sections; ^ /root/tools/rp/./src/inc/macho_struct.hpp:285:34: error: ‘shared_ptr’ is not a member of ‘std’ typedef typename std::vectorstd::shared_ptr<RP_SECTION>::const_iterator iter_rp_section; ^ /root/tools/rp/./src/inc/macho_struct.hpp:285:34: error: ‘shared_ptr’ is not a member of ‘std’ /root/tools/rp/./src/inc/macho_struct.hpp:285:62: error: ‘>>’ should be ‘> >’ within a nested template argument list typedef typename std::vectorstd::shared_ptr<RP_SECTION>::const_iterator iter_rp_section; ^ /root/tools/rp/./src/inc/macho_struct.hpp:285:62: error: template argument 1 is invalid /root/tools/rp/./src/inc/macho_struct.hpp:285:62: error: template argument 2 is invalid /root/tools/rp/./src/inc/macho_struct.hpp:285:64: error: expected identifier before ‘>’ token typedef typename std::vectorstd::shared_ptr<RP_SECTION>::const_iterator iter_rp_section; ^ /root/tools/rp/./src/inc/macho_struct.hpp:285:64: error: expected unqualified-id before ‘>’ token /root/tools/rp/./src/inc/macho_struct.hpp:286:34: error: ‘shared_ptr’ is not a member of ‘std’ typedef typename std::vectorstd::shared_ptr<RP_SEGMENT_COMMAND>::const_iterator iter_rp_segment; ^ /root/tools/rp/./src/inc/macho_struct.hpp:286:34: error: ‘shared_ptr’ is not a member of ‘std’ /root/tools/rp/./src/inc/macho_struct.hpp:286:70: error: ‘>>’ should be ‘> >’ within a nested template argument list typedef typename std::vectorstd::shared_ptr<RP_SEGMENT_COMMAND>::const_iterator iter_rp_segment; ^ /root/tools/rp/./src/inc/macho_struct.hpp:286:70: error: template argument 1 is invalid /root/tools/rp/./src/inc/macho_struct.hpp:286:70: error: template argument 2 is invalid /root/tools/rp/./src/inc/macho_struct.hpp:286:72: error: expected identifier before ‘>’ token typedef typename std::vectorstd::shared_ptr<RP_SEGMENT_COMMAND>::const_iterator iter_rp_segment; ^ /root/tools/rp/./src/inc/macho_struct.hpp:286:72: error: expected unqualified-id before ‘>’ token In file included from /root/tools/rp/./src/inc/macho.hpp:23:0, from /root/tools/rp/src/macho.cpp:20: /root/tools/rp/./src/inc/macho_struct.hpp:358:17: error: ‘shared_ptr’ is not a member of ‘std’ std::vectorstd::shared_ptr
get_executable_section(std::ifstream &file) ^ /root/tools/rp/./src/inc/macho_struct.hpp:358:17: error: ‘shared_ptr’ is not a member of ‘std’ /root/tools/rp/./src/inc/macho_struct.hpp:358:85: error: a function call cannot appear in a constant-expression std::vectorstd::shared_ptr
get_executable_section(std::ifstream &file) ^ /root/tools/rp/./src/inc/macho_struct.hpp:358:85: error: template argument 1 is invalid /root/tools/rp/./src/inc/macho_struct.hpp:358:85: error: template argument 2 is invalid /root/tools/rp/./src/inc/macho_struct.hpp:359:5: error: expected unqualified-id before ‘{’ token { ^ /root/tools/rp/src/macho.cpp:106:1: error: expected ‘}’ at end of input } ^ In file included from /root/tools/rp/./src/inc/macho.hpp:23:0, from /root/tools/rp/src/macho.cpp:20: /root/tools/rp/./src/inc/macho_struct.hpp: In member function ‘void MachoArchLayout::fill_structures(std::ifstream&)’: /root/tools/rp/./src/inc/macho_struct.hpp:317:21: error: ‘shared_ptr’ is not a member of ‘std’ std::shared_ptr<RP_SEGMENT_COMMAND> seg_cmd = std::make_shared<RP_SEGMENT_COMMAND>(); ^ /root/tools/rp/./src/inc/macho_struct.hpp:317:57: error: spurious ‘>>’, use ‘>’ to terminate a template argument list std::shared_ptr<RP_SEGMENT_COMMAND> seg_cmd = std::make_shared<RP_SEGMENT_COMMAND>(); ^ /root/tools/rp/./src/inc/macho_struct.hpp:317:60: error: expected primary-expression before ‘seg_cmd’ std::shared_ptr<RP_SEGMENT_COMMAND> seg_cmd = std::make_shared<RP_SEGMENT_COMMAND>(); ^ /root/tools/rp/./src/inc/macho_struct.hpp:319:38: error: ‘segcmd’ was not declared in this scope file.read((char)seg_cmd.get(), sizeof(RP_SEGMENT_COMMAND)); ^ /root/tools/rp/./src/inc/macho_struct.hpp:320:21: error: ‘seg_commands’ was not declared in this scope seg_commands.push_back(seg_cmd); ^ /root/tools/rp/./src/inc/macho_struct.hpp:322:66: error: there are no arguments to ‘_stricmp’ that depend on a template parameter, so a declaration of ‘_stricmp’ must be available [-fpermissive] if(stricmp((char)seg_cmd->segname, "TEXT") == 0) ^ /root/tools/rp/./src/inc/macho_struct.hpp:322:66: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated) /root/tools/rp/./src/inc/macho_struct.hpp:333:25: error: ‘shared_ptr’ is not a member of ‘std’ std::shared_ptr<RP_SECTION> sect = std::make_shared<RP_SECTION>(); ^ /root/tools/rp/./src/inc/macho_struct.hpp:333:53: error: spurious ‘>>’, use ‘>’ to terminate a template argument list std::shared_ptr<RP_SECTION> sect = std::make_shared<RP_SECTION>(); ^ /root/tools/rp/./src/inc/macho_struct.hpp:333:56: error: expected primary-expression before ‘sect’ std::shared_ptr<RP_SECTION> sect = std::make_shared<RP_SECTION>(); ^ /root/tools/rp/./src/inc/machostruct.hpp:335:42: error: ‘sect’ was not declared in this scope file.read((char)sect.get(), sizeof(RP_SECTION)); ^ /root/tools/rp/./src/inc/macho_struct.hpp:336:25: error: ‘sections’ was not declared in this scope sections.push_back(sect); ^ In file included from /root/tools/rp/./src/inc/macho.hpp:23:0, from /root/tools/rp/src/macho.cpp:20: /root/tools/rp/./src/inc/macho_struct.hpp: At global scope: /root/tools/rp/./src/inc/machostruct.hpp:356:5: error: expected unqualified-id at end of input } ^ CMakeFiles/rp-lin-x64.dir/build.make:57: recipe for target 'CMakeFiles/rp-lin-x64.dir/src/macho.cpp.o' failed make[2]: ** [CMakeFiles/rp-lin-x64.dir/src/macho.cpp.o] Error 1 CMakeFiles/Makefile2:63: recipe for target 'CMakeFiles/rp-lin-x64.dir/all' failed make[1]: * [CMakeFiles/rp-lin-x64.dir/all] Error 2 Makefile:75: recipe for target 'all' failed make: * [all] Error 2 :( rp # /usr/bin/c++ -std=c++0x -Wall -O2 -static -s -Wl,-z,relro,-z,now -fstack-protector-all -m64 -O3 -DNDEBUG -I/root/tools/rp/./src/inc -I/root/tools/rp/./lib/beaengine/inc -I/root/tools/rp/./lib/argtable2/inc -I/root/tools/rp/./lib/capstone/inc -o CMakeFiles/rp-lin-x64.dir/src/macho.cpp.o -c /root/tools/rp/src/macho.cpp In file included from /root/tools/rp/./src/inc/macho.hpp:23:0, from /root/tools/rp/src/macho.cpp:20: /root/tools/rp/./src/inc/macho_struct.hpp: In member function ‘void MachoArchLayout::fill_structures(std::ifstream&)’: /root/tools/rp/./src/inc/macho_struct.hpp:322:66: error: there are no arguments to ‘_stricmp’ that depend on a template parameter, so a declaration of ‘_stricmp’ must be available [-fpermissive] if(stricmp((char)seg_cmd->segname, "TEXT") == 0) ^ /root/tools/rp/./src/inc/macho_struct.hpp:322:66: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated) /root/tools/rp/./src/inc/macho_struct.hpp: In instantiation of ‘void MachoArchLayout::fill_structures(std::ifstream&) [with T = unsigned int; std::ifstream = std::basic_ifstream]’: /root/tools/rp/src/macho.cpp:106:1: required from here /root/tools/rp/./src/inc/macho_struct.hpp:322:66: error: ‘_stricmp’ was not declared in this scope In file included from /root/tools/rp/./src/inc/macho.hpp:23:0, from /root/tools/rp/src/macho.cpp:20: /root/tools/rp/./src/inc/macho_struct.hpp: In instantiation of ‘std::vectorstd::shared_ptr
MachoArchLayout::get_executable_section(std::ifstream&) [with T = unsigned int; std::ifstream = std::basic_ifstream]’: /root/tools/rp/src/macho.cpp:106:1: required from here /root/tools/rp/./src/inc/macho_struct.hpp:371:17: error: cannot bind packed field ‘(& it.gnu_cxx::normal_iterator<_Iterator, Container>::operator<const std::shared_ptr<RPSECTION >, std::vector<std::shared_ptr<RP_SECTION >, std::allocator<std::shared_ptr<RP_SECTION > > > >())->std::shared_ptr<RP_SECTION >::.std::shared_ptr<_Tp, _Lp>::operator-><RP_SECTION, (gnu_cxx::_Lock_policy)2u>()->RP_SECTION::offset’ to ‘unsigned int&’ ); ^ In file included from /root/tools/rp/./src/inc/macho.hpp:23:0, from /root/tools/rp/src/macho.cpp:20: /root/tools/rp/./src/inc/macho_struct.hpp: In instantiation of ‘void MachoArchLayout::fill_structures(std::ifstream&) [with T = long long unsigned int; std::ifstream = std::basic_ifstream]’: /root/tools/rp/src/macho.cpp:106:1: required from here /root/tools/rp/./src/inc/macho_struct.hpp:322:66: error: ‘_stricmp’ was not declared in this scope if(stricmp((char)seg_cmd->segname, "TEXT") == 0) ^ In file included from /root/tools/rp/./src/inc/macho.hpp:23:0, from /root/tools/rp/src/macho.cpp:20: /root/tools/rp/./src/inc/macho_struct.hpp: In instantiation of ‘std::vectorstd::shared_ptr
MachoArchLayout::get_executable_section(std::ifstream&) [with T = long long unsigned int; std::ifstream = std::basic_ifstream]’: /root/tools/rp/src/macho.cpp:106:1: required from here /root/tools/rp/./src/inc/macho_struct.hpp:371:17: error: cannot bind packed field ‘(& it.gnu_cxx::__normal_iterator<_Iterator, Container>::operator<const std::shared_ptr<RPSECTION >, std::vector<std::shared_ptr<RP_SECTION >, std::allocator<std::shared_ptr<RP_SECTION > > > >())->std::shared_ptr<RP_SECTION >::.std::shared_ptr<_Tp, _Lp>::operator-><RP_SECTION, (gnu_cxx::_Lock_policy)2u>()->RP_SECTION::offset’ to ‘unsigned int&’ ); ^

Thanks.

— Reply to this email directly or view it on GitHubhttps://github.com/0vercl0k/rp/issues/1 .

0vercl0k commented 10 years ago

Hello again,

You should be now able to build rp on linux x86/amd64 with this revision: https://github.com/0vercl0k/rp/tree/891ebb07c0bacf5342dd8ad83c3d37192fd413b3 ; if not ping me :). Although, keep in mind this is not an "official" release, I haven't made enough testing to be sure all is running smoothly so use it at your own risk!

Cheers, 0vercl0k

zTrix commented 10 years ago

Hi, I can compile now. Thank you very much!

Still a little problem here. When I run

$ cd rp
$ cmake -f CmakeLists.txt
$ make

I have to apply the following patch to make it able to find the libs (beaengine, argtable and capstone)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 65d30f2..ec01585 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -86,19 +86,19 @@ add_executable(
 add_library(beaengine STATIC IMPORTED)
 set_property(
     TARGET beaengine PROPERTY
-    IMPORTED_LOCATION ../lib/beaengine/bin/${BEA_LIBRARY}
+    IMPORTED_LOCATION ./lib/beaengine/bin/${BEA_LIBRARY}
 )

 add_library(argtable2 STATIC IMPORTED)
 set_property(
     TARGET argtable2 PROPERTY
-    IMPORTED_LOCATION ../lib/argtable2/bin/${ARGTABLE_LIBRARY}
+    IMPORTED_LOCATION ./lib/argtable2/bin/${ARGTABLE_LIBRARY}
 )

 add_library(capstone STATIC IMPORTED)
 set_property(
     TARGET capstone PROPERTY
-    IMPORTED_LOCATION ../lib/capstone/bin/${CAPSTONE_LIBRARY}
+    IMPORTED_LOCATION ./lib/capstone/bin/${CAPSTONE_LIBRARY}
 )

 target_link_libraries(

And strange enough, the generated rp-lin-x64 is put into "../bin/". Why does this happen?

0vercl0k commented 10 years ago

Cool! I guess your issue is from where you are invoking CMake ; you should create let's say a directory "build" at the root of the rp++ tree & from there you can launch cmake .. && make :) That should fix your problems!

Cheers, 0vercl0k

2014-05-19 11:57 GMT+01:00 Wenlei Zhu notifications@github.com:

Hi, I can compile now. Thank you very much!

Still a little problem here. When I run

$ cd rp $ cmake -f CmakeLists.txt $ make

I have to apply the following patch to make it able to find the libs (beaengine, argtable and capstone)

diff --git a/CMakeLists.txt b/CMakeLists.txtindex 65d30f2..ec01585 100644--- a/CMakeLists.txt+++ b/CMakeLists.txt@@ -86,19 +86,19 @@ add_executable( add_library(beaengine STATIC IMPORTED) set_property( TARGET beaengine PROPERTY- IMPORTED_LOCATION ../lib/beaengine/bin/${BEA_LIBRARY}+ IMPORTED_LOCATION ./lib/beaengine/bin/${BEA_LIBRARY} )

add_library(argtable2 STATIC IMPORTED) set_property( TARGET argtable2 PROPERTY- IMPORTED_LOCATION ../lib/argtable2/bin/${ARGTABLE_LIBRARY}+ IMPORTED_LOCATION ./lib/argtable2/bin/${ARGTABLE_LIBRARY} )

add_library(capstone STATIC IMPORTED) set_property( TARGET capstone PROPERTY- IMPORTED_LOCATION ../lib/capstone/bin/${CAPSTONE_LIBRARY}+ IMPORTED_LOCATION ./lib/capstone/bin/${CAPSTONE_LIBRARY} )

target_link_libraries(

And strange enough, the generated rp-lin-x64 is put into "../bin/". Why does this happen?

— Reply to this email directly or view it on GitHubhttps://github.com/0vercl0k/rp/issues/1#issuecomment-43488755 .

zTrix commented 10 years ago

Very good. I'll try that.

Thanks again.

0vercl0k commented 10 years ago

I'll make sure to include a build directory with a little script that lanches cmake .. && make in the next release ; it will be clearer for everyone like that :)

2014-05-19 12:12 GMT+01:00 Wenlei Zhu notifications@github.com:

Closed #1 https://github.com/0vercl0k/rp/issues/1.

— Reply to this email directly or view it on GitHubhttps://github.com/0vercl0k/rp/issues/1#event-122411751 .