2016-09-23 4 views
1

いくつかのQを読んでいました& OpenSSLは、cpuがそれらをサポートしているかどうかをテストするために、SIGILLの原因となるテストを試みます。しかし、これらの回答は通常、OPはgdbの下でアプリケーションを実行していたと述べていますが、私はそうではありません。 OpenSSLライブラリを呼び出すたびにOpenSSLを使用するとOpenWrt MIPSルータのアプリケーションが実際にクラッシュします。クラッシュはillegal instructionです。私は実際にバックトレースを持っていませんが、私のアプリはデバッグビルドです。 UbuntuとMacOS上でうまく動作します。 私の実行可能ファイルとsslの両方のライブラリが同じCPUアーキテクチャであることを確認しました。 cat /proc/cpuinfoOpenSSLのSIGILLによるクラッシュを修正しました

結果:

system type    : Atheros AR9330 rev 1 
machine     : 8devices Carambola2 board 
processor    : 0 
cpu model    : MIPS 24Kc V7.4 
BogoMIPS    : 265.42 
wait instruction  : yes 
microsecond timers  : yes 
tlb_entries    : 16 
extra interrupt vector : yes 
hardware watchpoint  : yes, count: 4, address/irw mask: [0x0ffc, 0x0ffc, 0x0ffb, 0x0ffb] 
isa      : mips1 mips2 mips32r1 mips32r2 
ASEs implemented  : mips16 
shadow register sets : 1 
kscratch registers  : 0 
package     : 0 
core     : 0 
VCED exceptions   : not available 
VCEI exceptions   : not available 

何私を心配することは、その名前で34kcに言及toolchain-mips_34kc_gcc-5.2.0_musl-1.1.11そのツールチェーンです。私はそれが24 KcのCPUのためのこのツールチェーンで構築することは大丈夫かどうか疑問に思います。 openssl以外のすべてがうまく動作します。

私はそれを修正するためのオプションは何ですか?

+0

私はMIPSについてよく分かりませんが、異なるCPUモデル(24Kcと34Kc)が異なる命令をサポートする可能性が高いことを示唆しています(特に、34Kcは24Kcではサポートしない命令をサポートする可能性があります)。 – davmac

+0

経験から言えば、Debian/Ubuntuのクロスコンパイラは時々壊れていて、私はそれらをまったく犠牲にすることなく避けます。 Caviumにはクロスコンパイラがありますか? 'SIGILL'ハンドラがインストールされていなければなりません。 (1)クロスコンパイルされたコードが悪く、 'SIGILL'がOpenSSLとは無関係です(アプリケーションのスタートアップコード)。(2)OpenWRTが問題でシグナルが正しく処理されていない、(3)OpenSSLの設定とビルドが悪い。この時点では本当に難しいです。意見をいただき、ありがとうございます。 – jww

+0

@jww私はログでssl呼び出しを追跡したので、ssl呼び出しはありません。状況は正常です。私はこのツールチェーンを使ってアプリケーションをコンパイルしました。ツールチェーンのopenssl libはスムーズに動かないので、ツールチェーンは公式のものではないと思います。ですから、私がopensslライブラリを公式のもの(ボードベンダからのもの)に置き換えたとき、問題はなくなりました。しかし、あなたが言ったことを覚えておいてください。 – rightaway717

答えて

0

問題は何か分かりませんが、ツールチェーンに含まれているopensslライブラリでアプリケーションが動作せず、ターゲットボードにコピーされました。 libopensslが公式のcarambola2 reposからopkg経由でインストールされた場合、問題はなくなりました。だから、いくつかの非互換性があったに違いない。

関連する問題