ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
マニュアルページセクション 1: ユーザーコマンド Oracle Solaris 11 Information Library (日本語) |
- ELF ファイルにデータをラップする
elfwrap [-64] [-o relobj-file] [-z target=sparc | x86] data-file...
elfwrap ユーティリティーは、1 つ以上のデータファイルから ELF 再配置可能オブジェクトファイルを作成します。再配置可能オブジェクトは、個々のセクション内の各データファイルを、セクションの参照に使用できるシンボルとともにカプセル化します。再配置可能オブジェクトを含めておくと、以後のリンク編集で便利です。ユーザーは、関連付けられているシンボルを使用すると、カプセル化されたデータを参照できます。
デフォルトでは、elfwrap が実行されるマシンに適した 32 ビット ELF 再配置可能オブジェクトが作成されます。-64 オプションを使用すると、64 ビット ELF 再配置可能オブジェクトを作成できます。-z target オプションを使用すると、特定の機械タイプ用の再配置可能オブジェクトを作成できます。
注 - elfwrap でカプセル化されたデータはすべて、対象のターゲットに適した形式である必要があります。
デフォルトでは、再配置可能オブジェクト a.wrap.o が作成されます。-o オプションを使用すると、別の再配置可能オブジェクト名を指定できます。
各データファイルの basename(1) を使用して、さまざまな ELF 情報を作成します。たとえば、入力データファイルが ISV/isv-data である場合、次の ELF 情報が再配置可能オブジェクト内に作成されます。
このセクションには、入力データファイルのすべての内容が含まれます。
このシンボルは、.isv-data セクションの開始アドレスを示します。
このシンボルは、.isv-data セクションのあとにある、最初の場所のアドレスを示します。
次のオプションがサポートされています。
64 ビット ELF 再配置可能オブジェクトを作成します。
relobj-file という名前の再配置可能オブジェクトを生成します。
出力される再配置可能オブジェクトの機械タイプを指定します。サポートされるターゲットは、sparc および x86 です。-64 オプションも存在していて、対応する 64 ビット機械タイプが使用されている場合を除き、指定されたターゲット用の 32 ビット機械タイプが使用されます。デフォルトでは、elfwrap が実行されるマシン用の 32 ビットの再配置可能オブジェクトが生成されます。
次の例は、システム passwd ファイルとシステム group ファイルを再配置可能オブジェクト passgroup.o 内にカプセル化します。
example% elfwrap -o passgroup.o /etc/passwd /etc/group example% elfdump -s passgroup.o | egrep "passwd|group" [2] 0x00000000 0x00000000 SECT LOCL D 0 .passwd [3] 0x00000000 0x00000000 SECT LOCL D 0 .group [7] 0x00000000 0x000002f0 OBJT GLOB D 0 .passwd passwd_start [8] 0x000002f0 0x00000000 OBJT GLOB D 0 .passwd passwd_end [9] 0x00000000 0x00000121 OBJT GLOB D 0 .group group_start [10] 0x00000121 0x00000000 OBJT GLOB D 0 .group group_end example% strings -N.passwd passgroup.o | head -1 root:x:0:0:Super-User:/:/usr/sbin/sh example% strings -N.group passgroup.o | head -1 root::0:
この再配置可能オブジェクトは、次のユーザーコードから参照できます。
example% cat main.c #include <stdio.h> extern char passwd_start, passwd_end; void main() { char *pstart = &passwd_start, *pend = &passwd_end; char *str, *lstr; for (lstr = str = pstart; str < pend; str++) { if ((*str == '\n') && (str != (pend - 1))) { (void) printf("%.*s", (++str - lstr), lstr); lstr = str; } } } example% cc -o main main.c passgroup.o example% ./main root:x:0:0:Super-User:/://usr/sbin/sh .... nobody4:x:65534:65534:SunOS 4.x NFS Anonymous Access User:/:
作成されるデフォルトの再配置可能オブジェクトファイル。
属性についての詳細は、attributes(5) を参照してください。
|
elfdump(1), ld(1), strings(1), elf(3ELF), attributes(5), ddi_modopen(9F)