UNIX使いなのにプログラミングできないヤシat UNIX
UNIX使いなのにプログラミングできないヤシ - 暇つぶし2ch805:名無しさん@お腹いっぱい。
13/09/14 17:51:53.43 .net
質問です。
共有ライブラリのダイナミックシンボルを実行時に解決する際、
プログラムのtext部分は原則書き換え不可なので、
data部分のみ書き換えて対応しますよね。
実際、関数呼出しについてはdata上の番地を一旦呼んで
そこから間接ジャンプするようになってます。
問題は、extern char *hoge[] みたいなデータが共有ライブラリ側にあって
それをプログラム側から hoge のシンボルで参照する時です。
コンパイル結果では、hogeのアドレス値はイミーディエイトでレジスタにロード
されているようで、これではシンボル解決の際に命令コードのイミーディエイト部分、
つまりtext部分を書き換えないといけないことになってしまいます。
それはおかしいと思いますが、実際にはどうやっているのでしょうか?


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch