動的リンク、遅延バインドについて

遅延バインドについて
@plt一行目 : jmp (.got.pltを参照するアドレス)
@plt二行目 : push (.rel.pltの中の書き換えが必要な行数)
@plt三行目 : jmp (.pltセクションの先頭)
.pltセクション一行目 : push (動的リンクの際に必要なパラメータ)
.pltセクション二行目 : jmp (動的リンカのアドレス)

ELFのセクションについて

たぶんこんな感じなんだと思う。たぶん。

 

ELFヘッダ : MagicNumber, bit, エンディアン, CPU, 後続のヘッダへのポインタ

プログラムヘッダ : ローダのための情報。つまりセグメントの情報と動的リンク関係が格納。
.interp : インタープリタのファイルパスが格納
.hash : ハッシュ値とシンボルアドレスのハッシュテーブル。
.dynsym : .hashでハッシュ化されたシンボル名(ハッシュ値)とシンボル情報(シンボルアドレスやシンボル名など)のテーブル。
.dynstr : .dynsymから参照したシンボル名が格納。.dynamicから参照した共有ライブラリのファイル名が格納。
.rel.plt : 動的リンクのために書き換えが必要なアドレス(.plt一行目のアドレス)とシンボル情報のリスト。
.plt : .textから共有ライブラリ内の関数へ飛ぶ際の中継点。
.text : 機械語コードが格納。
.dynamic : 動的リンクに必要な情報が格納。共有ライブラリの名前や.hashのアドレス、.dynstrのアドレス、.dynstrのサイズなどなど。
.got.plt : .plt一行目のjmp先のアドレス(書き換え先アドレス)と共有ライブラリ内の関数のアドレス(書き換えアドレス)のテーブル
.shstrtab : セクション名の文字列リスト。
セクションヘッダ : セクションの情報が格納。

 

vimのプラグイン導入方法が書いてあるおすすめのサイト

qiita.com

個人的にここがめちゃくちゃわかりやすかったです。

基本的に、このサイトに書いてあることをvimrcにコピペするだけでできました。

導入コードをvimrcにコピペすることで次回のvim起動でneobundleがインストールされます。

追加でプラグインを入れたい場合は、

neobundle#beginからneobundle#endの間に、

インストールコードをコピペして、再びvimを起動しましょう。

neobundleのエラー対処 : Error detected while processing function ... Can't create file系

neobundleでプラグインをインストールする際、

"Error detected while processing function ..."

"[neobundle] Vim(return):E482: Can't create file /home/miya/.vim/bundle/.neobundle/doc/screenshot.gif"

といったような、Can't create file系のエラーが多発することがある。

これは、そのエラーが出たパスをchownでrootから一般ユーザーに変更してやることで対処できる。

"sudo vim" is detected. This feature is disabled.

どうやらneobundleでなんらかのプラグインをインストールする際には、rootでやってはいけないらしい。

exitしてsudoをつけずにインストールしよう。

 このエラーとセットで出ることが多いエラーが存在する。

それは以下の記事でまとめた。

 

ta1se1.hatenablog.com

 

rmで削除してしまったファイルの復元方法(ext3/ext4)

ext4magicを用いる。

# apt-get -y install ext4magic

# cd ~/Downloads

# mkdir ext4magic

# cd ext4magic

wget http://downloads.sourceforge.net/project/ext4magic/ext4magic-0.3.2.tar.gz

# tar xzvf ext4magic-0.3.2.tar.gz

# cd ext4magic-0.3.2

# ./configure

以上でext4magicの導入完了

# df -hT

削除してしまったファイルが存在するファイルシステムを確認

# cd [削除してしまったファイルが存在するファイルシステム以外のファイルシステムのパス]

# ext4magic [削除してしまったファイルが存在するファイルシステム名] -l | grep [削除してしまったファイルのパスまたはファイル名]

# ext4magic [削除してしまったファイルが存在するファイルシステム名] -L | grep [削除してしまったファイルのパスまたはファイル名]

以上でリストに出力されれば、復元可能である。

# ext4magic [削除してしまったファイルが存在するファイルシステム名] -r -f [削除してしまったファイルのパス(リストに出力されたパス)]

これで、カレントディレクトリに作成されたRECOVERDIRの中に復元されている。

 

Enjoy!