0

v8 を ARM 用にコンパイルしたところ、arm6/7 の携帯電話の大部分で正常に読み込まれました。ネイティブ ライブラリをロードすると、HTC Wildfire S などの特定のデバイスがクラッシュします。

これはSIGILL私が得る(無効な命令)です:

31-31/? I/DEBUG﹕ *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
31-31/? I/DEBUG﹕ Build fingerprint: 'generic/sdk/generic/:2.2/FRF91/43546:eng/test-keys'
31-31/? I/DEBUG﹕ pid: 312, tid: 312  >>> org.myapp <<<
31-31/? I/DEBUG﹕ signal 4 (SIGILL), fault addr 81494f98
31-31/? I/DEBUG﹕ r0 00000001  r1 00000003  r2 81494f8e  r3 81494f8c
31-31/? I/DEBUG﹕ r4 8198a26c  r5 00000003  r6 00000004  r7 00000000
31-31/? I/DEBUG﹕ r8 42189eac  r9 00000374  10 0000ce04  fp bef6765c
31-31/? I/DEBUG﹕ ip 8124695c  sp bef67658  lr b0001169  pc 81494f98  cpsr 80000010
31-31/? I/DEBUG﹕ #00  pc 00494f98  /data/data/org.myapp/lib/libjv8.so

クラッシュしている v8 の特定の行を取得するために使用できますndk-stackが、実際にはマクロを参照しているため、どの特定の命令が実行されているのかわかりません。

でデバイスに接続しようとしましたgdb-serverが、指示の詳細がわかりません:

Program received signal SIGILL, Illegal instruction.
0x81494f98 in ?? ()

だから私は少し迷っています。0x81494f98特定の ARM 命令に変換する方法はありますか?

4

1 に答える 1