To make progress in the meantime, replace those 32 bits by the two instructions
     mov r0,#0
     mov r1,#0
which clear general registers r0 and r1.  This is a guess that zeroes
mean "this CPU has no such hardware assist".  The libcrypto software
will choose slower but equivalent code, instead of using
any special hardware assist.

How do I "replace" those 32 bits with instructions before the library is loaded 
at run-time ?

If you have the source for libcrypto.so.1.1, which is in software package 
openssl-1.1.0h
(or openssl-libs-1.1.0h depending on your Linux distro) then in file 
crypto/armv4cpuid.pl
change to:
=====
_armv7_tick:
#ifdef  __APPLE__
        mrrc    p15,0,r0,r1,c14         @ CNTPCT
#else
     @  mrrc    p15,1,r0,r1,c14         @ CNTVCT  <<< COMMENTED OUT
        mov r0,#0    @ replacement for valgrind-3.13
        mov r1,#0    @ replacement for valgrind-3.13
#endif
        bx      lr
=====
Build from the modified source, and install the modified shared library.

If you don't have source, then use a hex (binary) editor such as hexedit.
Assemble a one-instruction program "mov r0,#0", then over-write the bytes
for "mrrc p15,1,r0,r1,cr14" with the bytes for "mov r0,#0".  If the code
is 32-bit ARM mode, then that's all there is to do.  If the code is 16-bit
Thumb mode, then over-write the second 16-bit word with "mov r1,#0".
Your initial report said "(thumb)", but perhaps that is inaccurate.


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to