Compilation problem
Hi, when I try to compile Maple with GCC 4.9.2, I get the following error message. Any ideas what's going wrong? Thanks!
g++ -fPIC -D_GNU_SOURCE -D_USING_DEBUG_INFO -Wall -Werror -g -D_DEBUG -I/home/mch11220/pin-2.14-71313-gcc.4.4.7-linux/source/include/pin -I/home/mch11220/pin-2.14-71313-gcc.4.4.7-linux/source/include/pin/gen -I/home/mch11220/pin-2.14-71313-gcc.4.4.7-linux/extras/components/include -I/home/mch11220/pin-2.14-71313-gcc.4.4.7-linux/extras/xed-intel64/include -I/home/mch11220/pin-2.14-71313-gcc.4.4.7-linux/source/tools/InstLib -DBIGARRAY_MULTIPLIER=1 -Wall -Werror -Wno-unknown-pragmas -fno-stack-protector -DTARGET_IA32E -DHOST_IA32E -fPIC -DTARGET_LINUX -I/home/mch11220/pin-2.14-71313-gcc.4.4.7-linux/source/include/pin -I/home/mch11220/pin-2.14-71313-gcc.4.4.7-linux/source/include/pin/gen -I/home/mch11220/pin-2.14-71313-gcc.4.4.7-linux/extras/components/include -I/home/mch11220/pin-2.14-71313-gcc.4.4.7-linux/extras/xed-intel64/include -I/home/mch11220/pin-2.14-71313-gcc.4.4.7-linux/source/tools/InstLib -O0 -g -Isrc/ -I/usr/local/include -c -o build-debug/tracer/profiler.o src/tracer/profiler.cpp
In file included from src/core/execution_control.hpp:37:0,
from src/tracer/profiler.hpp:23,
from src/tracer/profiler.cpp:20:
src/core/wrapper.hpp: In member function ‘void Wrapper<W, void()>::CallOriginal()’:
src/core/wrapper.hpp:172:23: error: cannot convert ‘LEVEL_VM::PARG_T’ to ‘LEVEL_VM::CALL_APPLICATION_FUNCTION_PARAM_’ for argument ‘5’ to ‘LEVEL_BASE::VOID LEVEL_PINCLIENT::PIN_CallApplicationFunction(const CONTEXT_, LEVEL_VM::THREADID, LEVEL_VM::CALLINGSTD_TYPE, LEVEL_BASE::AFUNPTR, LEVEL_VM::CALL_APPLICATION_FUNCTION_PARAM*, ...)’
PIN_PARG_END());
^
src/core/wrapper.hpp:285:5: note: in expansion of macro ‘CALL_ORIGINAL_NORET’
CALL_ORIGINAL_NORET(NUM_ARGS);
^
src/core/wrapper.hpp:322:1: note: in expansion of macro ‘WRAPPER_TEMPLATE_NORET’
WRAPPER_TEMPLATE_NORET(0);
^
Makefile:121: recipe for target 'build-debug/tracer/profiler.o' failed
It compiles with Pin 2.14 Rev 67254. However, when trying to run the shared_counter example as described in the README, the following error message is emitted:
Traceback (most recent call last):
File "/home/mch11220/Downloads/maple-1.1.0/script/maple/idiom/main.py", line 1207, in
Anyone here for Pin error: cannot convert ‘LEVEL_VM::PARG_T’ to ‘LEVEL_VM::CALL_APPLICATION_FUNCTION_PARAM_’ for argument ‘5’, the quick fix is to add a NULL in after the function pointer.
Relevant documentation. The missing argument:
[in] | param | Additional parameters to define the exact behavior of this function invocation (or NULL for using the defaults)
@TACIXAT Hello, I encountered the same problem and read your answer. However, I didn't fully understand it. Can you please give me an example? Thank you.
@ShadowLL It's been two years, but my understanding is the fifth argument to the call can be null. Recent documentation link. Seriously though, just use DynamoRIO, it is much better than Pin.
Example here - https://github.com/sarabjeetsingh007/sniper-7.2-debug/blob/84495873c991308a7441b5b1db1a64f8ec2da538/sift/recorder/emulation.cc#L146 (see the NULL in the fifth argument)