?إå??ե?????
<elf.h>
?ϡ?ELF
?¹Է????Х??ʥ??ե??????Υե????ޥåȤ????????Ƥ??ޤ???
ELF
?ˤ????̤μ¹Բ?ǽ?ե????롢?????ֲ?ǽ?ʥ??֥??????ȥե????롢
?????ե????롢??ͭ?饤?֥??꤬?????ޤ???
ELF
?ե??????ե????ޥåȤ??ȤäƤ???
?¹Բ?ǽ?ե??????? ELF
?إå????????ޤ???
?????ơ??ץ????????إå??ơ??֥뤫??
???????????إå??ơ??֥롢???뤤?Ϥ???ξ????³???ޤ???
ELF
?إå??ϡ????˥ե??????Υ??ե??å?
0 ?ˤ????ޤ???
?ץ????????إå??ơ??֥???
???????????إå??ơ??֥??Υե????????Υ??ե??åȤϡ?
ELF ?إå????????????Ƥ??ޤ??? 2
?ĤΥơ??֥??ϡ??ե?????????ħ?λĤ?????ʬ?Ҥ??ޤ???
?ͥ??ƥ??֥??????ƥ??????? ELF
?Х??ʥ??ե??????????????륢?ץꥱ?????????ϡ?
???Υ??????????ɤ?
<elf.h>
?롼?ɤ????????Ǥ??ߤޤ???
???????Υ??ץꥱ?????????ϡ?????̾
“Elf_xxx”
?ˤ??????????פȹ?¤?Τؤλ??Ȥ??ޤ?ɬ?פ????ꡢ
“ELF_xxx”
?ˤ????ޥ????ؤλ??Ȥ??ޤ?ɬ?פ??????Ǥ??礦??
???Τ褦?ˤ??Ƶ??Ҥ??줿???ץꥱ?????????ϡ?
?ɤΤ褦?ʥ??????ƥ??????Ǥ??äƤ⡢
?ۥ??Ȥ? 32
?ӥåȤʤΤ??????뤤?? 64
?ӥåȤʤΤ?
?Ȥ??????Ȥˤ??ʤ??ǡ??????ѥ?????ǽ?Ǥ???
̤?ΤΥ??????ƥ??????? ELF
?ե???????????????ɬ?פ????륢?ץꥱ?????????ϡ?
<elf.h>
?ǤϤʤ???
<sys/elf32.h>
??
<sys/elf64.h>
??ξ???롼?ɤ???ɬ?פ??????ޤ???
?????ˡ????ƤΥ????פȹ?¤?Τϡ?
“Elf32_xxx” ?? “Elf64_xxx”
?ˤ??äƶ??̤???ɬ?פ??????ޤ???
?ޥ????ϡ? “ELF32_xxx” ?ޤ???
“ELF64_xxx”
?ˤ??äƶ??̤???ɬ?פ??????ޤ???
?????ƥ??Υ??????ƥ????㤬???Ȥ????Ǥ??äƤ⡢????
<sys/elf_generic.h>
?????Ǥʤ???
<sys/elf_common.h>
?⥤?롼?ɤ??ޤ???
???????Υإå??ե??????Ǥϡ?
???Ǹ??ڤ????إå??? C
??¤?ΤȤ??Ƶ??Ҥ???
?????˲ä???ưŪ????????????
?????֥??????????ȥ????ܥ??ơ??֥??Τ????ι?¤?Τ??ޤ??Ǥ??ޤ???
?ʲ??Υ????פ???32
?ӥåȥ??????ƥ??????Τ????˻Ȥ????Ƥ??ޤ?:
Elf32_Addr ????̵???ץ??????ॢ?ɥ쥹
Elf32_Half ????̵???ϡ??ե?ɥե???????
Elf32_Off ????̵???ե????륪?ե??å?
Elf32_Sword ?????դ???????
Elf32_Word ?ե??????ɤޤ???????̵????????
Elf32_Size ????̵?????֥??????ȥ?????
64
?ӥåȥ??????ƥ??????Ѥ˰ʲ??Υ????פ??Ѱդ????Ƥ??ޤ?:
Elf64_Addr ????̵???ץ??????ॢ?ɥ쥹
Elf64_Half ????̵???ϡ??ե?ɥե???????
Elf64_Off ????̵???ե????륪?ե??å?
Elf64_Sword ?????դ???????
Elf64_Word ?ե??????ɤޤ???????̵????????
Elf64_Size ????̵?????֥??????ȥ?????
Elf64_Quarter ????̵????????????ɥե???????
ELF
?ե??????ե????ޥåȤ????????????ƤΥǡ?????¤?ϡ?
??Ϣ???륯?饹?Τ????? “??????”
???????ȶ???Ĵ???Υ????ɥ饤???˽??äƤ??ޤ???
ɬ?פʤ??С??ǡ?????¤?ϡ?4
?Х??ȥ??֥??????Ȥ? 4
?Х??ȶ????Ȥʤ뤳?Ȥ??ݾڤ??뤿???ˡ?
??¤?ΤΥ???????????Ū?? 4
???ܿ??ˤ????Ȥ????ä????ʤǡ?
????Ū?ʥѥǥ????ޤ??ޤ???
ELF ?إå??ϡ?Elf32_Ehdr ???ޤ???
Elf64_Ehdr
???ˤ??äƵ??Ҥ????Ƥ??ޤ?:
typedef struct {
unsigned char e_ident[EI_NIDENT];
Elf32_Half e_type;
Elf32_Half e_machine;
Elf32_Word e_version;
Elf32_Addr e_entry;
Elf32_Off e_phoff;
Elf32_Off e_shoff;
Elf32_Word e_flags;
Elf32_Half e_ehsize;
Elf32_Half e_phentsize;
Elf32_Half e_phnum;
Elf32_Half e_shentsize;
Elf32_Half e_shnum;
Elf32_Half e_shstrndx;
} Elf32_Ehdr;
typedef struct {
unsigned char e_ident[EI_NIDENT];
Elf64_Quarter e_type;
Elf64_Quarter e_machine;
Elf64_Half e_version;
Elf64_Addr e_entry;
Elf64_Off e_phoff;
Elf64_Off e_shoff;
Elf64_Half e_flags;
Elf64_Quarter e_ehsize;
Elf64_Quarter e_phentsize;
Elf64_Quarter e_phnum;
Elf64_Quarter e_shentsize;
Elf64_Quarter e_shnum;
Elf64_Quarter e_shstrndx;
} Elf64_Ehdr;
?ե??????ɤϡ??ʲ??ΰ?̣?????äƤ??ޤ?:
e_ident
- ???ΥХ????????ϥե????????ɤΤ褦?˲??᤹?٤????????ꤷ?ޤ???
?????ϡ??ץ????å??ޤ??ϥե??????λĤ??????Ƥ?????Ω???Ƥ??ޤ???
?????????????????Ǥϡ?
EI_
?dz??Ϥ????ޥ????ˤ???̾?դ????졢?ޤ???Ƭ??
ELF
???Ĥ????ͤ????????ޤ???
?ʲ??Υޥ??????????????Ƥ??ޤ?:
EI_MAG0
- ?ޥ??å??ֹ????? 1 ?ΥХ??ȡ?
ELFMAG0
?Ǥ??뤳?Ȥ?ɬ?פǤ???
EI_MAG1
- ?ޥ??å??ֹ????? 2 ?ΥХ??ȡ?
ELFMAG1
?Ǥ??뤳?Ȥ?ɬ?פǤ???
EI_MAG2
- ?ޥ??å??ֹ????? 3 ?ΥХ??ȡ?
ELFMAG2
?Ǥ??뤳?Ȥ?ɬ?פǤ???
EI_MAG3
- ?ޥ??å??ֹ????? 4 ?ΥХ??ȡ?
ELFMAG3
?Ǥ??뤳?Ȥ?ɬ?פǤ???
EI_CLASS
- ?? 5
?ΥХ??Ȥϡ??????ΥХ??ʥ??ե??????Υ??????ƥ??????????̤??ޤ?:
ELFCLASSNONE
- ???Υ??饹?ϡ??????Ǥ???
ELFCLASS32
- ?????ϡ?32
?ӥåȥ??????ƥ??????????????ޤ???
?ե????????֤Ȳ??ۥ??ɥ쥹???֤?
4 ?????Х??ȤޤǤˤ????ޤ?
?ޥ??????б????ޤ???
ELFCLASS64
- ?????ϡ?64
?ӥåȥ??????ƥ??????????????ޤ???
EI_DATA
- ?? 6 ?ΥХ??Ȥϡ?
?ե??????Υץ????å???ͭ?ǡ????Υ????ǥ??????ꤷ?ޤ???
???ߡ????Υ????ǥ??????ݡ??Ȥ????Ƥ??ޤ?:
ELFDATANONE
- ̤?ΤΥǡ????ե????ޥåȡ?
ELFDATA2LSB
- 2 ???????????ȥ륨???ǥ???????
ELFDATA2MSB
- 2 ?????????ӥå??????ǥ???????
EI_VERSION
- ELF ???ͽ??ΥС????????ʥ???:
EV_NONE
- ?????ʥС?????????
EV_CURRENT
- ???ߤΥС?????????
EI_OSABI
- ???ΥХ??Ȥϡ????֥??????Ȥ??оݤǤ??롢
???ڥ졼?ƥ??????ƥ??? ABI
?????̤??ޤ??? ¾?? ELF
??¤???Υե??????ɤˤϡ?
?ץ??åȥե???????¸?ΰ?̣?Τ??Τ??????ޤ???
???Τ褦?ʥե??????ɤβ????ϡ????ΥХ??Ȥ??ͤǷ??ꤵ???ޤ???
?????ͤ??????????????Ƥ??ޤ?:
ELFOSABI_SYSV
- UNIX System V ABI??
ELFOSABI_HPUX
- HP-UX ???ڥ졼?ƥ??????ƥ?
ABI??
ELFOSABI_NETBSD
- NetBSD
???ڥ졼?ƥ??????ƥ? ABI??
ELFOSABI_LINUX
- GNU/Linux ???ڥ졼?ƥ??????ƥ?
ABI??
ELFOSABI_HURD
- GNU/Hurd ???ڥ졼?ƥ??????ƥ?
ABI??
ELFOSABI_86OPEN
- 86Open Common IA32 ABI??
ELFOSABI_SOLARIS
- Solaris ???ڥ졼?ƥ??????ƥ?
ABI??
ELFOSABI_MONTEREY
- Monterey ?ץ????????? ABI??
ELFOSABI_IRIX
- IRIX ???ڥ졼?ƥ??????ƥ?
ABI??
ELFOSABI_FREEBSD
- FreeBSD
???ڥ졼?ƥ??????ƥ? ABI??
ELFOSABI_TRU64
- TRU64 UNIX ???ڥ졼?ƥ??????ƥ?
ABI??
ELFOSABI_ARM
- ARM ???????ƥ????? ABI??
ELFOSABI_STANDALONE
- Standalone (?Ȥ߹???) ABI??
EI_ABIVERSION
- ???ΥХ??Ȥϡ????֥??????Ȥ??оݤǤ???
ABI ?ΥС????????????̤??ޤ???
???Υե??????ɤϡ?Ʊ?? ABI
?Ǥ⡢
?ߴ?????̵??????Ʊ?Τ????̤??뤿???˻??Ѥ????ޤ???
?С????????ֹ??β????ϡ?EI_OSABI
?ե??????ɤǼ??̤????? ABI
?˰?¸???ޤ???
???λ??ͤ˽??륢?ץꥱ?????????ϡ???
0 ?????Ѥ??ޤ???
EI_PAD
- ?ѥǥ??λϤᡣ
???????ΥХ??Ȥϡ?ͽ???Ƥ??ꡢ0
?˥??åȤ????ޤ???
???????ɤ??ץ????????ϡ???????̵?뤹??ɬ?פ??????ޤ???
???衢???ȤäƤ??ʤ??Х??Ȥ˰?̣??Ϳ?????줿???ˤϡ?
EI_PAD ???ͤ??Ѥ????ޤ???
EI_BRAND
- ???????ƥ????㼱?̻ҤλϤᡣ
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_486
- Intel 80486
EM_860
- Intel 80860
EM_MIPS
- MIPS RS3000 (?ӥå??????ǥ??????Τ?)
EM_MIPS_RS4_BE
- MIPS RS4000 (?ӥå??????ǥ??????Τ?)
EM_SPARC64
- SPARC v9 64-bit ??????
EM_PARISC
- HPPA
EM_PPC
- PowerPC
EM_ALPHA
- Compaq [DEC] Alpha
e_version
- ???Υ????Фϡ??ե??????С????????????̤??ޤ?:
EV_NONE
- ?????ʥС?????????
EV_CURRENT
- ???ߤΥС?????????
e_entry
- ???Υ????Фϡ??????ƥब?ǽ??????????ܤ???
?Ĥޤ??ץ??????Ϥ??벾?ۥ??ɥ쥹???ޤ???
?ե??????˥????ȥ??ݥ????Ȥ??ʤ??ʤ??С????Υ????Ф?
0 ?ˤʤ??ޤ???
e_phoff
- ???Υ????Фϡ?
?ץ????????إå??ơ??֥??ΥХ???ñ?̤Υե????륪?ե??åȤ??????ޤ???
e_shoff
- ???Υ????Фϡ?
???????????إå??ơ??֥??ΥХ???ñ?̤Υե????륪?ե??åȤ??????ޤ???
?ե??????˥??????????إå??ơ??֥뤬?ʤ??ʤ??С????Υ????Ф?
0 ?ˤʤ??ޤ???
e_flags
- ???Υ????Фϡ??ե??????˴?Ϣ???롢?ץ????å??˸?ͭ?ʥե饰???????ޤ???
?ե饰̾?ϡ?EF_`machine_flag'
?Ȥ????????ˤʤ??ޤ???
???ߡ????????줿?ե饰?Ϥ????ޤ?????
e_ehsize
- ???Υ????Фϡ?ELF
?إå??ΥХ???ñ?̤??礭?????????ޤ???
e_phentsize
- ???Υ????Фϡ?
?ե??????Υץ????????إå??ơ??֥??ˤ??륨???ȥ?
1 ??ʬ?Υ????????????ޤ???
???ƤΥ????ȥ??ϡ?Ʊ???礭???Ǥ???
e_phnum
- ???Υ????Фϡ??ץ????????إå??ơ??֥????Υ????ȥ??θĿ????????ޤ???
?Ĥޤꡢ e_phentsize ??
e_phnum
???Ѥϡ??ơ??֥??ΥХ???ñ?̤??礭????Ϳ???ޤ???
?ե??????˥ץ????????إå????ʤ??ʤ??С?
e_phnum ???ͤ? 0
?ˤʤ??ޤ???
e_shentsize
- ???Υ????Фϡ????????????إå??ΥХ???ñ?̤??礭?????????ޤ???
???????????إå??ϡ?
???????????إå??ơ??֥??????? 1
?ĤΥ????ȥ??Ǥ?;
???ƤΥ????ȥ??ϡ?Ʊ???礭???Ǥ???
e_shnum
- ???Υ????Фϡ????????????إå??ơ??֥????Υ????ȥ??θĿ????????ޤ???
?Ĥޤꡢ e_shentsize ??
e_shnum
???Ѥϡ????????????إå??ơ??֥??ΥХ???ñ?̤??礭????Ϳ???ޤ???
?ե??????˥??????????إå??ơ??֥뤬?ʤ??ʤ??С?
e_shnum ???ͤ? 0
?ˤʤ??ޤ???
e_shstrndx
- ???Υ????Фϡ?
???????????إå??ơ??֥??Ρ?
??????????̾ʸ?????ơ??֥??˷??ӤĤ????줿?????ȥ??ؤ?
?????ǥå??????????ޤ???
?ե??????˥?????????̾ʸ?????ơ??֥뤬?ʤ??ʤ??С?
???Υ????Ф??? SHN_UNDEF
???????ޤ???
?¹Բ?ǽ?ե??????ޤ??϶?ͭ???֥??????ȥե??????Υץ????????إå??ơ??֥??ϡ?
??¤?Τ??????Ǥ??? ?ƹ?¤?Τϡ?
?ץ????????¹Ԥ˥????ƥबɬ?פȤ??롢?????????????ξ????Ҥ??ޤ???
???֥??????ȥե??????? ??????????
?ϡ?1 ?İʾ??? ??????????
???ޤߤޤ??? ?ץ????????إå??ϡ?
?¹Բ?ǽ?ե??????ȶ?ͭ???֥??????ȥե??????????ǰ?̣???????ޤ???
?ե??????ϡ?ELF ?إå???
e_phentsize ?? e_phnum
?????ФǤ??켫?ȤΥץ????????إå????????????ꤷ?ޤ???
ELF
?¹Է????Υإå???Ʊ?ͤˡ?
?ץ????????إå??⥢?????ƥ??????˽????ۤʤ??С??????????????ޤ?:
typedef struct {
Elf32_Word p_type;
Elf32_Off p_offset;
Elf32_Addr p_vaddr;
Elf32_Addr p_paddr;
Elf32_Size p_filesz;
Elf32_Size p_memsz;
Elf32_Word p_flags;
Elf32_Size p_align;
} Elf32_Phdr;
typedef struct {
Elf64_Half p_type;
Elf64_Half p_flags;
Elf64_Off p_offset;
Elf64_Addr p_vaddr;
Elf64_Addr p_paddr;
Elf64_Size p_filesz;
Elf64_Size p_memsz;
Elf64_Size p_align;
} Elf64_Phdr;
32 ?ӥåȤ? 64
?ӥåȤΥץ????????إå??δ֤μ??ʺ??ϡ?
??¤?????? p_flags
?????Фΰ??֤????Ǥ???
p_type
- ??¤?? Phdr
?Τ??Υ????Фϡ????????????Ǥ????Ҥ??Ƥ??륻???????Ȥμ???????
?ɤΤ褦?????????Ǥ????᤹?٤??????ޤ???
PT_NULL
- ???????????ǤϻȤäƤ??ޤ??ޤ???¾?Υ????Ф??ͤ?̤?????Ǥ???
?????ˤ??ꡢ?ץ????????إå?????̵?뤵???륨???ȥ??????Ƥޤ???
PT_LOAD
- ???????????Ǥϡ??????ɲ?ǽ?ʥ????????Ȥ????ꤷ?ޤ???
?????? p_filesz ?? p_memsz
?ǵ??Ҥ????ޤ???
?ե????뤫???ΥХ??Ȥϡ??????ꥻ???????Ȥ???Ƭ?˥ޥåפ????ޤ???
?????????ȤΥ????ꥵ???? (p_memsz)
???ե????륵???? (p_filesz)
?????礭???ʤ??С? “;ʬ??”
?Х??Ȥϡ??? 0 ?????äơ?
?????????Ȥν????????줿?ΰ???³?????Τ??????????ޤ???
?ե????륵?????ϡ??????ꥵ???????ۤ??ƤϤʤ??ޤ?????
?ץ????????إå??ơ??֥??????Υ????ɲ?ǽ??
?????????ȥ????ȥ??ϡ??????Ǹ????ޤ???
?????ơ? p_vaddr
?????Фǥ????Ȥ????ޤ???
PT_DYNAMIC
- ???????????Ǥϡ?ưŪ???????????ꤷ?ޤ???
PT_INTERP
- ???????????Ǥϡ?
???ץ?Ȥ??Ƶ?ư?????̥?ʸ???ǽ??????ѥ?̾?ξ??????礭???????ꤷ?ޤ???
???Υ????????ȥ????פϡ??¹Բ?ǽ?ե??????Τߤǰ?̣???????ޤ?
(?ܥ????????ȥ????פϡ???ͭ???֥??????????ˤ??뤫?⤷???ޤ???)??
?ܥ????????Ȥϡ??ե?????????ʣ????¸?ߤ??ƤϤʤ??ޤ?????
¸?ߤ??????硢
???????ɲ?ǽ?????????ȥ????ȥ??????Ԥ???ɬ?פ??????ޤ???
PT_NOTE
- ???????????Ǥϡ??????????Τ????˾??????礭???????ꤷ?ޤ???
PT_SHLIB
- ???Υ????????ȥ????פϡ?
ͽ???Ƥ??ꡢ?????????Ƥ??ʤ????ޥ??ƥ????????????ޤ???
???Υ????פ????????Ǥ??ޤ??ץ????????ϡ?ABI
?˽????ޤ?????
PT_PHDR
- ???????????Ǥ?¸?ߤ??????硢
?ե????????ȥ????ꥤ??????ˤ????롢
?ץ????????إå??ơ??֥뼫?Ȥΰ??֤??礭???????ꤷ?ޤ???
?ܥ????????ȥ????פϡ??ե?????????ʣ????¸?ߤ??ƤϤʤ??ޤ?????
?????ˡ?
?ץ????????إå??ơ??֥뤬?ץ????????Υ????ꥤ????˴ޤޤ????????Τߡ?
¸?ߤ????????ޤ??? ¸?ߤ??????硢
???????ɲ?ǽ?????????ȥ????ȥ??????Ԥ???ɬ?פ??????ޤ???
PT_LOPROC
- ?????ͤ??? PT_HIPROC
?ʲ??ϡ??ץ????å???ͭ?Υ??ޥ??ƥ??????Τ?????ͽ???Ƥ??ޤ???
PT_HIPROC
- ?????ͤ??? PT_LOPROC
?ʾ??ϡ??ץ????å???ͭ?Υ??ޥ??ƥ??????Τ?????ͽ???Ƥ??ޤ???
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
- ???Υ????Фϡ????????椪???ӥե????????ǥ????????Ȥ????٤??ͤ??????ޤ???
?????ɲ?ǽ?ʥץ??????ϡ?
p_vaddr ?? p_offset
???ڡ??????????dz??ä?;????Ŭ?礹???ͤ?????ɬ?פ??????ޤ???
0 ?? 1
???ͤϡ?????Ĵ???????פǤ??뤳?Ȥ???̣???ޤ???
?????Ǥʤ????硢 p_align ?ϡ???
(2 ????????) ?Ǥ???ɬ?פ??????ޤ????????ơ?
p_vaddr ?? p_offset ??
p_align
?dz??ä?;??????????ɬ?פ??????ޤ???
?ե??????Υ??????????إå??ơ??֥??ϡ?
???ƤΥե??????Υ??????????ΰ??ַ???????ǽ?Ȥ??ޤ???
???????????إå??ơ??֥??ϡ?Elf32_Shdr
?ޤ??? Elf64_Shdr ??¤?Τ??????Ǥ??? ELF
?إå??? e_shoff ?????Фϡ?
???????????إå??ơ??֥??Ρ??ե???????Ƭ?????ΥХ??ȥ??ե??åȤ?Ϳ???ޤ???
e_shnum
?ϡ????????????إå??ơ??֥??Υ????ȥ??????????ޤ???
e_shentsize
?ϡ??ƥ????ȥ????礭?????Х??Ȥǻ????ޤ???
???????????إå??ơ??֥륤???ǥå????ϡ???????????ź???Ǥ???
???????????إå??ơ??֥륤???ǥå????ˤϡ?ͽ???Τ??Τ??????ޤ???
???֥??????ȥե??????ˤϡ????????̤ʥ????ǥå????ˤϥ????????????ޤ???:
SHN_UNDEF
- ?????ͤϡ?̤????????¸?ߤ??ʤ?????̵?ط??Ǥ??뤫??
??̣???ʤ??????????Ȥ??ޤ???
?㤨?С????????????ֹ? SHN_UNDEF
?????????Ф? “????”
?????륷???ܥ??ϡ?̤?????Υ????ܥ??Ǥ???
SHN_LORESERVE
- ?????ͤϡ?ͽ???Υ????ǥå??????ϰϤβ??¤????ꤷ?ޤ???
SHN_LOPROC
- ?????ͤ??? SHN_HIPROC
?ʲ??ϡ??ץ????å???ͭ?Υ??ޥ??ƥ??????Τ?????ͽ???Ƥ??ޤ???
SHN_HIPROC
- ?????ͤ??? SHN_LOPROC
?ʾ??ϡ??ץ????å???ͭ?Υ??ޥ??ƥ??????Τ?????ͽ???Ƥ??ޤ???
SHN_ABS
- ?????ͤϡ??б????뻲?Ȥ??????ͤǤ??뤳?Ȥ????ꤷ?ޤ???
?㤨?С????????????ֹ? SHN_ABS
?????????Ф??????????륷???ܥ??ϡ?????Ū?ʿ??ͤ???????
?????֤ˤ??äƱƶ????????ޤ?????
SHN_COMMON
- ???Υ??????????????Ф??????????륷???ܥ??ϡ????̥????ܥ??Ǥ??ꡢ
Fortran ?? COMMON ???ΰ褬???ݤ????Ƥ??ʤ? C
?γ????ѿ??????????ޤ???
SHN_HIRESERVE
- ?????ͤϡ?ͽ???ǥå????ϰϤξ??¤????ꤷ?ޤ???
?????ϰϤϡ? SHN_LORESERVE ??
SHN_HIRESERVE
?δ֤Ǥ??ꡢξü???ޤߤޤ???
???????????إå??ơ??֥??ϡ?ͽ???Υ????ǥå????Τ????˥????ȥ????ޤߤޤ?????
???????????إå??ϡ??ʲ??ι?¤?Τ??????ޤ?:
typedef struct {
Elf32_Word sh_name;
Elf32_Word sh_type;
Elf32_Word sh_flags;
Elf32_Addr sh_addr;
Elf32_Off sh_offset;
Elf32_Size sh_size;
Elf32_Word sh_link;
Elf32_Word sh_info;
Elf32_Size sh_addralign;
Elf32_Size sh_entsize;
} Elf32_Shdr;
typedef struct {
Elf64_Half sh_name;
Elf64_Half sh_type;
Elf64_Size sh_flags;
Elf64_Addr sh_addr;
Elf64_Off sh_offset;
Elf64_Size sh_size;
Elf64_Half sh_link;
Elf64_Half sh_info;
Elf64_Size sh_addralign;
Elf64_Size sh_entsize;
} Elf64_Shdr;
sh_name
- ???Υ????Фϡ?????????????̾???????ꤷ?ޤ???
?????ͤϡ????????????إå?ʸ?????ơ??֥륻?????????ؤ?
?????ǥå????Ǥ??ꡢ?̥?ʸ???ǽ?????ʸ?????ξ?????Ϳ???ޤ???
sh_type
- ???Υ????Фϡ????????????????Ƥȥ??ޥ??ƥ???????ʬ?ष?ޤ???
SHT_NULL
- ?????ͤϡ????????????إå????Գ????Ǥ??뤳?Ȥ??ޤ???
??Ϣ?Ť????줿?????????????????ޤ?????
???????????إå???¾?Υ????Фϡ?̤?????ͤ??????ޤ???
SHT_PROGBITS
- ???Υ??????????ϡ??ץ????????ˤ??ä??????????????????????ޤ???
?ե????ޥåȤȰ?̣?ϡ??ץ????????????ˤ??äƤΤ߷??ꤵ???ޤ???
SHT_SYMTAB
- ???Υ??????????ϡ??????ܥ??ơ??֥????????ޤ???
????Ū?ˡ? SHT_SYMTAB
?ϥ????ǥ??åȤΤ????Υ????ܥ??????ޤ???
?????Ϥޤ???ưŪ???ˤ????Ѳ?ǽ?Ǥ???
?????ϴ????ʥ????ܥ??ơ??֥??Ǥ??뤿?ᡢ
ưŪ???Τ????ˤ???ɬ?פ?¿???Υ????ܥ????ޤ????礬?????ޤ???
???֥??????ȥե??????ϡ?
SHN_DYNSYM
?????????????ޤळ?Ȥ??Ǥ??ޤ???
SHT_STRTAB
- ???Υ??????????ϡ?ʸ?????ơ??֥????????ޤ???
???֥??????ȥե??????ϡ?ʣ????ʸ?????ơ??֥륻?????????????????ޤ???
SHT_RELA
- ???Υ??????????ϡ?????Ū?ʲÿ??????ġ??????֥????ȥ????????ޤ???
?㤨?С????֥??????ȥե??????? 32
?ӥåȥ??饹?Υ?????
Elf32_Rela
?????????ޤ???
???֥??????Ȥϡ?ʣ???κ????֥??????????????????ޤ???
SHT_HASH
- ???Υ??????????ϡ??????ܥ??ϥå????ơ??֥????????ޤ???
ưŪ???˴?Ϣ?????????֥??????Ȥϡ?
?????ܥ??ϥå????ơ??֥????ޤ?ɬ?פ??????ޤ???
???֥??????ȥե??????ϡ?ñ???Υϥå????ơ??֥??Τߤ????????ޤ???
SHT_DYNAMIC
- ???Υ??????????ϡ?ưŪ???Τ????˾??????????ޤ???
???֥??????ȥե??????ϡ?ñ????ưŪ???????????Τߤ????????ޤ???
SHT_NOTE
- ???Υ??????????ϡ??????Ф???????ˡ?ǥե??????˰??????????????ޤ???
SHT_NOBITS
- ???Υ????פΥ??????????ϡ??ե????????ζ??֤???ͭ???ޤ???
SHN_PROGBITS
?˻??Ƥ??ޤ???
???Υ??????????ϥХ??Ȥ??ޤߤޤ???
sh_offset
?????Фϳ?ǰ???Υե????륪?ե??åȤ??ޤߤޤ???
SHT_REL
- ???Υ??????????ϡ?????Ū?ʲÿ?̵???κ????֥??ե??åȤ??????ޤ???
?㤨?С????֥??????ȥե??????? 32
?ӥåȥ??饹?Υ?????
Elf32_Rel
?????????ޤ???
???֥??????ȥե??????ϡ?ʣ???κ????֥??????????????????ޤ???
SHT_SHLIB
- ???Υ??????????ϡ?ͽ???Ƥ??ꡢ?????????Ƥ??ʤ????ޥ??ƥ????????????ޤ???
SHT_DYNSYM
- ???Υ??????????ϡ?ưŪ???????ܥ??κǾ??Υ??åȤ??????ޤ???
???֥??????ȥե??????ϡ?
SHN_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
- ???Υ??????ͤϡ?
???Υ??????????Ρ??ե???????Ƭ?????ΥХ??ȥ??ե??åȤ?Ϳ???ޤ???
1 ?ĤΥ??????????ס????ʤ???
SHT_NOBITS
?ϡ??ե????????ζ??֤???ͭ?????? ????
sh_offset
?????Фϡ??ե????????γ?ǰ???ΰ??֤????ꤷ?ޤ???
sh_size
- ???Υ????Фϡ????????????ΥХ??ȤǤ??礭?????????ޤ???
???????????פ? SHT_NOBITS
?Ǥʤ??¤ꡢ???????????ϥե?????????
sh_size ?Х??Ȥ???ͭ???ޤ???
?????? SHT_NOBITS ?Υ??????????? 0
?ʳ????礭???????????ޤ?????
?ե????????ζ??֤???ͭ???ޤ?????
sh_link
- ???Υ????Фϡ?
???????????إå??ơ??֥륤???ǥå????????????ޤ???
???β????ϡ????????????װ?¸?Ǥ???
sh_info
- ???Υ????Фϡ? ?ɲþ??????????ޤ???
???β????ϡ????????????װ?¸?Ǥ???
sh_addralign
- ?㴳?Υ??????????ˤϡ????ɥ쥹?????????????ޤ???
???????????֥???ɤ????Ĥʤ??С?
?????ƥ??ϥ??֥???ɶ?????
?????????????Τ??ݾڤ???ɬ?פ??????ޤ???
sh_addr ???ͤϡ?
sh_addralign ?dz??ä??ͤ? 0
?Ȥʤ뤳?Ȥ?ɬ?פǤ??? 0 ?????? 2
??沾??????????????ޤ???0 ?ޤ??? 1 ???ͤϡ?
???????????ˤ϶????????ʤ????Ȥ???̣???ޤ???
sh_entsize
- ?㴳?Υ??????????ϡ?
????Ĺ?????ȥ??Υơ??֥????????ޤ???
?㤨?Х????ܥ??ơ??֥뤬?????˳??????ޤ???
???Τ褦?ʥ??????????Τ????ˡ?
???Υ????Фϡ??ƥ????ȥ??ΥХ??ȤǤ??礭????Ϳ???ޤ???
???????????ꥵ?????Υ????ȥ??Υơ??֥????????ʤ??ʤ??С?
???Υ????Ф? 0 ???ޤߤޤ???
?͡??ʥ??????????ץ????????????????????????ޤ?:
- .bss
- ???Υ??????????Ͻ??????????ʤ??ǡ???????????
?ץ????????Υ????ꥤ????ˤʤ??ޤ???
?????Ǥϡ?
?ץ??????೫?ϻ??˥????ƥब?ǡ?????
0 ?????????ޤ??? ???Υ??????????ϡ???????
SHT_NOBITS ?Ǥ??? °???????פϡ?
SHF_ALLOC ?? SHF_WRITE
?Ǥ???
- .comment
- ???Υ??????????ϡ??С??????????????????????ޤ???
???Υ??????????ϡ??????? SHT_PROGBITS
?Ǥ??? °???????פϻȤ????ޤ?????
- .data
- ???Υ??????????Ͻ????????줿?ǡ???????????
?ץ????????Υ????ꥤ????ˤʤ??ޤ???
???Υ??????????ϡ??????? SHT_PROGBITS
?Ǥ??? °???????פϡ? SHF_ALLOC
?? SHF_WRITE ?Ǥ???
- .data1
- ???Υ??????????Ͻ????????줿?ǡ???????????
?ץ????????Υ????ꥤ????ˤʤ??ޤ???
???Υ??????????ϡ??????? SHT_PROGBITS
?Ǥ??? °???????פϡ? SHF_ALLOC
?? SHF_WRITE ?Ǥ???
- .debug
- ???Υ??????????ϡ??????ܥ??å??ǥХå??Τ????ξ??????????ޤ???
???Ƥϡ??????????Ƥ??ޤ?????
???Υ??????????ϡ??????? SHT_PROGBITS
?Ǥ??? °???????פϻȤ????ޤ?????
- .dynamic
- ???Υ??????????ϡ?ưŪ?????????????ޤ???
????????????°???ϡ? SHF_ALLOC
?ӥåȤ??ޤߤޤ???
SHF_WRITE
?ӥåȤ????åȤ????뤫?ݤ??ϡ??ץ????å???¸?Ǥ???
???Υ??????????ϡ??????? SHT_DYNAMIC
?Ǥ??? ????°???Ƥ?????????
- .dynstr
- ???Υ??????????ϡ?ưŪ???Τ?????ɬ?פȤ?????ʸ???????????ޤ???
?????ư??̤ˤϡ?̾????ɽ??????ʸ?????Ǥ??ꡢ
?????ܥ??ơ??֥륨???ȥ??ȷ????դ??????Ƥ??ޤ???
???Υ??????????ϡ??????? SHT_STRTAB
?Ǥ??? ?Ȥ?????°???????פϡ?
SHF_ALLOC ?Ǥ???
- .dynsym
- ???Υ??????????ϡ?ưŪ???????ܥ??ơ??֥????????ޤ???
???Υ??????????ϡ??????? SHT_DYNSYM
?Ǥ??? ?Ȥ?????°???ϡ?
SHF_ALLOC ?Ǥ???
- .fini
- ???Υ??????????ϡ??ץ???????λ?????ɤμ¹Բ?ǽ̿?????????ޤ???
?ץ????????????ェλ???ˡ?
?????ƥ??Ϥ??Υ??????????Υ????ɤ??¹Ԥ??ޤ???
???Υ??????????ϡ??????? SHT_PROGBITS
?Ǥ??? ?Ȥ?????°???ϡ?
SHF_ALLOC ?? SHF_EXECINSTR
?Ǥ???
- .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
?Ǥ??? °???????פϻȤ????ޤ?????
- .plt
- ???Υ??????????ϡ??ץ????????????????ơ??֥????????ޤ???
???Υ??????????ϡ??????? 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
?Ǥ???
- .jcr
- ???Υ??????????ϡ???Ͽ??????ɬ?פ????? Java
???饹?ξ??????????ޤ???
- .eh_frame
- ???Υ??????????ϡ?C++
?㳰?????˻??Ѥ????????????????ޤ???
ʸ?????ơ??֥륻?????????ϡ??̥?ʸ???ǽ?????ʸ?????????????????ޤ???
???????ϡ????̤?ʸ?????ȸƤФ??ޤ???
???֥??????ȥե??????ϡ?
?????ܥ??ȥ?????????̾??ɽ?????뤿???ˤ???????ʸ???????Ȥ??ޤ???
ʸ?????ơ??֥륻?????????Υ????ǥå????Ȥ??ơ?ʸ?????Ȥ??ޤ???
?ǽ??ΥХ??? (?????ǥå??? 0) ?ϡ?
ñ???Υ̥?ʸ???????Ĥ??????????ޤ???
Ʊ?ͤˡ?ʸ?????ơ??֥??κǽ??Х??Ȥϥ̥?ʸ???Ǥ??????????????Τǡ?
ʸ???????Τ??ʥ뽪ü?????Ƥ??뤳?Ȥ??ݾڤ??ޤ???
???֥??????ȥե??????Υ????ܥ??ơ??֥??ϡ?
?ץ????????Υ????ܥ??????Ȼ??Ȥΰ??ַ?????ɬ?פʾ??????ݻ????ޤ???
?????ܥ??ơ??֥륤???ǥå????ϡ???????????ź???Ǥ???
typedef struct {
Elf32_Word st_name;
Elf32_Addr st_value;
Elf32_Size st_size;
unsigned char st_info;
unsigned char st_other;
Elf32_Half st_shndx;
} Elf32_Sym;
typedef struct {
Elf64_Half st_name;
unsigned char st_info;
unsigned char st_other;
Elf64_Quarter st_shndx;
Elf64_Addr st_value;
Elf64_Size st_size;
} Elf64_Sym;
st_name
- ???Υ????Фϡ????֥??????ȥե???????
?????ܥ?ʸ?????ơ??֥??ؤΥ????ǥå??????????ޤ???
?????ܥ?ʸ?????ơ??֥??ϡ??????ܥ?̾??ʸ??ɽ?????????ޤ???
?ͤ? 0 ?ʳ??Ǥ????ʤ??С?
?????ϥ????ܥ?̾??Ϳ????ʸ?????ơ??֥륤???ǥå??????ޤ???
?????Ǥʤ????硢?????ܥ??ơ??֥??ˤ?̾?????????ޤ?????
st_value
- ???Υ????Фϡ???Ϣ?????????ܥ????ͤ?Ϳ???ޤ???
st_size
- ¿???Υ????ܥ??ϡ???Ϣ?????礭?????????ޤ???
?????ܥ??ˤ??礭????̵????̤?ΤǤ??????硢???Υ????Ф?
0 ?Ǥ???
st_info
- ???Υ????Фϡ??????ܥ??Υ????פ?«??°???????ꤷ?ޤ?:
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
- ???????Х륷???ܥ??ϡ????礵???Ƥ??????ƤΥ??֥??????ȥե????뤫?鸫???ޤ???
?????ե??????ˤ??륰?????Х륷???ܥ????????ϡ?
?̥ե???????Ʊ???????ܥ???̤???????Ȥ????????ޤ???
STB_WEAK
- ?夤?????ܥ??ϥ??????Х륷???ܥ??˻??Ƥ??ޤ???
?????????????????????㤤ͥ?????̤??????ޤ???
STB_LOPROC
- ?????ͤ??? STB_HIPROC
?ʲ??ϡ??ץ????å??˸?ͭ?Υ??ޥ??ƥ??????Τ?????ͽ???Ƥ??ޤ???
STB_HIPROC
- ?????ͤ??? STB_LOPROC
?ʾ??ϡ??ץ????å??˸?ͭ?Υ??ޥ??ƥ??????Τ?????ͽ???Ƥ??ޤ???
«???ȥ????ץե??????ɤΥѥå??????ӥ????ѥå??ѤΥޥ??????????ޤ?:
ELF32_ST_BIND
(info)
- ?ޤ???
ELF64_ST_BIND
(info)
?ϡ?«???? st_info
?ͤ??????Ф??ޤ???
ELF64_ST_TYPE
(info)
- ?ޤ???
ELF32_ST_TYPE
(info)
?ϡ??????פ? st_info
?ͤ??????Ф??ޤ???
ELF32_ST_INFO
(bind,
type)
- ?ޤ???
ELF64_ST_INFO
(bind,
type)
?ϡ?«???ȥ????פ? st_info
?ͤ??Ѵ????ޤ???
st_other
- ???Υ????Фϡ????? 0
???????????????줿??̣???????ޤ?????
st_shndx
- ???????륷???ܥ??ơ??֥륨???ȥ??ϡ?
?ʤ??餫?Υ??????????˴ؤ???
“?????????Ƥ??ޤ?” ??
???Υ????Фϡ???Ϣ???륻?????????إå??ơ??֥륤???ǥå??????????ޤ???
?????֤ϡ??????ܥ뻲?Ȥȥ????ܥ?????????³?????????Ǥ???
?????ֲ?ǽ?ʥե??????ϡ????????Υ????????????Ƥ?
??????ˡ?Ҥ?????????????ɬ?פ??????ޤ???
???Τ褦?ˤ??ơ??¹Բ?ǽ?ե??????ȶ?ͭ???֥??????ȥե????뤬??
?ץ??????Υץ??????।????Τ????????????????????Ƥޤ???
?????֥????ȥ??ϡ????????Υǡ????Ǥ???
?ÿ???ɬ?פȤ??ʤ??????ֹ?¤??:
typedef struct {
Elf32_Addr r_offset;
Elf32_Word r_info;
} Elf32_Rel;
typedef struct {
Elf64_Addr r_offset;
Elf64_Size r_info;
} Elf64_Rel;
?ÿ???ɬ?פȤ????????ֹ?¤??:
typedef struct {
Elf32_Addr r_offset;
Elf32_Word r_info;
Elf32_Sword r_addend;
} Elf32_Rela;
typedef struct {
Elf64_Addr r_offset;
Elf64_Size r_info;
Elf64_Off r_addend;
} Elf64_Rela;
r_offset
- ???Υ????Фϡ???????ư????Ŭ?Ѥ?????????Ϳ???ޤ???
?????ֲ?ǽ?ʥե??????Ǥϡ?
?ͤϡ??????֤ˤ??äƱƶ????????뵭??ñ?̤?
????????????Ƭ?????ΥХ??ȥ??ե??åȤǤ???
?¹Բ?ǽ?ե??????ޤ??϶??ѥ??֥??????ȤǤϡ?
?ͤϡ??????֤ˤ??äƱƶ????????뵭??ñ?̤β??ۥ??ɥ쥹?Ǥ???
r_info
- ???Υ????Фϡ?
?????֤????륷???ܥ??ơ??֥륤???ǥå????ȡ?
???Ѥ????????֤Υ????פ?Ϳ???ޤ???
?????֥????פϡ??ץ????å???¸?Ǥ???
?ƥ????Ȥ??????֥????ȥ??κ????֥????פޤ???
?????ܥ??ơ??֥륤???ǥå????Ȥ????Ȥ???
?????ȥ??? r_info
?????Ф??Ф??????줾??
ELF_[32|64]_R_TYPE
?ޤ???
ELF[32|64]_R_SYM
??Ŭ?Ѥ??????̤???̣???Ƥ??ޤ???
r_addend
- ???Υ????Фϡ??????βÿ??????ꤷ?ޤ???
?????ϡ??????ֲ?ǽ?ʥե??????ɤ?
??Ǽ???????ͤ??????뤿???˻??Ѥ????ޤ???