2017-02-01 2 views
0

Я запутываю многие проекты GitHub с помощью o-llvm. Это компилятор времени, реализованный в clang. С o-llvm я пытаюсь скомпилировать/obfuscate проект GitHub, который использует libtool, но флаги, необходимые для указания преобразования обфускации, помешают компоновщику.Libtool/clang: позвольте мне передать аргументы компилятору, но не линкеру

Дополнительные флаги, которые я проезжаю, как:

/path/to/obfuscator/clang -O0 -mllvm -bcf -mllvm -boguscf-loop=1 -mllvm -ann 

-bcf средства применяют фиктивный контроль преобразование потока, пределы -boguscf-петля, сколько раз он бежит за базовый блок и -ann указует аннотируйте основные блоки с помощью выражений printf.

Сначала я попытался сделать это на этапе макияж после Configure:

make CC=/path/to/obfuscator/clang CFLAGS="-O0 -mllvm -bcf -mllvm -boguscf-loop=1 -mllvm -ann 

Но НКУ был компоновщик и не удалось, поскольку он не знал опцию «-mllvm». Libtool также автоматически удалены "-bcf" "-boguscf-петля = 1" и "-ann" варианты

В другом проекте, откинувшись для настройки и определения CFLAGS в ЦК работал:

./configure CC="/path/to/obfuscator/clang -O0 -mllvm -bcf -mllvm -boguscf-loop=1 -mllvm -ann" 

Этот делает «линкер» быть лязгом, признающей вариант «-mllvm», но Libtool удаления соответствующих флагов все еще путает призывание:

[...] -O0 -mllvm -mllvm -mllvm -Wl,-z -Wl,defs -Wl,-soname [...] 
clang: warning: argument unused during compilation: '-mllvm -bcf' 
clang: warning: argument unused during compilation: '-mllvm -boguscf-loop=1' 
clang: warning: argument unused during compilation: '-mllvm -ann' 
clang: warning: argument unused during compilation: '-mllvm -mllvm' 
clang: warning: argument unused during compilation: '-mllvm -Wl,-z' 
/usr/bin/ld: error: cannot open defs: No such file or directory 

Я попытался Предварение моего компилятора только аргументы с -Wc, флага или -Xcompile bu t clang не признает ни того, ни другого.

Есть ли другой способ сообщить Libtool или Clang использовать аргументы обфускации для компиляции и не связывать?

спасибо.

ответ

0

Я пытался избежать этого, но я закончил тем, что модифицировал скрипт libtool, чтобы удалить -mllvm, как и другие опции обфускации во время связывания.

sed -i "s/-m\*|/-mtune=*|-march=*|-mcpu=*|-mfpmath=*|-masm=*|-mieee-fp|-mno-ieee-fp|-msoft-float|-mno-fp-ret-in-387|-mno-fancy-math-387|-malign-double|-mno-align-double|-m96bit-long-double|-m128bit-long-double|-mlarge-data-threshold=*|-mrtd|-mregparm=*|-msseregparm|-mpc32|-mpc64|-mpc80|-mstackrealign|-mpreferred-stack-boundary=*|-mincoming-stack-boundary=*|-mmmx|-mno-mmx|-msse|-mno-sse|-msse2|-mno-sse2|-msse3|-mno-sse3|-mssse3|-mno-ssse3|-msse4.1|-mno-sse4.1|-msse4.2|-mno-sse4.2|-msse4|-mno-sse4|-mavx|-mno-avx|-maes|-mno-aes|-mpclmul|-mno-pclmul|-msse4a|-mno-sse4a|-mfma4|-mno-fma4|-mxop|-mno-xop|-mlwp|-mno-lwp|-m3dnow|-mno-3dnow|-mpopcnt|-mno-popcnt|-mabm|-mno-abm|-mfused-madd|-mno-fused-madd|-mcld|-mcx16|-msahf|-mmovbe|-mcrc32|-mrecip|-mveclibabi=*|-mabi=*|-mpush-args|-mno-push-args|-maccumulate-outgoing-args|-mthreads|-mno-align-stringops|-minline-all-stringops|-minline-stringops-dynamically|-mstringop-strategy=*|-momit-leaf-frame-pointer|-mtls-direct-seg-refs|-mno-tls-direct-seg-refs|-msse2avx|-mno-sse2avx|-m32|-m64|-mno-red-zone|-mcmodel=*|-mcmodel=*|-mcmodel=*|-mcmodel=*|/g" libtool 

В основном, расширение -m * с каждым возможным значением из руководства GCC, минус -mllvm, который только лязг вещь. Теперь я могу автоматически компилировать vlc с произвольными вызовами, используя различные компиляторы как часть корпуса Chimera.

Смежные вопросы