2016-05-05 5 views

答えて

2

戻り値は、不透明なvoid *ポインタですが、実際にはstruct link_mapへのポインタです。

ソースをglibcにする必要があります。 サブディレクトリ、link.hファイル、struct linkの定義を参照してください。

しかし、そこにいる間に、ちょっと見て、どれくらいのコードが実装されているかをdlopendlsym、などで確認してください。 al。あなたが心配する必要がある他の多くの構造体があります。これはちょうど氷山の先端です。

私が達成しようとしているのは、擬似構造を使って適切なメモリアライメントとアクセスメンバーを強制するサンプルコードです。

それはあなたが達成しようとしているものを説明したかのように役立つかもしれない:

「これらはドロイドではありませんあなたが探している」私はあなたが適切に強制的に何を意味するかわからないんだけどメンバにアクセスするためのメモリの整列。なぜあなたはアラインメントを強制する必要がありますか?そして、あなたはどんなメンバーを指していますか?

+0

これは、 'struct link_map'へのポインタです。これは共有オブジェクトのリストを繰り返し処理できるように、私は全部取得したいものです。ありがとう。 – John

+1

もっとチェックしました。 'link.h' [と' elf.h']は '/ usr/include'にありますので、もっと簡単かもしれません。これはまた、元のポインタが不透明である間に、それを再キャストすることは、幾分(すなわち、エキスパートレベルの)サポートされたアクションであることを意味する。また、 'dl_interate_phdr'を参照してください。とにかく、glibcのelfサブディレクトリには、ガイドとして役立つたくさんのコードがあります。 –

+0

素晴らしいdl_iterate_phdrは私に必要なものです。 – John

1

filenameがnullであるかどうかにかかわらず、dlopenは、dlsymdlcloseに渡すことができる不透明なハンドルを返します。ハンドルのデータを自分で調べてはいけません。

+0

なぜですか?私が達成しようとしているところでは、擬似構造を使って適切なメモリアライメントとアクセスメンバーを強制するサンプルコードを見てきました。私はこれを使うのが好きなので、公式な構造がどうなっているのか不思議です。 – John

関連する問題