JonathanSalwan / Triton

Triton is a dynamic binary analysis library. Build your own program analysis tools, automate your reverse engineering, perform software verification or just emulate code.
https://triton-library.github.io
Apache License 2.0
3.39k stars 524 forks source link

Building errors on python3.12 #1317

Closed mostobriv closed 1 month ago

mostobriv commented 3 months ago

Trying to build with python 3.12 fails with errors:

...
[ 84%] Building CXX object src/libtriton/CMakeFiles/triton.dir/bindings/python/objects/pyTritonContext.cpp.o
[ 85%] Building CXX object src/libtriton/CMakeFiles/triton.dir/bindings/python/pyXFunctions.cpp.o
[ 86%] Building CXX object src/libtriton/CMakeFiles/triton.dir/bindings/python/utils.cpp.o
/Users/mstanchin/share/git-reps/Triton/src/libtriton/bindings/python/utils.cpp:47:40: error: no member named 'ob_digit' in '_longobject'
          x = (x << PyLong_SHIFT) | v->ob_digit[i];
                                    ~  ^
/Users/mstanchin/share/git-reps/Triton/src/libtriton/bindings/python/utils.cpp:76:40: error: no member named 'ob_digit' in '_longobject'
          x = (x << PyLong_SHIFT) | v->ob_digit[i];
                                    ~  ^
/Users/mstanchin/share/git-reps/Triton/src/libtriton/bindings/python/utils.cpp:105:40: error: no member named 'ob_digit' in '_longobject'
          x = (x << PyLong_SHIFT) | v->ob_digit[i];
                                    ~  ^
/Users/mstanchin/share/git-reps/Triton/src/libtriton/bindings/python/utils.cpp:134:40: error: no member named 'ob_digit' in '_longobject'
          x = (x << PyLong_SHIFT) | v->ob_digit[i];
                                    ~  ^
/Users/mstanchin/share/git-reps/Triton/src/libtriton/bindings/python/utils.cpp:163:40: error: no member named 'ob_digit' in '_longobject'
          x = (x << PyLong_SHIFT) | v->ob_digit[i];
                                    ~  ^
/Users/mstanchin/share/git-reps/Triton/src/libtriton/bindings/python/utils.cpp:192:40: error: no member named 'ob_digit' in '_longobject'
          x = (x << PyLong_SHIFT) | v->ob_digit[i];
                                    ~  ^
/Users/mstanchin/share/git-reps/Triton/src/libtriton/bindings/python/utils.cpp:221:40: error: no member named 'ob_digit' in '_longobject'
          x = (x << PyLong_SHIFT) | v->ob_digit[i];
                                    ~  ^
/Users/mstanchin/share/git-reps/Triton/src/libtriton/bindings/python/utils.cpp:251:23: error: no member named 'ob_digit' in '_longobject'
        digit* p = v->ob_digit;
                   ~  ^
/Users/mstanchin/share/git-reps/Triton/src/libtriton/bindings/python/utils.cpp:288:23: error: no member named 'ob_digit' in '_longobject'
        digit* p = v->ob_digit;
                   ~  ^
/Users/mstanchin/share/git-reps/Triton/src/libtriton/bindings/python/utils.cpp:328:23: error: no member named 'ob_digit' in '_longobject'
        digit* p = v->ob_digit;
                   ~  ^
/Users/mstanchin/share/git-reps/Triton/src/libtriton/bindings/python/utils.cpp:361:23: error: no member named 'ob_digit' in '_longobject'
        digit* p = v->ob_digit;
                   ~  ^
/Users/mstanchin/share/git-reps/Triton/src/libtriton/bindings/python/utils.cpp:394:23: error: no member named 'ob_digit' in '_longobject'
        digit* p = v->ob_digit;
                   ~  ^
/Users/mstanchin/share/git-reps/Triton/src/libtriton/bindings/python/utils.cpp:427:23: error: no member named 'ob_digit' in '_longobject'
        digit* p = v->ob_digit;
                   ~  ^
13 errors generated.
make[2]: *** [src/libtriton/CMakeFiles/triton.dir/bindings/python/utils.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [src/libtriton/CMakeFiles/triton.dir/all] Error 2
make: *** [all] Error 2

AFAIK there is some changes in ABI in 3.12.

It can be fixed if i compile with older python headers, but as there is no specific version requirement in readme, thought it would be handy to highlight this in issue.