SysV メモリモデルにおけるダイナミックシンボルテーブルの自動規則

System V(SysV)メモリモデルには、以下の規則が適用されます。

実行可能ファイル

未定義のシンボル参照は未定義のシンボルエラーです。

可視性が STV_HIDDEN または STV_INTERNAL のグローバルシンボルは、ダイナミックシンボルテーブルにエクスポートされません。

可視性が STV_PROTECTED または STV_DEFAULT のグローバルシンボルは、--export_all オプションまたは --export_dynamic オプションを指定しない限り、ダイナミックシンボルテーブルにエクスポートされません。

共有ライブラリ

可視性が STV_DEFAULT の未定義のシンボル参照はインポートされたと見なされ、ダイナミックシンボルテーブルに配置されます。

可視性が STV_DEFAULT ではない未定義のシンボル参照は、未定義のシンボルエラーです。

可視性が STV_HIDDEN または STV_INTERNAL のグローバルシンボルは、ダイナミックシンボルテーブルにエクスポートされません。

Note

再配置が必要な STV_HIDDEN または STV_INTERNAL グローバルシンボルはダイナミックシンボルテーブルに配置できますが、リンカによってローカルシンボルに変更されて、共有ライブラリ外からアクセスできなくなります。

可視性が STV_PROTECTED または STV_DEFAULT のグローバルシンボルは、常にダイナミックシンボルテーブルにエクスポートされます。

Show/hideglibc との互換性を確保するために定義されるシンボル定義

SysV と glibc との互換性を向上させるために、対応するセクションがオブジェクト内に存在する場合は、リンカによって以下のシンボルが定義されます。

  • .init_array セクションの場合:

    • __init_array_start

    • __init_array_end

  • .fini_array セクションの場合:

    • __fini_array_start

    • __fini_array_end

  • ARM.exidx セクションの場合:

    • __exidx_start

    • __exidx_end

  • .preinit_array セクションの場合:

    • __preinit_array_start

    • __preinit_array_end

  • __executable_start

  • etext

  • _etext

  • __etext

  • __data_start

  • edata

  • _edata

  • __bss_start

  • __bss_start__

  • _bss_end__

  • __bss_end__

  • end

  • _end

  • __end

  • __end__

Show/hide関連項目

Copyright © 2010-2012 ARM. All rights reserved.ARM DUI 0474GJ
Non-ConfidentialID051612