Hi, > this patch solve the problem of Program terminated with signal 4, > Illegal instruction on cpu amd geode-lx and VIA Nehemiah?
Is it question or statement? > root@gatto:/tmp# openssl version > Illegal instruction (core dumped) Is it crash before of after? > root@gatto:/tmp# gdb -c core /usr/bin/openssl > GNU gdb (GDB) 7.4 > Program terminated with signal 4, Illegal instruction. > #0 0xb76bc1f3 in _init () from /usr/lib/libcrypto.so.0 > (gdb) disassemble > Dump of assembler code for function _init: > 0xb76bc1d0 <+0>: push %ebx > 0xb76bc1d1 <+1>: sub $0x8,%esp > 0xb76bc1d4 <+4>: call 0xb76bc840 > 0xb76bc1d9 <+9>: add $0x12c697,%ebx > 0xb76bc1df <+15>: mov -0x220(%ebx),%eax > 0xb76bc1e5 <+21>: test %eax,%eax > 0xb76bc1e7 <+23>: je 0xb76bc1ee <_init+30> > 0xb76bc1e9 <+25>: call 0xb76bc4d0 <__gmon_start__@plt> > 0xb76bc1ee <+30>: call 0xb76bc970 > => 0xb76bc1f3 <+35>: nopw %cs:0x0(%eax,%eax,1) Obviously CPUs in question can't handle this kind of nop. Formally it's binutils' fault, they should have been more conservative and not throw in the kind of nop that is not recognized universally. But it's easy to carry away in world of multiple x86 vendors, so it could not have been avoided... > 0xb76bc1fd <+45>: nopl (%eax) > 0xb76bc200 <+48>: call 0xb76bcc10 <OPENSSL_cpuid_setup> > 0xb76bc205 <+53>: jmp 0xb76bc210 <_init+64> > 0xb76bc207 <+55>: mov %esi,%esi > 0xb76bc209 <+57>: lea 0x0(%edi,%eiz,1),%edi > 0xb76bc210 <+64>: call 0xb7797110 > 0xb76bc215 <+69>: add $0x8,%esp > 0xb76bc218 <+72>: pop %ebx > 0xb76bc219 <+73>: ret > End of assembler dump. > (gdb) If the crash dump is before, then no, the commit in question did not fix the problem. If anything, http://cvs.openssl.org/chngview?cn=21588 did. ______________________________________________________________________ OpenSSL Project http://www.openssl.org Development Mailing List [email protected] Automated List Manager [email protected]
