Hi all: I am using Genode to do some SSL encryption stuff. My dev-board is i.MX6Quad running Genode 15.02. The OpenSSL version is 1.0.1i. I test the Crypto speed of OpenSSL in Genode. It's very slow( 7MB/s for aes-128-gcm) comparing to OpenSSL in Linux (16MB/s for aes-128-gcm). Genode's OpenSSL doesn't use the assembly code version of some critical crypto function. It disable this option in libcrypto.mk. If I do the same to Linux OpenSSL, the performance goes down to 9MB/s. So I enable this option in libcrypto.mk. use Genode compiler to compile it. Everything seems ok. No compiler/linker errors. But the program can not run. MMU exception occurs before the main program start. It seems that something goes wrong during the library loading. I am really confused. Why does Genode disable this assembly code option? ( I can only find a 1-sentence explaination on Genode release notes 12.08 http://genode.org/documentation/release-notes/12.08
Because libcrypto provides certain optimized assembler functions, which
unfortunately are not expressed with position-independent code, we removed this assembler code and build libcrypto with -DOPENSSL_NO_ASM
I guess the loader of Genode can not handle load-time relocation for shared library so all shared library must be position independent. Am I right?
Thank you.
-- Best wishes Vincent