目次: Linux
自作ARMエミュレータ、Linux起動してinitramfs上の /initをexecveするところで必ず失敗するので調べてたら、
do_execve_common() → load_elf_binary() → padzero() → clear_user() → access_ok() → __range_ok()
ときて失敗し、結果的にEFAULTが返っていました。
range_okは常に失敗するわけでもないのが不思議で、さらに調べたらsbc, rsc命令のキャリーフラグ(Cフラグ)のエミュレーションが間違っていて、本来は成功なのに失敗を返す場合があることがわかりました。
うーん、パッと見ではわからん…。けど、これで2日間も悩んでいた俺って一体…。
メモ: 技術系?の話はFacebookから転記しておくことにした。
< | 2014 | > | ||||
<< | < | 08 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | - | 1 | 2 |
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 | - | - | - | - | - | - |
合計:
本日:
管理者: Katsuhiro Suzuki(katsuhiro( a t )katsuster.net)
This is Simple Diary 1.0
Copyright(C) Katsuhiro Suzuki 2006-2023.
Powered by PHP 8.2.20.
using GD 2.3.3(png support.)