-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Description
Tested using:
Clang 12.0.1 (Fedora 12.0.1-1.fc34)
Built zlib-ng from develop branch and ran the resulting example (basic self-tests) binary.
export SZ_CODE=1 SZ_LINK=0 SZ_HEAP=0 SZ_STACK=0 SZ_CLEAN=1
cmake -DCMAKE_VERBOSE_MAKEFILE=ON -DWITH_BENCHMARKS=OFF -DWITH_GTEST=OFF -DWITH_OPTIM=OFF -DWITH_NEW_STRATEGIES=OFF -DCMAKE_C_COMPILER=/home/hansr/github/stabilizer/szcc -DCMAKE_C_FLAGS="-Wall -Wpedantic -g3 -ggdb -O0" .`
gdb ./example
Program received signal SIGSEGV, Segmentation fault.
main (argc=1, argv=0x7fffffffde58) at /home/hansr/github/zlib/zlib-ng/test/example.c:960
960 if (zVersion()[0] != myVersion[0]) {
=> 0x00000000004040e4 <main+20>: ff 15 56 03 70 15 call *0x15700356(%rip) # 0x15b04440
This is the first line of actual code in main(), after variable definitions.
Did a little experiment to see whether adding a line above that with __asm__("nop"); would do anything at all.
#0 main (argc=1, argv=0x7fffffffde58) at /home/hansr/github/zlib/zlib-ng/test/example.c:962
962 if (zVersion()[0] != myVersion[0]) {
=> 0x00000000004040e5 <main+21>: ff 15 55 00 3a a0 call *-0x5fc5ffab(%rip) # 0xffffffffa07a4140
Not much changed, but the call address seems to be very random, unless there is a bit pattern I am not seeing.
Seems to me like something is still quite wrong somewhere in the Stabilizer plugin pass when it comes to patching the call addresses.
Metadata
Metadata
Assignees
Labels
No labels