水曜日, 7月 01, 2009

Adding a symbol to the dynamic symbol table

Adding a symbol to the dynamic symbol table

  • --export-dynamic or -Bdynamic - add all symbols to
    the dynamic symbol table.

    Add symbols needed by the dynamic object to the dynamic symbol
    table
  • --version-script

    SOMENAME {
    global:
    foo;
    bar;
    local:
    *;
    };

    That tells the linker that 'foo' and 'bar' are to be exported
    and anything else not. I usually use the name of the library
    for 'SOMENAME', but you can get a lot more fancy when you need
    to support several versions of your library. You can use wild-
    cards in the names of the variables, so e.g. 'foo_*' would mean
    all symbols with names starting with 'foo_'. The '*' in local
    simply means all symbols not yet set to global.

    例として、ライブラリの外に公開するシンボルを制限する

    Version Script
    __asm__(".symver old_foo1,foo@VERS_1.2");

  • --dynamic-list
    a script which simply contains:

    {foo;};


objdump --dynamic-syms
ファイルの動的なシンボルテーブルエントリを表示する。これはある種の共有ライブラリのように、動的なオブジェクトの場合にのみ意味を持つ。これは nm プログラムに -D (--dynamic) オプションを指定した場合に得られる情報とほぼ同じ。


Why is the new C++ visibility support so useful?

0 件のコメント: