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

System V(SysV)メモリモデルのダイナミックシンボルテーブルには、適用する規則があります。

以下の規則が適用されます。

実行可能ファイル

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

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

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

共有ライブラリ

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

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

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

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

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

対応するセクションがオブジェクト内に存在する場合は、リンカによって以下のシンボルが定義されます。

  • .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__

関連する概念
10.10 SysV モデルのリンカオプション
10.13 SysV メモリモデルのアドレシングモード
10.14 SysV メモリモデルのスレッドローカルストレージ
関連する参考文書
10.15 SysV メモリモデルのリンカコマンドラインオプション
12.55 --export_all、--no_export_all
12.56 --export_dynamic、--no_export_dynamic
12.79 --keep_protected_symbols
関連情報
ELF for the ARM Architecture
非機密扱いPDF file icon PDF 版ARM DUI0474JJ
Copyright © 2010-2013 ARM.All rights reserved.