Solaris Elfedit:Linuxに似たようなものはありますか? (共有ライブラリエディター)?

StackOverflow https://stackoverflow.com/questions/2178724

質問

Linux:コンパイルされた共有ライブラリを編集する方法はありますか?

具体的には、追加する方法を検索しています DT_SYMBOLIC flag すでにコンパイルされたバイナリ共有ライブラリで?

これが私がこれを求めている理由です:

当社のアプリケーションは構成されています

  • 私たち自身のライブラリ(静的 libxxx.a)
  • いくつかのサードパーティLibs(バイナリのみの共有 ライブラリlibyyy.so)

これまでのところ、アプリケーションではすべて問題ありません。

今、私は私たち自身を置き換えました 静的* libxxx.a共有ライブラリバージョンを備えたライブラリ(libxxx.so)。

すべてが正常にコンパイルしてリンクします。

しかし、アプリケーションを実行すると、起動して予想される処理が多くなり、半分の方法でクラッシュします。 GDBバックトレースは、クラッシュがサードパーティの共有ライブラリの一部で発生することを示しています。

私はSOFを検索して、興味深い記事を見つけました ここ.

私が言及しているヒントはです

... add the DT_SYMBOLIC flag to the dynamic section ...

私はそれが本当に助けになるとは思わないが、試してみる価値があるかもしれないと思う。

どのように私が追加できるか DT_SYMBOLIC flag すでに編集/リンクされている共有ライブラリで?

環境: :G ++ V4.2.4およびBinutils V20を備えたDebian Lenny 64ビット。

編集: :solarisには、呼ばれるプログラムがあります elfedit. 。 Linuxに似たものはありますか?

役に立ちましたか?

解決

一方、Lは呼ばれるツールを見つけました elfsh. 。これは、ELFオブジェクト、バイナリ、共有ライブラリを調べて編集するためのインタラクティブなシェルです。

プロジェクトページについては、こちらをご覧ください。 http://www.eresi-project.org

残念ながら、それはあまり安定していないようです。私は多くのクラッシュを経験しました elfsh 自体。

他のヒント

それが単なる旗の場合、痛みを伴うアプローチは、HEXエディターでELFヘッダーを微調整することです。

しかし、サードパーティのLIBがクラッシュしている場合、私は個人的に物事の反対側を見ています。

Ldd

ld_debug = libsをエクスポートします

あなたの友達はここにいますか。

ランタイムローダーがロードされた後に共有Libsをinging libs()dlopen()3パーティのライブで十分かもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top