elfmark(1)


elfmark -- 識別マークを ELF ファイルに追加する

形式

 
   elfmark -t osr5|udk|none file ... 

機能説明

elfmark コマンドは、識別マークを ELF ファイルに追加するために使用します。OpenServerTRADEMARK 5 のプラットフォームは、SCO UnixWare X.X や、UNIX System V, Release 4 から得られるその他のプラットフォームとは異なるアプリケーションバイナリインタフェース(ABI)をサポートしています。 uid_t のような基本的なデータ型のサイズ、struct stat のようなシステムデータ構造体のレイアウト、エラー数などのシステム定数、さらには基本的なコンパイラ呼び出し規則にもさまざまな違いがあります。つまり、OpenServer バイナリを SCO UnixWare X.X 上で正しく実行したり、SCO UnixWare X.X バイナリを OpenServer 上で正しく実行するには、バイナリがどのプラットフォームを対象としているかをシステムが判断できなければなりません。

OpenServer を対象にコンパイルされているバイナリのほとんどには、OpenServer のアセンブラやリンカによって追加された識別セクションが含まれています。このセクションは .note と呼ばれ、実行可能プログラムのヘッダや共用ライブラリプログラムのヘッダで PT_NOTE というタイプのセグメントとして表示されます。残念ながら、このセクションの内容はプログラムや共用ライブラリのアドレス領域の一部としては作成されていないため、システムから容易にアクセスすることはできません。したがって、システムはこのセクションがあることや、そのサイズについての何らかのヒューリスティク機能を利用して、ファイルが OpenServer を対象に作成されているかどうかを判断します。elfmark は、ヒューリスティク機能が動作せず、システムが誤って ELF ファイルを識別するという非常にまれな場合に使用することになっています。 elfmark によって、ELF ファイルの ELF ヘッダにある``e_flags''フィールドの値が変わります。通常、この値は 0 です。

elfmark が受け入れるオプションは -t だけで、このオプションの引き数は対象プラットフォームを識別し、``e_flags''フィールドに挿入された値を制御します。この引き数は、次のような値を取ることができます。

``osr5''
この値は、ファイルが OpenServer アプリケーションバイナリインタフェースを使用することをアサートします。

``udk''
この値は、ファイルが SCO UnixWare X.X アプリケーションバイナリインタフェースを使用することをアサートします。SCO UnixWare X.X ABI は、System V Application Binary Interface および System V Application Binary Interface Intel386TRADEMARK Architecture Processor Supplement に準拠しています。System V ABI に準拠するアプリケーションでは ELF ヘッダの``e_flags''フィールドの値は 0 になるため、やはり``e_flags''フィールドの値が 0 になる (elfmark が実行されていない場合) OpenServer ELF バイナリと区別するための特別なマークが必要になります。このマークは、SCO UnixWare X.X の cc コマンドおよび CC コマンドに対して -Kudk オプションを使用して挿入することもできます。

``none''
この値は、ELF ヘッダの``e_flags''フィールドの値を 0 にリセットします。

関連項目

a.out(4), ld(1), 『Programming in standard C and C++』の「Object Files
SCO UnixWare Forum Beta Release (BL12) -- September 1997
© 1997 The Santa Cruz Operation, Inc. All rights reserved.