はdlopen
ためman pageによると:ファイル名がNULLの場合dlopen(NULL、RTLD_NOW)によって返されたメインプログラムへのハンドルの構造体は何ですか?
、返されるハンドルはメイン プログラムのためです。
私の質問は、このハンドルのメインプログラムとそのヘッダーの構造は何ですか?ありがとう。
はdlopen
ためman pageによると:ファイル名がNULLの場合dlopen(NULL、RTLD_NOW)によって返されたメインプログラムへのハンドルの構造体は何ですか?
、返されるハンドルはメイン プログラムのためです。
私の質問は、このハンドルのメインプログラムとそのヘッダーの構造は何ですか?ありがとう。
戻り値は、不透明なvoid *
ポインタですが、実際にはstruct link_map
へのポインタです。
ソースをglibc
にする必要があります。 サブディレクトリ、link.h
ファイル、struct link
の定義を参照してください。
しかし、そこにいる間に、ちょっと見て、どれくらいのコードが実装されているかをdlopen
、dlsym
、などで確認してください。 al。あなたが心配する必要がある他の多くの構造体があります。これはちょうど氷山の先端です。
私が達成しようとしているのは、擬似構造を使って適切なメモリアライメントとアクセスメンバーを強制するサンプルコードです。
それはあなたが達成しようとしているものを説明したかのように役立つかもしれない:は
「これらはドロイドではありませんあなたが探している」私はあなたが適切に強制的に何を意味するかわからないんだけどメンバにアクセスするためのメモリの整列。なぜあなたはアラインメントを強制する必要がありますか?そして、あなたはどんなメンバーを指していますか?
filename
がnullであるかどうかにかかわらず、dlopen
は、dlsym
とdlclose
に渡すことができる不透明なハンドルを返します。ハンドルのデータを自分で調べてはいけません。
なぜですか?私が達成しようとしているところでは、擬似構造を使って適切なメモリアライメントとアクセスメンバーを強制するサンプルコードを見てきました。私はこれを使うのが好きなので、公式な構造がどうなっているのか不思議です。 – John
これは、 'struct link_map'へのポインタです。これは共有オブジェクトのリストを繰り返し処理できるように、私は全部取得したいものです。ありがとう。 – John
もっとチェックしました。 'link.h' [と' elf.h']は '/ usr/include'にありますので、もっと簡単かもしれません。これはまた、元のポインタが不透明である間に、それを再キャストすることは、幾分(すなわち、エキスパートレベルの)サポートされたアクションであることを意味する。また、 'dl_interate_phdr'を参照してください。とにかく、glibcのelfサブディレクトリには、ガイドとして役立つたくさんのコードがあります。 –
素晴らしいdl_iterate_phdrは私に必要なものです。 – John