Man page - elf(5)
Packages contains this manual
- shm_overview(7)
- nss(5)
- proc_mtrr(5)
- intro(7)
- tcp(7)
- iso_8859-9(7)
- armscii-8(7)
- proc_kpagecount(5)
- initrd(4)
- mouse(4)
- proc_stat(5)
- x25(7)
- proc_interrupts(5)
- fifo(7)
- repertoiremap(5)
- icmp(7)
- futex(7)
- feature_test_macros(7)
- lp(4)
- bpf-helpers(7)
- epoll(7)
- proc_sys_dev(5)
- namespaces(7)
- proc_sysrq-trigger(5)
- proc_bus(5)
- cp1251(7)
- proc_pid_maps(5)
- proc_sys_vm(5)
- proc_pid_projid_map(5)
- st(4)
- proc_pid(5)
- issue(5)
- pid_namespaces(7)
- unicode(7)
- inode(7)
- hosts.equiv(5)
- iso-8859-13(7)
- proc_fb(5)
- proc_modules(5)
- proc_pid_autogroup(5)
- keyrings(7)
- sysvipc(7)
- proc_kmsg(5)
- cgroups(7)
- latin6(7)
- proc_pid_uid_map(5)
- unix(7)
- proc_pid_io(5)
- pts(4)
- packet(7)
- ld-linux.so(8)
- tzselect(8)
- iconv(1)
- proc_pid_syscall(5)
- proc_pid_net(5)
- proc_pid_pagemap(5)
- tty(4)
- proc_profile(5)
- standards(7)
- proc_pid_mounts(5)
- filesystems(5)
- iso-8859-15(7)
- locale(5)
- iso_8859_3(7)
- xattr(7)
- iso-8859-2(7)
- proc_uptime(5)
- persistent-keyring(7)
- credentials(7)
- proc_pid_timers(5)
- utmpx(5)
- vcsa(4)
- proc_pid_exe(5)
- proc_net(5)
- proc_timer_stats(5)
- ip(7)
- proc_pid_fd(5)
- ptmx(4)
- user_namespaces(7)
- resolv.conf(5)
- url(7)
- iso_8859_5(7)
- iso_8859-8(7)
- urn(7)
- process-keyring(7)
- proc_pid_auxv(5)
- proc_ksyms(5)
- proc_ide(5)
- veth(4)
- ldd(1)
- proc_swaps(5)
- landlock(7)
- proc_vmstat(5)
- system_data_types(7)
- cp1252(7)
- lirc(4)
- proc_kpageflags(5)
- random(7)
- precedence(7)
- cpuset(7)
- proc_pid_ns(5)
- acct(5)
- latin4(7)
- proc_pid_cgroup(5)
- proc_cpuinfo(5)
- iso_8859-2(7)
- proc_keys(5)
- charsets(7)
- pldd(1)
- proc_pid_stat(5)
- rtnetlink(7)
- netlink(7)
- ram(4)
- mem(4)
- iso-8859-6(7)
- proc_key-users(5)
- iso_8859_15(7)
- fanotify(7)
- proc_sys_net(5)
- sysfs(5)
- math_error(7)
- latin1(7)
- proc_pid_root(5)
- nptl(7)
- proc_cgroups(5)
- proc_iomem(5)
- proc_pid_statm(5)
- sem_overview(7)
- hier(7)
- full(4)
- proc_pid_status(5)
- proc_pid_cwd(5)
- proc_pid_cpuset(5)
- proc_scsi(5)
- uri(7)
- proc_diskstats(5)
- iso_8859_6(7)
- latin2(7)
- latin5(7)
- man-pages(7)
- ld.so(8)
- uts_namespaces(7)
- proc_pid_mountstats(5)
- intro(3)
- proc_pid_seccomp(5)
- proc_pid_wchan(5)
- attributes(7)
- symlink(7)
- mount_namespaces(7)
- charmap(5)
- tis-620(7)
- iso-8859-10(7)
- getent(1)
- proc_buddyinfo(5)
- ttytype(5)
- rtc(4)
- proc_malloc(5)
- suffixes(7)
- sln(8)
- signal(7)
- proc_sys_abi(5)
- signal-safety(7)
- time_namespaces(7)
- proc_pid_comm(5)
- raw(7)
- gai.conf(5)
- proc_crypto(5)
- locale(1)
- iso-8859-3(7)
- motd(5)
- proc_meminfo(5)
- iso-8859-8(7)
- protocols(5)
- proc_pid_map_files(5)
- pthreads(7)
- null(4)
- proc(5)
- zdump(8)
- socket(7)
- proc_sys_kernel(5)
- ddp(7)
- memusagestat(1)
- hd(4)
- iso-8859-14(7)
- shells(5)
- pipe(7)
- glob(7)
- proc_self(5)
- network_namespaces(7)
- utmp(5)
- proc_kcore(5)
- nsswitch.conf(5)
- sd(4)
- iso-8859-5(7)
- iso_8859_16(7)
- man(7)
- iso_8859-6(7)
- dir_colors(5)
- mq_overview(7)
- vsock(7)
- ascii(7)
- thread-keyring(7)
- fs(5)
- proc_pid_attr(5)
- proc_sys_debug(5)
- proc_sys(5)
- proc_pid_cmdline(5)
- pty(7)
- services(5)
- cgroup_namespaces(7)
- securetty(5)
- netdevice(7)
- iso_8859_13(7)
- host.conf(5)
- proc_pid_setgroups(5)
- proc_slabinfo(5)
- sock_diag(7)
- iso_8859-14(7)
- iso-8859-11(7)
- iso_8859_11(7)
- operator(7)
- regex(7)
- wavelan(4)
- proc_sys_fs(5)
- nologin(5)
- proc_pci(5)
- koi8-r(7)
- erofs(5)
- intro(2)
- utf8(7)
- proc_kallsyms(5)
- proc_sysvipc(5)
- queue(7)
- proc_sys_sunrpc(5)
- intro(5)
- latin8(7)
- mtrace(1)
- ipc_namespaces(7)
- dsp56k(4)
- iso_8859_4(7)
- proc_pid_smaps(5)
- proc_cmdline(5)
- rpc(5)
- proc_tty(5)
- proc_version(5)
- smartpqi(4)
- proc_pid_timerslack_ns(5)
- aio(7)
- session-keyring(7)
- resolver(5)
- slabinfo(5)
- wtmp(5)
- iso_8859_9(7)
- proc_locks(5)
- mailaddr(7)
- proc_pid_oom_score(5)
- kmem(4)
- iconvconfig(8)
- iso_8859-7(7)
- glibc(7)
- hostname(7)
- proc_thread-self(5)
- ipv6(7)
- iso_8859_7(7)
- proc_kpagecgroup(5)
- core(5)
- time(7)
- units(7)
- proc_dma(5)
- loop(4)
- address_families(7)
- zero(4)
- intro(4)
- procfs(5)
- iso_8859-4(7)
- vdso(7)
- tmpfs(5)
- iso-8859-16(7)
- iso_8859_10(7)
- user-session-keyring(7)
- libc(7)
- proc_fs(5)
- koi8-u(7)
- latin3(7)
- proc_tid_children(5)
- proc_pid_limits(5)
- proc_pid_coredump_filter(5)
- iso_8859-15(7)
- arp(7)
- urandom(4)
- iso_8859-10(7)
- hpsa(4)
- proc_pid_environ(5)
- boot(7)
- ftm(7)
- ld-linux(8)
- proc_driver(5)
- loop-control(4)
- iso_8859-16(7)
- proc_filesystems(5)
- tzfile(5)
- sprof(1)
- proc_pid_task(5)
- proc_pid_oom_score_adj(5)
- proc_mounts(5)
- iso-8859-4(7)
- iso_8859-1(7)
- utf-8(7)
- iso_8859-13(7)
- intro(6)
- proc_timer_list(5)
- rtld-audit(7)
- iso_8859-3(7)
- group(5)
- sched(7)
- proc_pid_clear_refs(5)
- hosts(5)
- iso_8859-11(7)
- numa(7)
- iso_8859_2(7)
- locale(7)
- iso-8859-1(7)
- fuse(4)
- proc_tid(5)
- proc_execdomains(5)
- proc_pid_mountinfo(5)
- intro(8)
- iso_8859_8(7)
- proc_loadavg(5)
- proc_pid_oom_adj(5)
- re_format(7)
- iso_8859_14(7)
- zic(8)
- bootparam(7)
- inotify(7)
- posixoptions(7)
- proc_partitions(5)
- iso-8859-9(7)
- proc_pid_mem(5)
- networks(5)
- proc_sys_user(5)
- udp(7)
- proc_zoneinfo(5)
- latin10(7)
- proc_pid_fdinfo(5)
- proc_pid_stack(5)
- memusage(1)
- spufs(7)
- pkeys(7)
- path_resolution(7)
- proc_ioports(5)
- intro(1)
- ldconfig(8)
- msr(4)
- svipc(7)
- port(4)
- proc_pid_personality(5)
- cciss(4)
- latin9(7)
- capabilities(7)
- localedef(1)
- vcs(4)
- iso_8859-5(7)
- elf(5)
- proc_sys_proc(5)
- console_codes(4)
- random(4)
- iso-8859-7(7)
- termcap(5)
- cpuid(4)
- environ(7)
- string_copying(7)
- proc_pid_gid_map(5)
- queue(3)
- termio(7)
- user-keyring(7)
- complex(7)
- latin7(7)
- proc_config.gz(5)
- udplite(7)
- kernel_lockdown(7)
- proc_devices(5)
- proc_apm(5)
- iso_8859_1(7)
- proc_pid_numa_maps(5)
apt-get install manpages
Available languages:
en fr ja ruManual
ELF
名 前書 式
説 明
注 意
関 連 項 目
こ の 文 書 に つ い て
名 前
elf - 実 行 可 能 リ ン ク フ ォ ー マ ッ ト (ELF) フ ァ イ ル の フ ォ ー マ ッ ト
書 式
#include <elf.h>
説 明
ヘ ッ ダ ー フ ァ イ ル <elf.h> は ELF 実 行 可 能 バ イ ナ リ フ ァ イ ル の フ ォ ー マ ッ ト を 定 義 す る 。 こ れ ら の フ ァ イ ル と し て は 、 通 常 の 実 行 可 能 フ ァ イ ル ・ 再 配 置 可 能 オ ブ ジ ェ ク ト フ ァ イ ル ・ コ ア フ ァ イ ル ・ 共 有 ラ イ ブ ラ リ が あ る 。
ELF フ ァ イ ル フ ォ ー マ ッ ト を 使 う 実 行 可 能 フ ァ イ ル は 、 ELF ヘ ッ ダ ー の 後 に プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル ま た は セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル (ま た は そ の 両 方 ) が 続 く 構 成 で あ る 。 ELF ヘ ッ ダ ー は 常 に フ ァ イ ル の オ フ セ ッ ト 0 に あ る 。 プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル と セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の フ ァ イ ル 内 で の オ フ セ ッ ト は 、 ELF ヘ ッ ダ ー に 定 義 さ れ て い る 。 こ の 2 つ の テ ー ブ ル は フ ァ イ ル の 残 り の 部 分 の 詳 細 を 記 述 す る 。
こ の ヘ ッ ダ ー フ ァ イ ル は 上 記 の ヘ ッ ダ ー を C 言 語 の 構 造 体 で 記 述 し 、 ま た 動 的 セ ク シ ョ ン ・ 再 配 置 可 能 セ ク シ ョ ン ・ シ ン ボ ル テ ー ブ ル の 構 造 体 も 含 ん で い る 。
以 下 の 型 は N ビ ッ ト ア ー キ テ ク チ ャ ー で 使 わ れ る (N=32,64 で あ り ElfN は Elf32 ま た は Elf64 を 表 し 、 uintN_t は uint32_t ま た は uint64_t を 表 す ):
ElfN_Addr
符 号 な し の プ
ロ グ ラ ム ア ド
レ ス , uintN_t
ElfN_Off 符 号 な し の
フ ァ イ ル オ フ
セ ッ ト , uintN_t
ElfN_Section 符 号 な し の
セ ク シ ョ ン イ
ン デ ッ ク ス , uint16_t
ElfN_Versym 符 号 な し の
バ ー ジ ョ ン シ
ン ボ ル 情 報 , uint16_t
Elf_Byte unsigned char
ElfN_Half uint16_t
ElfN_Sword int32_t
ElfN_Word uint32_t
ElfN_Sxword int64_t
ElfN_Xword uint64_t
(注 意 : *BSD で の 用 語 は 少 し 異 な る 。 Elf64_Half は Elf32_Half の 2 倍 で あ り 、 Elf64Quarter が uint16_t に 用 い ら れ る 。 混 乱 を 避 け る た め 、 以 下 で は 、 こ れ ら の 型 は サ イ ズ が 自 明 な 型 に 置 き 換 え て あ る 。 )
こ の フ ァ イ ル フ ォ ー マ ッ ト が 定 義 す る 全 て の デ ー タ 構 造 体 は 、 関 連 す る ク ラ ス の "自 然 な " サ イ ズ と 配 置 の 指 針 に 従 う 。 必 要 な 場 合 、 デ ー タ 構 造 体 で は 明 示 的 な パ デ ィ ン グ (padding, 詰 め 込 み ) が 行 な わ れ る 。 こ れ は 4 バ イ ト オ ブ ジ ェ ク ト に 対 す る 4 バ イ ト 配 置 を 保 証 す る た め や 、 構 造 体 の サ イ ズ を 4 の 倍 数 に す る た め な ど で あ る 。
ELF ヘ ッ ダ ー は 型 Elf32_Ehdr ま た は Elf64_Ehdr で 記 述 さ れ る :
#define EI_NIDENT 16
typedef struct
{
unsigned char e_ident[EI_NIDENT];
uint16_t e_type;
uint16_t e_machine;
uint32_t e_version;
ElfN_Addr e_entry;
ElfN_Off e_phoff;
ElfN_Off e_shoff;
uint32_t e_flags;
uint16_t e_ehsize;
uint16_t e_phentsize;
uint16_t e_phnum;
uint16_t e_shentsize;
uint16_t e_shnum;
uint16_t e_shstrndx;
} ElfN_Ehdr;
フ ィ ー ル ド は 以 下 の 意 味 を 持 つ :
|
e_ident |
こ の バ イ ト 配 列 は 、 プ ロ セ ッ サ や フ ァ イ ル の 他 の 部 分 に は 依 存 せ ず に 、 フ ァ イ ル を 解 釈 (interpret) す る た め に 指 定 さ れ る 。 こ の 配 列 内 の す べ て の も の は 、 接 頭 辞 EI_ で 始 ま る マ ク ロ の 名 前 が 付 き 、 接 頭 辞 ELF で 始 ま る 値 を 持 つ 。 以 下 の マ ク ロ が 定 義 さ れ て い る : |
EI_MAG0
|
マ ジ ッ ク ナ ン バ ー の 第 1 バ イ ト 。 ELFMAG0 で 埋 め な け れ ば な ら な い 。 (0: 0x7f) |
|||
|
EI_MAG1 |
マ ジ ッ ク ナ ン バ ー の 第 2 バ イ ト 。 ELFMAG1 で 埋 め な け れ ば な ら な い 。 (1: 'E') |
||
|
EI_MAG2 |
マ ジ ッ ク ナ ン バ ー の 第 3 バ イ ト 。 ELFMAG2 で 埋 め な け れ ば な ら な い 。 (2: 'L') |
||
|
EI_MAG3 |
マ ジ ッ ク ナ ン バ ー の 第 4 バ イ ト 。 ELFMAG3 で 埋 め な け れ ば な ら な い 。 (3: 'F') |
||
|
EI_CLASS |
第 5 バ イ ト は 、 こ の バ イ ナ リ の ア ー キ テ ク チ ャ ー を 示 す : |
ELFCLASSNONE
|
こ の ク ラ ス は 不 正 で あ る 。 |
|||
|
ELFCLASS32 |
32 ビ ッ ト ア ー キ テ ク チ ャ ー を 定 義 す る 。 フ ァ イ ル と 仮 想 ア ド レ ス 空 間 が 4 ギ ガ バ イ ト ま で の マ シ ン を サ ポ ー ト す る 。 |
||
|
ELFCLASS64 |
64 ビ ッ ト ア ー キ テ ク チ ャ ー を 定 義 す る 。 |
||
|
EI_DATA |
第 6 バ イ ト は フ ァ イ ル 内 の プ ロ セ ッ サ 固 有 デ ー タ の デ ー タ エ ン コ ー デ ィ ン グ を 指 定 す る 。 現 在 の と こ ろ 以 下 の エ ン コ ー デ ィ ン グ が サ ポ ー ト さ れ て い る :
|
ELFDATANONE |
不 明 な デ ー タ フ ォ ー マ ッ ト 。 |
|||
|
ELFDATA2LSB |
2 の 補 数 、 リ ト ル エ ン デ ィ ア ン 。 |
|||
|
ELFDATA2MSB |
2 の 補 数 、 ビ ッ グ エ ン デ ィ ア ン 。 |
|||
|
EI_VERSION |
第 7 バ イ ト は ELF 仕 様 の バ ー ジ ョ ン 番 号 で あ る :
|
EV_NONE |
不 正 な バ ー ジ ョ ン 。 |
|||
|
EV_CURRENT |
現 在 の バ ー ジ ョ ン 。 |
|||
|
EI_OSABI |
第 8 バ イ ト は オ ブ ジ ェ ク ト の タ ー ゲ ッ ト と な る オ ペ レ ー テ ィ ン グ シ ス テ ム と ABI を 示 す 。 他 の ELF 構 造 体 の フ ィ ー ル ド に は 、 プ ラ ッ ト フ ォ ー ム 固 有 の 意 味 を 持 つ フ ラ グ や 値 を 持 つ も の も あ る 。 こ れ ら の フ ィ ー ル ド の 解 釈 は 、 こ の バ イ ト の 値 に よ っ て 決 定 さ れ る 。 以 下 に 例 を 挙 げ る 。
|
ELFOSABI_NONE |
ELFOSABI_SYSV と 同 じ 。 |
||
|
ELFOSABI_SYSV |
UNIX System V ABI. |
||
|
ELFOSABI_HPUX |
HP-UX ABI. |
||
|
ELFOSABI_NETBSD |
NetBSD ABI. |
||
|
ELFOSABI_LINUX |
Linux ABI. |
||
|
ELFOSABI_SOLARIS |
Solaris ABI. |
||
|
ELFOSABI_IRIX |
IRIX ABI. |
||
|
ELFOSABI_FREEBSD |
FreeBSD ABI. |
||
|
ELFOSABI_TRU64 |
TRU64 UNIX ABI. |
||
|
ELFOSABI_ARM |
ARM ア ー キ テ ク チ ャ ー ABI. |
||
|
ELFOSABI_STANDALONE |
ス タ ン ド ア ロ ン (組 み 込 み ) ABI. |
EI_ABIVERSION
第 9 バ イ ト は オ ブ ジ ェ ク ト が タ ー ゲ ッ ト と し て い る ABI の バ ー ジ ョ ン を 示 す 。 こ の フ ィ ー ル ド は 互 換 性 の な い ABI の バ ー ジ ョ ン を 区 別 す る た め に 使 わ れ る 。 こ の バ ー ジ ョ ン 番 号 の 解 釈 は 、 EI_OSABI フ ィ ー ル ド で 識 別 さ れ る ABI に 依 存 す る 。 こ の 仕 様 に 準 拠 す る ア プ リ ケ ー シ ョ ン で は 、 値 0 を 使 う 。
|
EI_PAD |
パ デ ィ ン グ の 開 始 。 こ れ ら の バ イ ト は 予 約 さ れ て お り 、 0 に 設 定 さ れ て い る 。 こ れ ら を 読 み 込 む プ ロ グ ラ ム は 、 こ れ ら の バ イ ト を 無 視 す べ き で あ る 。 現 在 使 わ れ て い な い バ イ ト に 意 味 が 与 え ら れ る 場 合 、 EI_PAD の 値 は 将 来 変 更 さ れ る か も し れ な い 。 |
||
|
EI_NIDENT |
e_ident 配 列 の サ イ ズ 。 |
||
|
e_type |
こ の 構 造 体 の メ ン バ は オ ブ ジ ェ ク ト フ ァ イ ル タ イ プ を 示 す :
|
ET_NONE |
不 明 な タ イ プ 。 |
|||
|
ET_REL |
再 配 置 可 能 フ ァ イ ル 。 |
|||
|
ET_EXEC |
実 行 可 能 フ ァ イ ル 。 |
|||
|
ET_DYN |
共 有 オ ブ ジ ェ ク ト 。 |
|||
|
ET_CORE |
コ ア フ ァ イ ル 。 |
|||
|
e_machine |
こ の メ ン バ は 個 々 の フ ァ イ ル に 必 要 と さ れ る ア ー キ テ ク チ ャ ー を 指 定 す る 。 例 :
|
EM_NONE |
不 明 な マ シ ン 。 |
|||
|
EM_M32 |
AT&T WE 32100. |
|||
|
EM_SPARC |
Sun Microsystems SPARC. |
|||
|
EM_386 |
Intel 80386. |
|||
|
EM_68K |
Motorola 68000. |
|||
|
EM_88K |
Motorola 88000. |
|||
|
EM_860 |
Intel 80860. |
|||
|
EM_MIPS |
MIPS RS3000 (ビ ッ グ エ ン デ ィ ア ン の み )。 |
|||
|
EM_PARISC |
HP/PA. |
EM_SPARC32PLUS
拡 張 命 令 セ ッ ト 付 き SPARC。
|
EM_PPC |
PowerPC. |
|||
|
EM_PPC64 |
PowerPC 64-bit. |
|||
|
EM_S390 |
IBM S/390 |
|||
|
EM_ARM |
Advanced RISC Machines |
|||
|
EM_SH |
Renesas SuperH |
|||
|
EM_SPARCV9 |
SPARC v9 64-bit. |
|||
|
EM_IA_64 |
Intel Itanium |
|||
|
EM_X86_64 |
AMD x86-64 |
|||
|
EM_VAX |
DEC Vax. |
|||
|
e_version |
こ の メ ン バ は フ ァ イ ル バ ー ジ ョ ン を 示 す :
|
EV_NONE |
不 正 な バ ー ジ ョ ン 。 |
|||
|
EV_CURRENT |
現 在 の バ ー ジ ョ ン 。 |
|||
|
e_entry |
こ の メ ン バ は 、 シ ス テ ム が 最 初 に 制 御 を 渡 す 、 つ ま り プ ロ セ ス を 開 始 す る 仮 想 ア ド レ ス を 指 定 す る 。 フ ァ イ ル に エ ン ト リ ー ポ イ ン ト が 関 連 付 け ら れ て い な い 場 合 、 こ の メ ン バ に は 0 が 入 る 。
|
e_phoff |
こ の メ ン バ は プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル の フ ァ イ ル オ フ セ ッ ト (バ イ ト 単 位 ) を 保 持 す る 。 フ ァ イ ル に プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル が な い 場 合 、 こ の メ ン バ に は 0 が 入 る 。 |
||
|
e_shoff |
こ の メ ン バ は セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の フ ァ イ ル オ フ セ ッ ト (バ イ ト 単 位 ) を 保 持 す る 。 フ ァ イ ル に セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル が な い 場 合 、 こ の メ ン バ に は 0 が 入 る 。 |
||
|
e_flags |
こ の メ ン バ は フ ァ イ ル に 関 連 付 け ら れ た プ ロ セ ッ サ 固 有 の フ ラ グ を 保 持 す る 。 フ ラ グ の 名 前 は EF_‘machine_flag’ と い う 形 式 で あ る 。 現 在 の と こ ろ フ ラ グ は 定 義 さ れ て い な い 。 |
||
|
e_ehsize |
こ の メ ン バ は ELF ヘ ッ ダ ー サ イ ズ (バ イ ト 単 位 ) を 保 持 す る 。 |
||
|
e_phentsize |
こ の メ ン バ は こ の フ ァ イ ル の プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル の 1 エ ン ト リ ー あ た り の サ イ ズ (バ イ ト 単 位 ) を 保 持 す る ; 全 て の エ ン ト リ ー は 同 じ サ イ ズ で あ る 。 |
||
|
e_phnum |
こ の メ ン バ は プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル に あ る エ ン ト リ ー の 数 を 保 持 す る 。 よ っ て e_phentsize と e_phnum の 積 が テ ー ブ ル サ イ ズ (バ イ ト 単 位 ) に な る 。 フ ァ イ ル に プ ロ グ ラ ム ヘ ッ ダ ー が な い 場 合 、 e_phnum は 値 0 を 保 持 す る 。 |
プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル の エ ン ト リ ー 数 が PN_XNUM (0xffff) 以 上 の 場 合 、 こ の メ ン バ は PN_XNUM (0xffff) に な り 、 プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル の エ ン ト リ ー の 実 際 の 数 は 、 セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の 最 初 の エ ン ト リ ー の sh_info メ ン バ に 格 納 さ れ る 。 そ れ 以 外 の 場 合 、 セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の 最 初 の エ ン ト リ ー の sh_info メ ン バ に は 値 0 が 格 納 さ れ る 。
|
PN_XNUM |
e_phnum が 保 持 で き る 最 大 値 を 表 し 、 0xffff に 定 義 さ れ て い る 。 e_phnum は プ ロ グ ラ ム ヘ ッ ダ ー の 実 際 の 数 が ど こ に 割 り 当 て ら れ て い る か を 示 す 。 |
||
|
e_shentsize |
こ の メ ン バ は セ ク シ ョ ン ヘ ッ ダ ー の サ イ ズ (バ イ ト 単 位 ) を 保 持 す る 。 セ ク シ ョ ン ヘ ッ ダ ー は セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の 1 つ の エ ン ト リ ー で あ る ; 全 て の エ ン ト リ ー は 同 じ サ イ ズ で あ る 。
|
e_shnum |
こ の メ ン バ は セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル に あ る エ ン ト リ ー の 数 を 保 持 す る 。 よ っ て e_shentsize と e_shnum の 積 は セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の サ イ ズ (バ イ ト 単 位 ) に な る 。 フ ァ イ ル に セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル が な い 場 合 、 e_shnum は 値 0 を 保 持 す る 。 |
セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の エ ン ト リ ー 数 が SHN_LORESERVE (0xff00) 以 上 の 場 合 、 e_shnum に は 値 0 が 入 り 、 セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の エ ン ト リ ー の 実 際 の 数 は セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の 最 初 の エ ン ト リ ー の sh_size メ ン バ に 格 納 さ れ る 。 そ れ 以 外 の 場 合 、 セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の 最 初 の エ ン ト リ ー の sh_info メ ン バ に は 値 0 が 格 納 さ れ る 。
|
e_shstrndx |
こ の メ ン バ は セ ク シ ョ ン 名 文 字 列 テ ー ブ ル に 関 連 付 け ら れ た エ ン ト リ ー の セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル イ ン デ ッ ク ス を 保 持 す る 。 フ ァ イ ル に セ ク シ ョ ン 名 文 字 列 テ ー ブ ル が な い 場 合 、 こ の メ ン バ は 値 SHN_UNDEF を 保 持 す る 。 SHN_UNDEF . |
セ ク シ ョ ン 名 前 文 字 列 テ ー ブ ル の イ ン デ ッ ク ス が SHN_LORESERVE (0xff00) 以 上 の 場 合 、 こ の メ ン バ に は SHN_XINDEX (0xffff) が 入 り 、 セ ク シ ョ ン 名 前 文 字 列 テ ー ブ ル の 実 際 の イ ン デ ッ ク ス は セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の 最 初 の エ ン ト リ ー の sh_link メ ン バ に 格 納 さ れ る 。 そ れ 以 外 の 場 合 、 セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル の 最 初 の エ ン ト リ ー の sh_link メ ン バ に は 値 0 が 格 納 さ れ る 。
|
SHN_UNDEF |
こ の 値 は 未 定 義 ・ 存 在 し な い ・ 無 関 係 そ の 他 、 意 味 の な い セ ク シ ョ ン の 参 照 で あ る こ と を 表 す 。 例 え ば 、 セ ク シ ョ ン 番 号 SHN_UNDEF に 関 連 づ け て 「 定 義 」 さ れ た シ ン ボ ル は 、 「 未 定 義 」 な シ ン ボ ル で あ る 。 |
||
|
SHN_LORESERVE |
こ の 値 は 予 約 済 み の イ ン デ ッ ク ス 領 域 の 下 限 を 指 定 す る 。 |
||
|
SHN_LOPROC |
こ の 値 以 上 で SHN_HIPROC 以 下 の 値 は プ ロ セ ッ サ 固 有 の 意 味 に 予 約 さ れ て い る 。 |
||
|
SHN_HIPROC |
こ の 値 以 下 で SHN_HIPROC 以 上 の 値 は プ ロ セ ッ サ 固 有 の 意 味 に 予 約 さ れ て い る 。 |
||
|
SHN_ABS |
こ の 値 は 対 応 す る 参 照 の 絶 対 値 を 指 定 す る 。 例 え ば 、 セ ク シ ョ ン 番 号 SHN_ABS に 関 連 づ け ら れ た シ ン ボ ル は 絶 対 値 を 保 持 し 、 再 配 置 に 影 響 さ れ な い 。 |
||
|
SHN_COMMON |
こ の セ ク シ ョ ン に 関 連 し て 定 義 さ れ た シ ン ボ ル は 、 Fortran の COMMON や C の 未 割 り 当 て external 変 数 の よ う な 、 共 通 シ ン ボ ル で あ る 。 |
||
|
SHN_HIRESERVE |
こ の 値 は 予 約 さ れ た イ ン デ ッ ク ス の 範 囲 の 上 限 を 指 定 す る 。 SHN_LORESERVE と SHN_HIRESERVE は 含 ま れ る 。 こ の 値 は セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル を 参 照 し な い 。 つ ま り 、 セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル は 予 約 さ れ た イ ン デ ッ ク ス の エ ン ト リ ー を 含 ま な い 。 |
実 行 可 能 フ ァ イ ル ま た は 共 有 オ ブ ジ ェ ク ト フ ァ イ ル の プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル は 、 シ ス テ ム に よ る プ ロ グ ラ ム 実 行 準 備 に 必 要 な 、 セ グ メ ン ト 等 の 情 報 を 記 述 す る 構 造 体 の 配 列 で あ る 。 オ ブ ジ ェ ク ト フ ァ イ ル の セ グ メ ン ト に は 1 つ 以 上 の セ ク シ ョ ン が 含 ま れ る 。 プ ロ グ ラ ム ヘ ッ ダ ー は 実 行 可 能 フ ァ イ ル と 共 有 オ ブ ジ ェ ク ト フ ァ イ ル で の み 意 味 を 持 つ 。 フ ァ イ ル は 自 身 の プ ロ グ ラ ム ヘ ッ ダ ー サ イ ズ を ELF ヘ ッ ダ ー の e_phentsize メ ン バ と e_phnum メ ン バ で 指 定 す る 。 ELF プ ロ グ ラ ム ヘ ッ ダ ー は Elf32_Phdr 型 ま た は Elf64_Phdr 型 で 記 述 さ れ る (ど ち ら に な る か は ア ー キ テ ク チ ャ ー 依 存 ):
typedef struct
{
uint32_t p_type;
Elf32_Off p_offset;
Elf32_Addr p_vaddr;
Elf32_Addr p_paddr;
uint32_t p_filesz;
uint32_t p_memsz;
uint32_t p_flags;
uint32_t p_align;
} Elf32_Phdr;
typedef struct
{
uint32_t p_type;
uint32_t p_flags;
Elf64_Off p_offset;
Elf64_Addr p_vaddr;
Elf64_Addr p_paddr;
uint64_t p_filesz;
uint64_t p_memsz;
uint64_t p_align;
} Elf64_Phdr;
32 ビ ッ ト と 64 ビ ッ ト の プ ロ グ ラ ム ヘ ッ ダ ー の 主 な 違 い は 、 構 造 体 に お け る p_flags メ ン バ の 位 置 に あ る 。
|
p_type |
Phdr 構 造 体 の こ の メ ン バ は 、 こ の 配 列 要 素 が ど の よ う な 種 類 の セ グ メ ン ト を 記 述 し て い る か 、 ま た は こ の 配 列 要 素 の 情 報 を ど の よ う に 解 釈 す る か 、 を 表 す 。 |
PT_NULL
|
こ の 配 列 要 素 は 使 用 さ れ て お ら ず 、 そ の 他 の メ ン バ の 値 は 未 定 義 で あ る 。 こ れ に よ り 、 こ の プ ロ グ ラ ム ヘ ッ ダ ー の エ ン ト リ ー は 無 視 さ れ る 。 |
|||
|
PT_LOAD |
こ の 配 列 要 素 は p_filesz と p_memsz で 記 述 さ れ る ロ ー ド 可 能 セ グ メ ン ト を 指 定 す る 。 こ の フ ァ イ ル か ら の バ イ ト デ ー タ が 、 こ の メ モ リ ー セ グ メ ン ト の 先 頭 か ら マ ッ プ さ れ る 。 セ グ メ ン ト の メ モ リ ー サ イ ズ Sy p_memsz が フ ァ イ ル サ イ ズ Sy p_filesz よ り 大 き い 場 合 、 「 余 っ た 」 バ イ ト は 値 0 と な り 、 そ の セ グ メ ン ト 初 期 化 デ ー タ の 後 ろ に 置 か れ る と 定 め ら れ て い る 。 フ ァ イ ル サ イ ズ は メ モ リ ー サ イ ズ よ り 大 き く て は い け な い 。 プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル の ロ ー ド 可 能 セ グ メ ン ト エ ン ト リ ー は 、 p_vaddr メ ン バ の 昇 順 に ソ ー ト さ れ て 出 現 す る 。 |
||
|
PT_DYNAMIC |
こ の 配 列 要 素 は 動 的 リ ン ク 情 報 を 指 定 す る 。 |
||
|
PT_INTERP |
こ の 配 列 要 素 は 、 イ ン タ ー プ リ タ ー と し て 起 動 さ れ る パ ス 名 (ヌ ル 文 字 終 端 ) の 位 置 と サ イ ズ を 指 定 す る 。 こ の セ グ メ ン ト 型 は (共 有 オ ブ ジ ェ ク ト に も あ る か も 知 れ な い が ) 実 行 可 能 フ ァ イ ル で の み 意 味 を 持 つ 。 た だ し 、 こ の セ グ メ ン ト 型 は 1 つ の フ ァ イ ル に 2 回 以 上 出 現 し て は な ら な い 。 も し 存 在 す る 場 合 、 こ の セ グ メ ン ト 型 は 全 て の ロ ー ド 可 能 セ グ メ ン ト エ ン ト リ ー よ り 前 に な け れ ば な ら な い 。 |
||
|
PT_NOTE |
こ の 配 列 要 素 は 補 足 情 報 (auxiliary information) の 位 置 と サ イ ズ を 指 定 す る 。 |
||
|
PT_SHLIB |
こ の セ グ メ ン ト 型 は 予 約 さ れ て い る が 、 意 味 は 指 定 さ れ て い な い 。 こ の 型 の 配 列 要 素 を 保 持 す る プ ロ グ ラ ム は ABI に 準 拠 し な い 。 |
||
|
PT_PHDR |
こ の 配 列 要 素 は 、 も し 存 在 し て い る な ら ば 、 フ ァ イ ル お よ び プ ロ グ ラ ム の メ モ リ ー イ メ ー ジ 双 方 に お け る プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル 自 身 の 位 置 と サ イ ズ を 指 定 す る 。 こ の セ グ メ ン ト 型 は 1 つ の フ ァ イ ル に 2 回 以 上 出 現 し て は な ら な い 。 さ ら に 、 こ の セ グ メ ン ト 型 が 存 在 し て も よ い の は 、 プ ロ グ ラ ム ヘ ッ ダ ー テ ー ブ ル が プ ロ グ ラ ム の メ モ リ ー イ メ ー ジ の 一 部 で あ る 場 合 の み で あ る 。 も し 存 在 す る 場 合 、 こ れ は 全 て の ロ ー ド 可 能 セ グ メ ン ト エ ン ト リ ー よ り 前 に な け れ ば な ら な い 。 |
||
|
PT_LOPROC |
こ の 値 以 上 で PT_HIPROC 以 下 の 値 は プ ロ セ ッ サ 固 有 の 意 味 に 予 約 さ れ て い る 。 |
||
|
PT_HIPROC |
こ の 値 以 下 で PT_LOPROC 以 上 の 値 は プ ロ セ ッ サ 固 有 の 意 味 に 予 約 さ れ て い る 。 |
PT_GNU_STACK
GNU 拡 張 で あ り 、 Linux カ ー ネ ル が p_flags の メ ン バ ー に セ ッ ト さ れ た フ ラ グ 経 由 で ス タ ッ ク の 状 態 を 制 御 す る た め に 使 用 す る 。
|
p_offset |
こ の メ ン バ は 、 セ グ メ ン ト の 先 頭 バ イ ト が あ る (フ ァ イ ル 先 頭 か ら の ) オ フ セ ッ ト を 保 持 す る 。 |
||
|
p_vaddr |
こ の メ ン バ は 、 セ グ メ ン ト の 先 頭 バ イ ト が あ る メ モ リ ー の 仮 想 ア ド レ ス を 保 持 す る 。 |
||
|
p_paddr |
物 理 ア ド レ ス が 意 味 を も つ シ ス テ ム で は 、 こ の メ ン バ は セ グ メ ン ト の 物 理 ア ド レ ス と し て 予 約 さ れ て い る 。 BSD で は こ の メ ン バ は 使 用 さ れ な い 。 0 で な け れ ば な ら な い 。 |
||
|
p_filesz |
こ の メ ン バ は セ グ メ ン ト の フ ァ イ ル イ メ ー ジ の バ イ ト 数 を 保 持 す る 。 こ れ は 0 で も よ い 。 |
||
|
p_memsz |
こ の メ ン バ は セ グ メ ン ト の メ モ リ ー イ メ ー ジ の バ イ ト 数 を 保 持 す る 。 こ れ は 0 で も よ い 。 |
||
|
p_flags |
こ の メ ン バ は セ グ メ ン ト に 関 連 す る フ ラ グ の ビ ッ ト マ ス ク を 保 持 す る : |
PF_X
|
実 行 可 能 セ グ メ ン ト 。 |
||||
|
PF_W |
書 き 込 み 可 能 セ グ メ ン ト . |
|||
|
PF_R |
読 み 込 み 可 能 セ グ メ ン ト 。 |
テ キ ス ト セ グ メ ン ト は 一 般 に フ ラ グ PF_X と PF_R を 持 つ 。 デ ー タ セ グ メ ン ト は 一 般 に PF_X , PF_W , PF_R を 持 つ 。
|
p_align |
こ の メ ン バ は 、 セ グ メ ン ト が メ モ リ ー お よ び フ ァ イ ル に お い て 配 置 (align) さ れ る 値 を 保 持 す る 。 ロ ー ド 可 能 プ ロ セ ス セ グ メ ン ト は 、 ペ ー ジ サ イ ズ を 法 と し て p_vaddr と p_offset と 合 同 で な け れ ば な ら な い (訳 注 :「 p_vaddr mod ペ ー ジ サ イ ズ = p_offset mod ペ ー ジ サ イ ズ 」 で な け れ ば な ら な い )。 。 0 と 1 と い う 値 は 配 置 が 必 要 な い こ と を 意 味 す る 。 そ れ 以 外 の 場 合 、 p_align は 正 で 2 の 整 数 乗 で な け れ ば な ら ず 、 p_vaddr は p_align を 法 と し て p_offset と 合 同 で な け れ ば な ら な い (訳 注 :「 p_vaddr mod p_align = p_offset mod p_align」 で な け れ ば な ら な い )。 |
フ ァ イ ル の セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル に は 、 全 て の フ ァ イ ル セ ク シ ョ ン の 場 所 が 記 述 さ れ て い る 。 セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル は Elf32_Shdr 構 造 体 ま た は Elf64_Shdr 構 造 体 の 配 列 で あ る 。 ELF ヘ ッ ダ ー の e_shoff メ ン バ は フ ァ イ ル の 先 頭 か ら セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル へ の バ イ ト オ フ セ ッ ト で あ る 。 e_shnum は セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル に 含 ま れ る エ ン ト リ ー の 数 を 保 持 す る 。 e_shentsize は 各 エ ン ト リ ー の サ イ ズ (バ イ ト 単 位 ) を 保 持 す る 。
セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル イ ン デ ッ ク ス は 、 こ の 配 列 の 添 字 で あ る 。 い く つ か の セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル イ ン デ ッ ク ス は 予 約 さ れ て い る 。 予 約 さ れ て い る の は 、 最 初 の エ ン ト リ ー と 、 SHN_LORESERVE と SHN_HIRESERVE の 間 の イ ン デ ッ ク ス で あ る 。 最 初 の エ ン ト リ ー は 、 ELF 拡 張 で e_phnum , e_shnum , e_strndx に 使 用 さ れ る 。 そ れ 以 外 の 場 合 、 最 初 の エ ン ト リ ー の 各 フ ィ ー ル ド に は 0 が 設 定 さ れ る 。 オ ブ ジ ェ ク ト フ ァ イ ル に は こ れ ら の 特 別 な イ ン デ ッ ク ス に 対 応 す る セ ク シ ョ ン は な い 。
|
SHN_UNDEF |
こ の 値 は 、 未 定 義 (undefined)、 不 足 (missing)、 無 関 係 (irrelevant)、 そ の 他 無 意 味 な セ ク シ ョ ン 参 照 を 示 す 。 |
||
|
SHN_LORESERVE |
こ の 値 は 予 約 済 み の イ ン デ ッ ク ス 領 域 の 下 限 を 指 定 す る 。 |
||
|
SHN_LOPROC |
こ の 値 以 上 で SHN_HIPROC 以 下 の 値 は プ ロ セ ッ サ 固 有 の 意 味 に 予 約 さ れ て い る 。 |
||
|
SHN_HIPROC |
こ の 値 以 下 で SHN_HIPROC 以 上 の 値 は プ ロ セ ッ サ 固 有 の 意 味 に 予 約 さ れ て い る 。 |
||
|
SHN_ABS |
こ の 値 は 対 応 す る 参 照 の 絶 対 値 を 指 定 す る 。 例 え ば 、 セ ク シ ョ ン 番 号 SHN_ABS に 関 連 し て 定 義 さ れ て い る シ ン ボ ル は 、 絶 対 値 を 保 持 し て い る の で 、 再 配 置 に 影 響 さ れ な い 。 |
||
|
SHN_COMMON |
こ の セ ク シ ョ ン に 関 連 し て 定 義 さ れ て い る シ ン ボ ル は 、 FORTRAN の COMMON や C の 未 割 り 当 て 外 部 変 数 の よ う な 共 通 シ ン ボ ル で あ る 。 |
||
|
SHN_HIRESERVE |
こ の 値 は 予 約 済 み の イ ン デ ッ ク ス 領 域 の 上 限 を 指 定 す る 。 シ ス テ ム は SHN_LORESERVE と SHN_HIRESERVE を 含 む 範 囲 を 予 約 す る 。 セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル は 予 約 さ れ た イ ン デ ッ ク ス に 対 応 す る エ ン ト リ ー を 持 た な い 。 |
セ ク シ ョ ン ヘ ッ ダ ー は 以 下 の 構 造 体 を 持 つ :
typedef struct
{
uint32_t sh_name;
uint32_t sh_type;
uint32_t sh_flags;
Elf32_Addr sh_addr;
Elf32_Off sh_offset;
uint32_t sh_size;
uint32_t sh_link;
uint32_t sh_info;
uint32_t sh_addralign;
uint32_t sh_entsize;
} Elf32_Shdr;
typedef struct
{
uint32_t sh_name;
uint32_t sh_type;
uint64_t sh_flags;
Elf64_Addr sh_addr;
Elf64_Off sh_offset;
uint64_t sh_size;
uint32_t sh_link;
uint32_t sh_info;
uint64_t sh_addralign;
uint64_t sh_entsize;
} Elf64_Shdr;
32 ビ ッ ト と 64 ビ ッ ト の セ ク シ ョ ン ヘ ッ ダ ー に は 実 際 の 違 い は な い 。
|
sh_name |
こ の メ ン バ は セ ク シ ョ ン 名 を 定 め る 。 こ の 値 は セ ク シ ョ ン ヘ ッ ダ ー 文 字 列 テ ー ブ ル セ ク シ ョ ン の イ ン デ ッ ク ス で あ り 、 ヌ ル 文 字 で 終 端 さ れ た 文 字 列 の 場 所 を 示 す 。 |
||
|
sh_type |
こ の メ ン バ は セ ク シ ョ ン の 内 容 と 意 味 が 含 ま れ る カ テ ゴ リ ー を 示 す 。 |
SHT_NULL
|
こ の 値 は セ ク シ ョ ン ヘ ッ ダ ー が 不 活 性 で あ る こ と を 示 す 。 こ れ は 関 連 す る セ ク シ ョ ン を 持 た な い 。 こ の セ ク シ ョ ン ヘ ッ ダ ー の 他 の メ ン バ は 、 未 定 義 の 値 を 持 つ 。 |
|||
|
SHT_PROGBITS |
こ の セ ク シ ョ ン は プ ロ グ ラ ム に よ り 定 義 さ れ る 情 報 を 保 持 す る 。 こ の 情 報 の 形 式 と 意 味 は 、 ひ と え に プ ロ グ ラ ム に よ っ て 決 定 さ れ る 。 |
||
|
SHT_SYMTAB |
こ の セ ク シ ョ ン は シ ン ボ ル テ ー ブ ル を 保 持 す る 。 一 般 に は SHT_SYMTAB は リ ン ク 編 集 の た め の シ ン ボ ル を 提 供 す る が 、 動 的 リ ン ク に も 使 わ れ る 。 完 全 な シ ン ボ ル テ ー ブ ル と し て 、 動 的 リ ン ク に は 不 要 な 多 く の シ ン ボ ル を 保 持 で き る 。 オ ブ ジ ェ ク ト フ ァ イ ル も SHT_DYNSYM セ ク シ ョ ン を 持 つ こ と が で き る 。 |
||
|
SHT_STRTAB |
こ の セ ク シ ョ ン は 文 字 列 テ ー ブ ル を 保 持 す る 。 オ ブ ジ ェ ク ト フ ァ イ ル は 複 数 の 文 字 列 テ ー ブ ル セ ク シ ョ ン を 持 つ こ と が で き る 。 |
||
|
SHT_RELA |
こ の セ ク シ ョ ン は 明 示 的 な 加 数 (addend) を 持 つ 再 配 置 エ ン ト リ ー を 保 持 す る 。 再 配 置 エ ン ト リ ー の 型 は 、 オ ブ ジ ェ ク ト フ ァ イ ル の 32 ビ ッ ト ク ラ ス で は Elf32_Rela で あ る 。 オ ブ ジ ェ ク ト フ ァ イ ル は 複 数 の 再 配 置 セ ク シ ョ ン を 持 つ こ と が で き る 。 |
||
|
SHT_HASH |
こ の セ ク シ ョ ン は シ ン ボ ル ハ ッ シ ュ テ ー ブ ル を 保 持 す る 。 動 的 リ ン ク さ れ る オ ブ ジ ェ ク ト は 、 シ ン ボ ル ハ ッ シ ュ テ ー ブ ル を 含 ん で い な け れ ば な ら な い 。 オ ブ ジ ェ ク ト フ ァ イ ル は 1 つ の ハ ッ シ ュ テ ー ブ ル の み を 持 つ こ と が で き る 。 |
||
|
SHT_DYNAMIC |
こ の セ ク シ ョ ン は 動 的 リ ン ク の 情 報 を 保 持 す る 。 オ ブ ジ ェ ク ト フ ァ イ ル は 1 つ の 動 的 セ ク シ ョ ン の み を 持 つ こ と が で き る 。 |
||
|
SHT_NOTE |
こ の セ ク シ ョ ン は フ ァ イ ル に 何 ら か の 印 を 付 け る 情 報 を 保 持 す る 。 |
||
|
SHT_NOBITS |
こ の タ イ プ の セ ク シ ョ ン は フ ァ イ ル の 領 域 を 使 わ な い と い う 以 外 は 、 SHT_PROGBITS と 似 て い る 。 こ の セ ク シ ョ ン は 1 バ イ ト も 含 ま な い が 、 sh_offset メ ン バ は 概 念 的 な フ ァ イ ル オ フ セ ッ ト を 持 つ 。 |
||
|
SHT_REL |
こ の セ ク シ ョ ン は 明 示 的 な 加 数 を 持 た な い 再 配 置 オ フ セ ッ ト を 保 持 す る 。 再 配 置 オ フ セ ッ ト の 型 は 、 オ ブ ジ ェ ク ト フ ァ イ ル の 32 ビ ッ ト ク ラ ス で は Elf32_Rel で あ る 。 オ ブ ジ ェ ク ト フ ァ イ ル は 複 数 の 再 配 置 セ ク シ ョ ン を 持 つ こ と が で き る 。 |
||
|
SHT_SHLIB |
こ の セ ク シ ョ ン は 予 約 さ れ て い る が 、 意 味 は 指 定 さ れ て い な い 。 |
||
|
SHT_DYNSYM |
こ の セ ク シ ョ ン は 動 的 リ ン ク シ ン ボ ル の 最 小 セ ッ ト を 保 持 す る 。 オ ブ ジ ェ ク ト フ ァ イ ル は SHT_SYMTAB セ ク シ ョ ン も 含 む こ と が で き る 。 |
||
|
SHT_LOPROC |
こ の 値 以 上 で SHT_HIPROC 以 下 の 範 囲 は プ ロ セ ッ サ 固 有 の 意 味 に 予 約 さ れ て い る 。 |
||
|
SHT_HIPROC |
こ の 値 以 下 で SHT_LOPROC 以 上 の 範 囲 は プ ロ セ ッ サ 固 有 の 意 味 に 予 約 さ れ て い る 。 |
||
|
SHT_LOUSER |
こ の 値 は ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム の た め に 予 約 さ れ る イ ン デ ッ ク ス 範 囲 の 下 限 を 指 定 す る 。 |
||
|
SHT_HIUSER |
こ の 値 は ア プ リ ケ ー シ ョ ン プ ロ グ ラ ム の た め に 予 約 さ れ る イ ン デ ッ ク ス 範 囲 の 上 限 を 指 定 す る 。 SHT_LOUSER か ら SHT_HIUSER の 間 の セ ク シ ョ ン タ イ プ は 、 現 在 ま た は 将 来 の シ ス テ ム 定 義 セ ク シ ョ ン タ イ プ と 衝 突 す る こ と な く 、 ア プ リ ケ ー シ ョ ン で 使 用 す る こ と が で き る 。 |
||
|
sh_flags |
様 々 な 属 性 を 記 述 す る た め の 1 ビ ッ ト の フ ラ グ を サ ポ ー ト す る セ ク シ ョ ン 。 フ ラ グ ビ ッ ト が sh_flags に 設 定 さ れ た 場 合 、 そ の セ ク シ ョ ン に つ い て の 属 性 は "オ ン " に な る 。 そ れ 以 外 の 場 合 、 属 性 が "オ フ " で あ る か 属 性 が 適 用 さ れ な い 。 未 定 義 の 属 性 は 0 に 設 定 さ れ る 。
|
SHF_WRITE |
こ の セ ク シ ョ ン は プ ロ セ ス 実 行 中 に 書 き 込 み 可 能 な デ ー タ を 含 む 。 |
||
|
SHF_ALLOC |
こ の セ ク シ ョ ン は プ ロ セ ス 実 行 中 に メ モ リ ー を 使 用 す る 。 制 御 セ ク シ ョ ン の 中 に は 、 オ ブ ジ ェ ク ト フ ァ イ ル の メ モ リ ー イ メ ー ジ に は 存 在 し な い も の も あ る 。 そ う し た セ ク シ ョ ン の 場 合 、 こ の 属 性 は オ フ で あ る 。 |
||
|
SHF_EXECINSTR |
こ の セ ク シ ョ ン は 実 行 可 能 な マ シ ン 命 令 を 含 む 。 |
||
|
SHF_MASKPROC |
こ の マ ス ク に 含 ま れ る 全 て の ビ ッ ト は プ ロ セ ッ サ 固 有 の 意 味 に 予 約 さ れ て い る 。 |
||
|
sh_addr |
こ の セ ク シ ョ ン が プ ロ セ ス の メ モ リ ー イ メ ー ジ に あ る 場 合 、 こ の メ ン バ は セ ク シ ョ ン の 最 初 の バ イ ト が 存 在 す る ア ド レ ス を 保 持 す る 。 そ れ 以 外 の 場 合 、 こ の メ ン バ は 0 で あ る 。
|
sh_offset |
こ の メ ン バ の 値 は 、 フ ァ イ ル の 先 頭 か ら セ ク シ ョ ン の 最 初 の バ イ ト へ の バ イ ト オ フ セ ッ ト を 保 持 す る 。 セ ク シ ョ ン タ イ プ SHT_NOBITS は フ ァ イ ル の 領 域 を 全 く 使 用 せ ず 、 こ の タ イ プ の sh_offset メ ン バ は フ ァ イ ル の 概 念 的 な 位 置 を 示 す 。 |
||
|
sh_size |
こ の メ ン バ は セ ク シ ョ ン の サ イ ズ (バ イ ト 単 位 ) を 保 持 す る 。 セ ク シ ョ ン タ イ プ が SHT_NOBITS で な い 限 り 、 そ の セ ク シ ョ ン は フ ァ イ ル 中 の sh_size バ イ ト を 使 用 す る 。 タ イ プ が SHT_NOBITS の セ ク シ ョ ン は サ イ ズ が 0 で な い が 、 フ ァ イ ル の 領 域 を 使 用 し な い 。 |
||
|
sh_link |
こ の メ ン バ は 、 セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル イ ン デ ッ ク ス リ ン ク を 保 持 す る 。 こ の 解 釈 は セ ク シ ョ ン タ イ プ に 依 存 す る 。 |
||
|
sh_info |
こ の メ ン バ は 追 加 情 報 を 保 持 す る 。 こ の 解 釈 は セ ク シ ョ ン タ イ プ に 依 存 す る 。 |
sh_addralign
ア ド レ ス 配 置 に 制 約 が あ る セ ク シ ョ ン も あ る 。 セ ク シ ョ ン が 倍 長 語 (doubleword) を 保 持 す る 場 合 、 シ ス テ ム は 全 て の セ ク シ ョ ン に つ い て 倍 長 語 の 配 置 を 保 証 し な け れ ば な ら な い 。 つ ま り 、 sh_addr の 値 は sh_addralign の 値 を 法 と し て 0 と 合 同 で な け れ ば な ら な い (訳 注 :「 sh_addr mod sh_addralign = 0 で な け れ ば な ら な い )。 2 の 0 乗 と 正 の 整 数 乗 の み が 許 可 さ れ る 。 0 ま た は 1 は セ ク シ ョ ン の 配 置 に 制 約 が な い こ と を 意 味 す る 。
sh_entsize
シ ン ボ ル テ ー ブ ル の よ う な 固 定 サ イ ズ エ ン ト リ ー の テ ー ブ ル を 保 持 す る セ ク シ ョ ン も あ る 。 こ の よ う な セ ク シ ョ ン で は 、 こ の メ ン バ は 各 エ ン ト リ ー の サ イ ズ (バ イ ト 単 位 ) を 表 す 。 こ の メ ン バ が 0 の 場 合 、 そ の セ ク シ ョ ン は 固 定 サ イ ズ エ ン ト リ ー の テ ー ブ ル を 保 持 し な い 。
さ ま ざ ま な セ ク シ ョ ン に プ ロ グ ラ ム 情 報 ・ 制 御 情 報 が 保 持 さ れ る :
|
.bss |
こ の セ ク シ ョ ン は プ ロ グ ラ ム の メ モ リ ー イ メ ー ジ に 配 置 さ れ る 非 初 期 化 デ ー タ を 保 持 す る 。 定 義 上 、 シ ス テ ム は プ ロ グ ラ ム の 実 行 開 始 時 に 、 デ ー タ を 0 で 初 期 化 す る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_NOBITS で あ る 。 属 性 タ イ プ は SHF_ALLOC と SHF_WRITE で あ る 。 |
||
|
.comment |
こ の セ ク シ ョ ン は バ ー ジ ョ ン 制 御 情 報 を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 属 性 タ イ プ は 使 用 さ れ な い 。 |
||
|
.ctors |
こ の セ ク シ ョ ン は C++ コ ン ス ト ラ ク タ ー 関 数 へ の 初 期 化 さ れ た ポ イ ン タ ー を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 属 性 タ イ プ は SHF_ALLOC と SHF_WRITE で あ る 。 |
||
|
.data |
こ の セ ク シ ョ ン は プ ロ グ ラ ム の メ モ リ ー イ メ ー ジ に 配 置 さ れ る 初 期 化 済 み デ ー タ を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 属 性 タ イ プ は SHF_ALLOC と SHF_WRITE で あ る 。 |
||
|
.data1 |
こ の セ ク シ ョ ン は プ ロ グ ラ ム の メ モ リ ー イ メ ー ジ に 配 置 さ れ る 初 期 化 済 み デ ー タ を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 属 性 タ イ プ は SHF_ALLOC と SHF_WRITE で あ る 。 |
||
|
.debug |
こ の セ ク シ ョ ン は シ ン ボ リ ッ ク デ バ ッ グ 用 の 情 報 を 保 持 す る 。 そ の 内 容 は 指 定 さ れ て い な い 。 こ の セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 属 性 タ イ プ は 使 用 さ れ な い 。 |
||
|
.dtors |
こ の セ ク シ ョ ン は C++ デ ス ト ラ ク タ 関 数 へ の 初 期 化 さ れ た ポ イ ン タ ー を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 属 性 タ イ プ は SHF_ALLOC と SHF_WRITE で あ る 。 |
||
|
.dynamic |
こ の セ ク シ ョ ン は 動 的 リ ン ク 情 報 を 保 持 す る 。 こ の セ ク シ ョ ン の 属 性 は SHF_ALLOC ビ ッ ト を 含 む 。 SHF_WRITE ビ ッ ト が 設 定 さ れ る か 否 か は プ ロ セ ッ サ に よ る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_DYNAMIC で あ る 。 上 記 の 属 性 を 参 照 す る こ と 。 |
||
|
.dynstr |
こ の セ ク シ ョ ン は 動 的 リ ン ク に 必 要 な 文 字 列 を 保 持 す る 。 最 も 一 般 的 に は 、 こ の 文 字 列 は シ ン ボ ル テ ー ブ ル エ ン ト リ ー と 関 連 づ け ら れ た 名 前 を 表 す 。 こ の セ ク シ ョ ン の タ イ プ は SHT_STRTAB で あ る 。 使 用 さ れ る 属 性 タ イ プ は SHF_ALLOC で あ る 。 |
||
|
.dynsym |
こ の セ ク シ ョ ン は 動 的 リ ン ク シ ン ボ ル テ ー ブ ル を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_DYNSYM で あ る 。 使 用 さ れ る 属 性 タ イ プ は SHF_ALLOC で あ る 。 |
||
|
.fini |
こ の セ ク シ ョ ン は プ ロ セ ス 終 了 コ ー ド に 置 か れ る 実 行 可 能 命 令 を 保 持 す る 。 プ ロ セ ス が 正 常 に 終 了 し た 場 合 、 シ ス テ ム は こ の セ ク シ ョ ン に あ る コ ー ド を 配 置 し て 実 行 す る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 使 用 さ れ る 属 性 タ イ プ は SHF_ALLOC と SHF_EXECINSTR で あ る 。 |
.gnu.version
こ の セ ク シ ョ ン は バ ー ジ ョ ン シ ン ボ ル テ ー ブ ル を 保 持 す る 。 そ の 内 容 は ElfN_Half 要 素 の 配 列 で あ る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_GNU_versym で あ る 。 使 用 さ れ る 属 性 タ イ プ は SHF_ALLOC で あ る 。
.gnu.version_d
こ の セ ク シ ョ ン は バ ー ジ ョ ン シ ン ボ ル の 定 義 を 保 持 す る 。 そ の 内 容 は ElfN_Verdef 構 造 体 の テ ー ブ ル で あ る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_GNU_verdef で あ る 。 使 用 さ れ る 属 性 タ イ プ は SHF_ALLOC で あ る 。
.gnu.version_r
こ の セ ク シ ョ ン は バ ー ジ ョ ン シ ン ボ ル が 必 要 と す る 要 素 を 保 持 す る 。 そ の 内 容 は ElfN_Verneed 構 造 体 の テ ー ブ ル で あ る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_GNU_versym で あ る 。 使 用 さ れ る 属 性 タ イ プ は shf_alloc で あ る 。
|
.got |
こ の セ ク シ ョ ン は グ ロ ー バ ル オ フ セ ッ ト テ ー ブ ル を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 属 性 は プ ロ セ ッ サ 毎 に 異 な る 。 |
||
|
.hash |
こ の セ ク シ ョ ン は シ ン ボ ル ハ ッ シ ュ テ ー ブ ル を 保 持 す る 。 セ ク シ ョ ン の タ イ プ は SHT_HASH で あ る 。 使 用 さ れ る 属 性 は SHF_ALLOC で あ る 。 |
||
|
.init |
こ の セ ク シ ョ ン は プ ロ セ ス 初 期 化 コ ー ド に 配 置 さ れ る 実 行 可 能 命 令 を 保 持 す る 。 プ ロ グ ラ ム が 実 行 を 開 始 す る と 、 シ ス テ ム は メ イ ン プ ロ グ ラ ム エ ン ト リ ー ポ イ ン ト を 呼 び 出 す 前 に 、 こ の セ ク シ ョ ン に あ る コ ー ド を 配 置 し て 実 行 す る 。 こ の セ ク シ ョ ン は の タ イ プ は SHT_PROGBITS で あ る 。 使 用 さ れ る 属 性 は SHF_ALLOC と SHF_EXECINSTR で あ る 。 |
||
|
.interp |
こ の セ ク シ ョ ン は プ ロ グ ラ ム イ ン タ ー プ リ タ ー の パ ス 名 を 保 持 す る 。 フ ァ イ ル に こ の セ ク シ ョ ン を 含 む ロ ー ド 可 能 セ グ メ ン ト が あ る 場 合 、 そ の セ ク シ ョ ン の 属 性 に は SHF_ALLOC ビ ッ ト が 含 ま れ る 。 そ れ 以 外 の 場 合 こ の ビ ッ ト は オ フ に な る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 |
||
|
.line |
こ の セ ク シ ョ ン は シ ン ボ リ ッ ク デ バ ッ グ の た め の 行 番 号 情 報 を 保 持 す る 。 こ こ に は プ ロ グ ラ ム ソ ー ス コ ー ド と マ シ ン コ ー ド の 対 応 関 係 が 記 述 さ れ る 。 内 容 は 指 定 さ れ て い な い 。 こ の セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 属 性 タ イ プ は 使 用 さ れ な い 。 |
||
|
.note |
こ の セ ク シ ョ ン は "Note Section" 形 式 で 情 報 を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_NOTE で あ る 。 属 性 タ イ プ は 使 用 さ れ な い 。 通 常 OpenBSD ネ イ テ ィ ブ 実 行 可 能 フ ァ イ ル は 自 身 を 識 別 す る た め に .note.openbsd.ident セ ク シ ョ ン を 持 つ 。 こ れ に よ り カ ー ネ ル は 、 フ ァ イ ル を ロ ー ド す る 際 に 互 換 ELF バ イ ナ リ エ ミ ュ レ ー シ ョ ン テ ス ト を 回 避 で き る 。 |
.note.GNU-stack
こ の セ ク シ ョ ン は Linux の オ ブ ジ ェ ク ト フ ァ イ ル で ス タ ッ ク 属 性 を 宣 言 す る の に 使 用 さ れ る 。 セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 使 用 さ れ る 属 性 は SHF_EXECINSTR だ け で あ る 。 こ の 属 性 は GNU リ ン カ ー に 対 し て オ ブ ジ ェ ク ト フ ァ イ ル が 実 行 可 能 な ス タ ッ ク (executable stack) を 必 要 と す る 示 す も の で あ る 。
|
.plt |
こ の セ ク シ ョ ン は 手 続 き (procedure) リ ン ク テ ー ブ ル を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 属 性 は プ ロ セ ッ サ 毎 に 異 な る 。 |
||
|
.relNAME |
こ の セ ク シ ョ ン は 以 下 に 記 述 さ れ る 再 配 置 情 報 を 保 持 す る 。 フ ァ イ ル が 再 配 置 を 含 む ロ ー ド 可 能 セ グ メ ン ト を 持 っ て い る 場 合 、 こ の セ ク シ ョ ン の 属 性 は SHF_ALLOC ビ ッ ト を 含 む 。 そ れ 以 外 の 場 合 、 そ の ビ ッ ト は オ フ で あ る 。 慣 例 と し て 、 "NAME" は 再 配 置 が 適 用 さ れ る セ ク シ ョ ン が 指 定 さ れ る 。 よ っ て .text に つ い て の 再 配 置 セ ク シ ョ ン は 、 通 常 は .rel.text と い う 名 前 を 持 つ 。 こ の セ ク シ ョ ン の タ イ プ は SHT_REL で あ る 。 |
||
|
.relaNAME |
こ の セ ク シ ョ ン は 以 下 に 記 述 さ れ る 再 配 置 情 報 を 保 持 す る 。 フ ァ イ ル が 再 配 置 を 含 む ロ ー ド 可 能 セ グ メ ン ト を 持 っ て い る 場 合 、 こ の セ ク シ ョ ン の 属 性 は SHF_ALLOC ビ ッ ト を 含 む 。 そ れ 以 外 の 場 合 、 そ の ビ ッ ト は オ フ で あ る 。 慣 例 と し て 、 "NAME" は 再 配 置 が 適 用 さ れ る セ ク シ ョ ン が 指 定 さ れ る 。 よ っ て .text に つ い て の 再 配 置 セ ク シ ョ ン は 、 通 常 は .rela.text と い う 名 前 を 持 つ 。 こ の セ ク シ ョ ン の タ イ プ は SHT_RELA で あ る 。 |
||
|
.rodata |
こ の セ ク シ ョ ン は リ ー ド オ ン リ ー の デ ー タ を 保 持 す る 。 こ の デ ー タ は プ ロ セ ス イ メ ー ジ に お け る 書 き 込 み 不 可 能 な セ グ メ ン ト に 置 か れ る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 使 用 さ れ る 属 性 は SHF_ALLOC で あ る 。 |
||
|
.rodata1 |
こ の セ ク シ ョ ン は リ ー ド オ ン リ ー の デ ー タ を 保 持 す る 。 こ の デ ー タ は プ ロ セ ス イ メ ー ジ に お け る 書 き 込 み 不 可 能 な セ グ メ ン ト に 置 か れ る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 使 用 さ れ る 属 性 は SHF_ALLOC で あ る 。 |
||
|
.shstrtab |
こ の セ ク シ ョ ン は セ ク シ ョ ン 名 を 保 持 す る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_STRTAB で あ る 。 属 性 タ イ プ は 使 用 さ れ な い 。 |
||
|
.strtab |
こ の セ ク シ ョ ン は 文 字 列 を 保 持 す る 。 最 も 一 般 的 な の は 、 シ ン ボ ル テ ー ブ ル エ ン ト リ ー に 関 連 づ け ら れ た 名 前 を 表 す 文 字 列 で あ る 。 フ ァ イ ル が シ ン ボ ル 文 字 列 テ ー ブ ル を 含 む ロ ー ド 可 能 セ グ メ ン ト を 持 つ 場 合 、 セ ク シ ョ ン の 属 性 は SHF_ALLOC ビ ッ ト を 含 む 。 そ れ 以 外 の 場 合 、 そ の ビ ッ ト は オ フ で あ る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_STRTAB で あ る 。 |
||
|
.symtab |
こ の セ ク シ ョ ン は シ ン ボ ル テ ー ブ ル を 保 持 す る 。 フ ァ イ ル が シ ン ボ ル テ ー ブ ル を 含 む ロ ー ド 可 能 セ グ メ ン ト を 持 つ 場 合 、 セ ク シ ョ ン の 属 性 は SHF_ALLOC ビ ッ ト を 含 む 。 そ れ 以 外 の 場 合 、 ビ ッ ト は オ フ で あ る 。 こ の セ ク シ ョ ン の タ イ プ は SHT_SYMTAB で あ る 。 |
||
|
.text |
こ の セ ク シ ョ ン は プ ロ グ ラ ム の "テ キ ス ト " ま た は 実 行 可 能 命 令 を 保 持 す る 。 セ ク シ ョ ン の タ イ プ は SHT_PROGBITS で あ る 。 使 用 さ れ る 属 性 は SHF_ALLOC と SHF_EXECINSTR で あ る 。 |
文 字 列 テ ー ブ ル セ ク シ ョ ン は ヌ ル 文 字 で 終 端 さ れ た キ ャ ラ ク タ ー 配 列 (通 常 文 字 列 と 呼 ば れ る も の ) を 保 持 す る 。 オ ブ ジ ェ ク ト フ ァ イ ル は こ れ ら の 文 字 列 を シ ン ボ ル 名 と セ ク シ ョ ン 名 を 表 す た め に 使 う 。 文 字 列 は 、 文 字 列 テ ー ブ ル セ ク シ ョ ン へ の イ ン デ ッ ク ス と し て 参 照 さ れ る 。 イ ン デ ッ ク ス 0 の 最 初 の バ イ ト は 、 ヌ ル バ イ ト ('\0') を 保 持 す る と 定 義 さ れ て い る 。 同 様 に 文 字 列 テ ー ブ ル の 最 後 の バ イ ト も ヌ ル 文 字 を 保 持 す る と 定 義 さ れ て い る 。 こ れ は 全 て の 文 字 列 が ヌ ル バ イ ト で 終 端 さ れ て い る こ と を 保 証 す る た め で あ る 。
オ ブ ジ ェ ク ト フ ァ イ ル の シ ン ボ ル テ ー ブ ル は 、 プ ロ グ ラ ム の シ ン ボ ル 定 義 と 参 照 を 配 置 ま た は 再 配 置 す る の に 必 要 な 情 報 を 保 持 す る 。
typedef struct
{
uint32_t st_name;
Elf32_Addr st_value;
uint32_t st_size;
unsigned char st_info;
unsigned char st_other;
uint16_t st_shndx;
} Elf32_Sym;
typedef struct
{
uint32_t st_name;
unsigned char st_info;
unsigned char st_other;
uint16_t st_shndx;
Elf64_Addr st_value;
uint64_t st_size;
} Elf64_Sym;
32 ビ ッ ト 版 と 64 ビ ッ ト 版 は 同 じ メ ン バ を 持 ち 、 単 に 順 番 が 異 な る だ け で あ る 。
|
st_name |
こ の メ ン バ は オ ブ ジ ェ ク ト フ ァ イ ル の シ ン ボ ル 文 字 列 テ ー ブ ル の イ ン デ ッ ク ス を 保 持 す る 。 シ ン ボ ル 文 字 列 テ ー ブ ル は シ ン ボ ル 名 の 文 字 表 現 を 保 持 す る 。 こ の 値 が 0 で な い 場 合 、 シ ン ボ ル 名 を 得 る た め の 文 字 テ ー ブ ル イ ン デ ッ ク ス を 表 す 。 そ れ 以 外 の 場 合 、 シ ン ボ ル テ ー ブ ル は 名 前 を 持 た な い 。 |
||
|
st_value |
こ の メ ン バ は 関 連 づ け ら れ た シ ン ボ ル の 値 を 表 す 。 |
||
|
st_size |
多 く の シ ン ボ ル に は そ れ に 関 連 づ け ら れ た サ イ ズ が あ る 。 シ ン ボ ル が サ イ ズ を 持 た な い 場 合 、 ま た は サ イ ズ が 不 明 な 場 合 、 こ の メ ン バ は 0 で あ る 。 |
||
|
st_info |
こ の メ ン バ は シ ン ボ ル の タ イ プ と バ イ ン デ ィ ン グ (binding) 属 性 を 指 定 す る : |
STT_NOTYPE
|
シ ン ボ ル の タ イ プ が 定 義 さ れ て い な い 。 |
|||
|
STT_OBJECT |
シ ン ボ ル は デ ー タ オ ブ ジ ェ ク ト に 関 連 づ け ら れ て い る 。 |
||
|
STT_FUNC |
シ ン ボ ル は 関 数 ま た は そ の 他 の 実 行 コ ー ド に 関 連 づ け ら れ て い る 。 |
||
|
STT_SECTION |
シ ン ボ ル は セ ク シ ョ ン に 関 連 づ け ら れ て い る 。 こ の タ イ プ の シ ン ボ ル テ ー ブ ル エ ン ト リ ー は 、 主 と し て 再 配 置 の た め に 存 在 し 、 通 常 は STB_LOCAL バ イ ン デ ィ ン グ を 持 つ 。 |
||
|
STT_FILE |
慣 例 と し て 、 シ ン ボ ル の 名 前 は オ ブ ジ ェ ク ト フ ァ イ ル に 関 連 づ け ら れ た ソ ー ス フ ァ イ ル の 名 前 を 指 定 す る 。 フ ァ イ ル シ ン ボ ル は STB_LOCAL バ イ ン デ ィ ン グ を 持 ち 、 そ の セ ク シ ョ ン イ ン デ ッ ク ス は SHN_ABS で あ る 。 フ ァ イ ル シ ン ボ ル は 、 フ ァ イ ル に 他 の STB_LOCAL シ ン ボ ル が あ る 場 合 は 、 そ れ よ り も 先 に 来 る 。 |
||
|
STT_LOPROC |
こ の 値 以 上 で STT_HIPROC 以 下 の 範 囲 は プ ロ セ ッ サ 固 有 の 意 味 に 予 約 さ れ て い る 。 |
||
|
STT_HIPROC |
こ の 値 以 下 で STT_LOPROC 以 上 の 範 囲 は プ ロ セ ッ サ 固 有 の 意 味 に 予 約 さ れ て い る 。 |
||
|
STB_LOCAL |
局 所 的 シ ン ボ ル は そ の 定 義 を 含 む オ ブ ジ ェ ク ト フ ァ イ ル の 外 か ら は 見 え な い 。 同 じ 名 前 の 局 所 的 シ ン ボ ル は 、 お 互 い に 影 響 を 受 け る こ と な く 、 複 数 の フ ァ イ ル に 存 在 で き る 。 |
||
|
STB_GLOBAL |
大 域 的 シ ン ボ ル は 結 び つ け ら れ て い る 全 て の オ ブ ジ ェ ク ト フ ァ イ ル か ら 見 え る 。 1 つ の フ ァ イ ル で 大 域 的 シ ン ボ ル が 定 義 さ れ て い た ら 、 他 の フ ァ イ ル で は 同 じ シ ン ボ ル へ の 参 照 は 未 定 義 で な け れ ば な ら な い 。 |
||
|
STB_WEAK |
弱 シ ン ボ ル は 大 域 的 シ ン ボ ル に 似 て い る が 、 そ の 定 義 は 優 先 度 が 低 い 。 |
||
|
STB_LOPROC |
こ の 値 以 上 で STB_HIPROC 以 下 の 範 囲 は プ ロ セ ッ サ 固 有 の 意 味 に 予 約 さ れ て い る 。 |
||
|
STB_HIPROC |
こ の 値 以 下 で STB_LOPROC 以 上 の 範 囲 は プ ロ セ ッ サ 固 有 の 意 味 に 予 約 さ れ て い る 。 |
バ イ ン デ ィ ン グ と タ イ プ フ ィ ー ル ド を パ ッ ク し た り ア ン パ ッ ク し た り す る マ ク ロ が あ る :
ELF32_ST_BIND (info) ま た は ELF64_ST_BIND (info) st_info の 値 か ら バ イ ン デ ィ ン グ を 取 り 出 す 。
ELF32_ST_TYPE
(info)
ま た は
ELF64_ST_TYPE
(info)
st_info
の 値 か ら タ
イ プ を 取 り 出
す 。
ELF32_ST_INFO
(bind,
type) ま た は
ELF64_ST_INFO
(bind,
type)
バ イ ン デ ィ ン
グ と タ イ プ を
st_info
の 値 に 変 換
す る 。
|
st_other |
こ の メ ン バ は シ ン ボ ル の visibility (見 え る 範 囲 ) を 規 定 す る 。 |
STV_DEFAULT
|
デ フ ォ ル ト の シ ン ボ ル visibility ル ー ル 。 |
|||
|
STV_INTERNAL |
プ ロ セ ッ サ 固 有 の 隠 し ク ラ ス 。 |
||
|
STV_HIDDEN |
シ ン ボ ル は 他 の モ ジ ュ ー ル か ら は 利 用 で き な い 。 |
||
|
STV_PROTECTED |
横 取 り で き ず (not preemptible)、 公 開 さ れ な い 。 |
visibility 種 別 を 抽 出 す る た め の マ ク ロ が あ る 。
ELF32_ST_VISIBILITY (other) ま た は ELF64_ST_VISIBILITY (other)
|
st_shndx |
各 シ ン ボ ル テ ー ブ ル エ ン ト リ ー は 、 い く つ か の セ ク シ ョ ン に 関 連 し て "定 義 さ れ て い る "。 こ の メ ン バ は 関 連 す る セ ク シ ョ ン ヘ ッ ダ ー テ ー ブ ル イ ン デ ッ ク ス を 保 持 す る 。 |
再 配 置 は シ ン ボ ル 参 照 と シ ン ボ ル 定 義 を 結 合 す る プ ロ セ ス で あ る 。 再 配 置 可 能 フ ァ イ ル は セ ク シ ョ ン の 内 容 を ど の よ う に 修 正 す る か に 関 す る 情 報 を 持 た な け れ ば な ら な い 。 こ れ に よ り 、 実 行 可 能 フ ァ イ ル と 共 有 オ ブ ジ ェ ク ト フ ァ イ ル は プ ロ セ ス の プ ロ グ ラ ム イ メ ー ジ に つ い て の 正 し い 情 報 を 持 つ こ と が で き る 。 再 配 置 エ ン ト リ ー は 以 下 の よ う な デ ー タ で あ る 。
加 数 を 必 要 と し な い 再 配 置 構 造 体 。
typedef struct
{
Elf32_Addr r_offset;
uint32_t r_info;
} Elf32_Rel;
typedef struct
{
Elf64_Addr r_offset;
uint64_t r_info;
} Elf64_Rel;
加 数 を 必 要 と す る 再 配 置 構 造 体 。
typedef struct
{
Elf32_Addr r_offset;
uint32_t r_info;
int32_t r_addend;
} Elf32_Rela;
typedef struct
{
Elf64_Addr r_offset;
uint64_t r_info;
int64_t r_addend;
} Elf64_Rela;
|
r_offset |
こ の メ ン バ は 再 配 置 動 作 が 適 用 さ れ る 位 置 を 与 え る 。 再 配 置 可 能 フ ァ イ ル の 場 合 、 こ の 値 は セ ク シ ョ ン の 先 頭 か ら 再 配 置 で 影 響 を 受 け る 格 納 単 位 (storage unit) ま で の バ イ ト オ フ セ ッ ト で あ る 。 実 行 可 能 フ ァ イ ル ま た は 共 有 オ ブ ジ ェ ク ト の 場 合 、 こ の 値 は 再 配 置 で 影 響 を 受 け る 格 納 単 位 の 仮 想 ア ド レ ス で あ る 。 |
||
|
r_info |
こ の メ ン バ は 、 再 配 置 が 行 わ れ な け れ ば な ら な い シ ン ボ ル テ ー ブ ル イ ン デ ッ ク ス と 、 適 用 さ れ る 再 配 置 の タ イ プ の 両 方 を 与 え る 。 再 配 置 タ イ プ は プ ロ セ ッ サ 毎 に 異 な る 。 テ キ ス ト が 再 配 置 エ ン ト リ ー の 再 配 置 タ イ プ ま た は シ ン ボ ル テ ー ブ ル イ ン デ ッ ク ス を 参 照 し て い る 場 合 、 そ れ ぞ れ エ ン ト リ ー の r_info メ ン バ に 対 し て 、 そ れ ぞ れ ELF[32|64]_R_TYPE と ELF[32|64]_R_SYM を 適 用 し た 結 果 を 意 味 す る 。 |
||
|
r_addend |
こ の メ ン バ は 定 数 の 加 数 を 指 定 す る 。 こ の 加 数 は 再 配 置 可 能 フ ィ ー ル ド に 格 納 さ れ る 値 を 計 算 す る た め に 使 わ れ る 。 |
.dynamic セ ク シ ョ ン は 、 関 連 す る 動 的 リ ン ク 情 報 を 保 持 し て い る 一 連 の 構 造 体 を 保 持 す る 。 d_tag メ ン バ は d_un の 解 釈 を 制 御 す る 。
typedef struct
{
Elf32_Sword d_tag;
union {
Elf32_Word d_val;
Elf32_Addr d_ptr;
} d_un;
} Elf32_Dyn;
extern Elf32_Dyn _DYNAMIC[];
typedef struct
{
Elf64_Sxword d_tag;
union {
Elf64_Xword d_val;
Elf64_Addr d_ptr;
} d_un;
} Elf64_Dyn;
extern Elf64_Dyn _DYNAMIC[];
|
d_tag |
こ の メ ン バ は 以 下 の 値 を 持 つ こ と が で き る : |
DT_NULL
|
動 的 セ ク シ ョ ン の 終 り の マ ー ク |
|||
|
DT_NEEDED |
必 要 な ラ イ ブ ラ リ の 名 前 へ の 文 字 列 テ ー ブ ル オ フ セ ッ ト |
||
|
DT_PLTRELSZ |
PLT 再 配 置 (reloc) テ ー ブ ル の サ イ ズ (バ イ ト 単 位 ) |
||
|
DT_PLTGOT |
PLT と GOT (ま た は 何 れ か 一 方 ) の ア ド レ ス |
||
|
DT_HASH |
シ ン ボ ル ハ ッ シ ュ テ ー ブ ル の ア ド レ ス |
||
|
DT_STRTAB |
文 字 列 テ ー ブ ル の ア ド レ ス |
||
|
DT_SYMTAB |
シ ン ボ ル テ ー ブ ル の ア ド レ ス |
||
|
DT_RELA |
Rela 再 配 置 テ ー ブ ル の ア ド レ ス |
||
|
DT_RELASZ |
Rela テ ー ブ ル の サ イ ズ (バ イ ト 単 位 ) |
||
|
DT_RELAENT |
Rela テ ー ブ ル エ ン ト リ ー の サ イ ズ (バ イ ト 単 位 ) |
||
|
DT_STRSZ |
文 字 列 テ ー ブ ル の サ イ ズ (バ イ ト 単 位 ) |
||
|
DT_SYMENT |
シ ン ボ ル テ ー ブ ル エ ン ト リ ー の サ イ ズ (バ イ ト 単 位 ) |
||
|
DT_INIT |
初 期 化 関 数 の ア ド レ ス |
||
|
DT_FINI |
終 了 関 数 の ア ド レ ス |
||
|
DT_SONAME |
共 有 オ ブ ジ ェ ク ト の 名 前 へ の 文 字 列 テ ー ブ ル オ フ セ ッ ト |
||
|
DT_RPATH |
ラ イ ブ ラ リ 検 索 パ ス へ の 文 字 列 テ ー ブ ル オ フ セ ッ ト (推 奨 さ れ な い ) |
||
|
DT_SYMBOLIC |
リ ン カ ー が シ ン ボ ル の 実 行 可 能 フ ァ イ ル よ り 前 に こ の 共 有 オ ブ ジ ェ ク ト を 検 索 し た 場 合 は 、 警 告 を 出 す 。 |
||
|
DT_REL |
Rel 再 配 置 テ ー ブ ル の ア ド レ ス |
||
|
DT_RELSZ |
Rel テ ー ブ ル の サ イ ズ (バ イ ト 単 位 ) |
||
|
DT_RELENT |
Rel テ ー ブ ル エ ン ト リ ー の サ イ ズ (バ イ ト 単 位 ) |
||
|
DT_PLTREL |
PLT が 参 照 す る 再 配 置 テ ー ブ ル の タ イ プ (Rela ま た は Rel) |
||
|
DT_DEBUG |
デ バ ッ グ の た め に 使 用 さ れ て い る 。 内 容 は 定 義 さ れ て い な い 。 |
||
|
DT_TEXTREL |
こ れ が 指 定 さ れ て い な い 場 合 、 書 き 込 み 不 可 の セ グ メ ン ト に は 再 配 置 は 適 用 さ れ な い 。 |
||
|
DT_JMPREL |
PLT 専 用 の 再 配 置 エ ン ト リ ー の ア ド レ ス |
||
|
DT_BIND_NOW |
実 行 可 能 フ ァ イ ル に 制 御 を 譲 る 前 に 、 全 て の 再 配 置 を 処 理 す る よ う に 動 的 リ ン カ ー に 指 示 す る 。 |
||
|
DT_RUNPATH |
ラ イ ブ ラ リ 検 索 パ ス へ の 文 字 列 テ ー ブ ル オ フ セ ッ ト |
||
|
DT_LOPROC |
プ ロ セ ッ サ 固 有 の 意 味 の 開 始 |
||
|
DT_HIPROC |
プ ロ セ ッ サ 固 有 の 意 味 の 終 了 |
||
|
d_val |
こ の メ ン バ は 様 々 な 意 味 に 解 釈 さ れ る 整 数 値 で あ る 。
|
d_ptr |
こ の メ ン バ は プ ロ グ ラ ム の 仮 想 ア ド レ ス を 表 す 。 こ れ ら の ア ド レ ス を 解 釈 す る 際 に 、 実 際 の ア ド レ ス は 元 々 の フ ァ イ ル の 値 と メ モ リ ー の 基 底 ア ド レ ス か ら 計 算 さ れ る 。 フ ァ イ ル に は こ れ ら の ア ド レ ス を 修 正 す る た め の 再 配 置 エ ン ト リ ー を 含 め て は な ら な い 。 |
|||
|
_DYNAMIC |
.dynamic セ ク シ ョ ン に あ る 全 て の 動 的 構 造 体 を 含 む 配 列 。 こ れ は 自 動 的 に リ ン カ ー に 渡 さ れ る 。 |
注 意
ELF は System V で 初 め て 登 場 し た 。 ELF 自 体 は System V で 初 め て 登 場 し た 。 ELF フ ォ ー マ ッ ト は 採 択 さ れ た 標 準 で あ る 。
e_phnum , e_shnum , e_strndx に 対 す る 拡 張 は 、 い ず れ も Linux で の 拡 張 で あ る 。 Sun, BSD, AMD64 も こ れ に 対 応 し て い る 。 詳 し い 情 報 は 、 関 連 項 目 を 参 照 。
関 連 項 目
as (1), gdb (1), ld (1), objdump (1), execve (2), core (5)
Hewlett-Packard, Elf-64 Object File Format .
Santa Cruz Operation, System V Application Binary Interface .
UNIX System Laboratories, "Object Files", Executable and Linking Format (ELF) .
Sun Microsystems, Linker and Libraries Guide .
AMD64 ABI Draft, System V Application Binary Interface AMD64 Architecture Processor Supplement .
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。