Vous êtes sur la page 1sur 38

PKU/SSDB-03-TN-005

JBEOS-TN-03-005
2003 5

ELF

2003 5

863

UNIX ELFExecutable and Linkable


Format
ELF C

..................................................................................................................................... 1

............................................................................................................................. 1

2.1

SYSTEM V ABI........................................................................................................................................ 1

2.2

LSB ........................................................................................................................................................ 2

ELF ..................................................................................................................... 2
3.1
3.1.1

........................................................................................................................................................ 2
................................................................................................................ 2

3.2

........................................................................................................................................ 3

3.3

ELF HEADER .................................................................................................................................. 3

3.4

SECTIONS ................................................................................................................................ 6

3.4.1

................................................................................................................................ 6

3.4.2

....................................................................................................................................... 7

3.4.3

..................................................................................................................................... 10

3.5

STRING TABLE............................................................................................................... 12

3.6

SYMBOL TABLE ................................................................................................................. 13

3.6.1

st_info....................................................................................................................... 13

3.6.2

..................................................................................................................................... 14

3.6.3

.......................................................................................................................... 15

3.6.4

STN_UNDEF....................................................................................................................... 15

3.6.5
3.7

..................................................................................................................................... 15
.......................................................................................................................................... 16

3.7.1

.................................................................................................................................. 16

3.7.2

.................................................................................................................................. 17

3.8

.......................................................................................................................... 19

3.8.1

Program Header ................................................................................................... 19

3.8.2

..................................................................................................................................... 21

3.8.3

..................................................................................................................................... 23

3.8.4

GOT ................................................................................................................. 27

3.8.5

PLT................................................................................................................... 28

3.8.6

Hash Table................................................................................................................ 30

3.8.7

...................................................................................................................... 31

3.9

C ....................................................................................................................................................... 31

3.9.1

C............................................................................................................................... 31

3.9.2

.............................................................................................................................. 33

1 ................................................................................................................................ 3
2 ELF Header ................................................................................................................. 3
3 ....................................................................................................................... 7
4 ..................................................................................................................... 13
5 st_info ...................................................................................................... 13
6 ..................................................................................................................... 16
7 ..................................................................................................................... 19
8 ............................................................................................................................. 21
9 ................................................................................................................. 22
10 ................................................................................................................... 24
11 ........................................................................................................................ 28
12 ........................................................................................................... 29
13 ................................................................................................................... 30

2003 5

PKU/SSDB-03-TR-005

1
Executable and Linking Format UNIX UNIX
System LaboratoriesUSLApplication Binary
InterfaceABITool Interface StandardsTIS
ELF 32 Intel
[1, 2]
ELF

TIS Portable Formats Specification 1.1


ANSI C libc
[1] Executable and Linking Format(ELF)
Specification 1.2

Book I: Executable and Linking Format ELF


Book II: Processor Specific(Intel Architecture) ELF
Book III: Operating System Specific ELF
System V Release 4

2
2.1 System V ABI
System V Application Binary Interface(ABI)

X/Open Commen Application Environment


Specification, Issue 4.2 System V Interface Definition, Fourth Edition
ABI
System V ABI System V
[3]
[4]
System V ABI

System V Interface Definition, 4


IEEE POSIX 1003.1-1990
X/Open Common Application Environment Specification(CAE), Issue 4.2
International Standard, ISO/IEC 9899:1990(E), Programming Languages C,
12/15/90.
X Window System, X Version 11, Release 5,

1 38

2003 5

PKU/SSDB-03-TR-005

2.2 LSB
Linux Linux LSB
(Linux Standard Base)LSB Linux
ABI

gLSBGeneric LSB
archLSBArchitecture Specific LSB LSB
LSB SourceForge

3 ELF
3.1

Relocatable File

Executable File
exec()
Shared Object File

Dynamic Linker

3.1.1
8 /32

1 ELF

Elf32_Addr

Elf32_Half

Elf32_Off

Elf32_SWord

Elf32_Word

unsigned char

4 4

2 38

2003 5

PKU/SSDB-03-TR-005

3.2

ELF

ELF

...
n

...
...

...

ELF ELF Header

Program Header Table

Section Heade Table

ELF

3.3 ELF Header

ELF Header
2

ELF Header

#define EI_NIDENT 16
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;

3 38

2003 5

PKU/SSDB-03-TR-005

Elf32_Word
Elf32_Half
Elf32_Half
Elf32_Half
Elf32_Half
Elf32_Half
Elf32_Half
}Elf32_Ehdr;

e_flags;
e_ehsize;
e_phentsize;
e_phnum;
e_shentsize;
e_shnum;
e_shstrndx;

e_ident ELF 2

2 e_ident[]

EI_MAG0

EI_MAG1

EI_MAG2

EI_MAG3

EI_CLASS

EI_DATA

EI_VERSION

EI_PAD

EI_NIDENT

16

e_ident[]

3 e_ident[]

Magic Number ELF

0x7f

e_ident[EI_MAG0]

'E'

e_ident[EI_MAG1]

EI_MAG2

'L'

e_ident[EI_MAG2]

EI_MAG3

'F'

e_ident[EI_MAG3]

EI_MAG0
EI_MAG0
EI_MAG3
EI_MAG1

EI_CLASS

ELFCLASSNONE 0

ELFCLASS32

32

ELFCLASS64

64

ELFCLASS32 4 GBELFCLASS64 64
64
EI_DATA

e_ident[EI_DATA]

4 38

2003 5

PKU/SSDB-03-TR-005

ELFDATANONE 0

ELFDATA2LSB 1

ELFDATA2MSB 2

EI_VERSION ELF EV_CURRENT


EI_PAD

e_ident 0

ELF

32 Intel
1

e_ident[EI_CLASS] ELFCLASS32
e_ident[EI_DATA]

ELFDATA2LSB

2e_machine EM_386

ELF Header 4
4 ELF Header

e_ident

e_type

ET_NONE
0

ET_REL
1

ET_EXEC
2

ET_DYN
3

ET_CORE
4
Core
ET_LOPROC
0xff00
ET_HIPROC
0xffff

ET_LOPROC ET_HIPROC

e_machine


EM_NONE 0

EM_M32
1
AT&T WE 32100
EM_SPARC 2
SPARC
EM_386
3
Intel 80386
EM_68K
4
Motorola 68000
EM_88K
5
Motorola 88000

5 38

2003 5

PKU/SSDB-03-TR-005
EM_860
7
Intel 80860
EM_MIPS 8
MIPS RS3000
ELF

e_version


EV_NONE
0

EV_CURRENT 1

e_entry

e_phoff

Program Header Table


0

e_shoff

Section Header Table


0

e_flags

EF_machine_flag

e_ehsize

ELF

e_phentsize
e_phnum

e_shentsize
e_shnum

e_shstrndx

SHN_UNDEF

3.4 Sections
ELF

(1).

(2). 0
(3).
(4). INACTIVE SPACE

3.4.1
ELF e_shoff e_shnum
e_shentsize

SHN_UNDEF

6 38

2003 5

PKU/SSDB-03-TR-005

SHN_LORESERVE

OXFF00

SHN_LOPROC

0XFF00

SHN_HIPROC

0XFF1F

SHN_ABS

OXFFF1

SHN_COMMON

OXFFF2

FORTRAN
COMMON C

SHN_HIRESERVE

0XFFFF

SHN_LORESERVE SHN_HIRESERVE

3.4.2

3
typedef struct{
Elf32_Word sh_name;
Elf32_Word sh_type;
Elf32_Word sh_flags;
Elf32_Addr sh_addr;
Elf32_Off sh_offset;
Elf32_Word sh_size;
Elf32_Word sh_link;
Elf32_Word sh_info;
Elf32_Word sh_addralign;
Elf32_Word sh_entsize;
}Elf32_Shdr;

sh_name

Section Header String


Table Section NULL

sh_type

sh_flags

sh_addr

sh_offset

SHT_NOBITS sh_offset

sh_size


SHT_NOBITS sh_size

7 38

2003 5

PKU/SSDB-03-TR-005
SHT_NOBITS

sh_link

sh_info

doublewordsh_addr
sh_addralign
sh_addralign 0 0 2
0 1
sh_entsize

SHN_UNDEF

7 SHN_UNDEF(0)

sh_name

sh_type

SHT_NULL

sh_flags

sh_addr

sh_offset

sh_size

sh_link

SHN_UNDEF

sh_info

sh_addralign

sh_entsize

3.4.2.1

sh_type

8
8

SHT_NULL

SHT_PROGBITS

SHT_SYMTAB

SHT_SYMTAB ld

SHT_STRTAB

addend

32 Elf32_Rela

SHT_RELA

8 38

2003 5

PKU/SSDB-03-TR-005

SHT_HASH

SHT_DYNAMIC

SHT_NOTE

SHT_PROGBITS
sh_offset

SHT_REL

addends
32
Elf32_rel

SHT_SHLIB

10

ABI

SHT_DYNSYM

11

SHT_DYNSYM

SHT_LOPROC

0X70000000

SHT_HIPROC

OX7FFFFFFF

SHT_LOUSER

0X80000000

SHT_HIUSER

0X8FFFFFFF

SHT_NOBITS

3.4.2.2

sh_flags

sh_flags
1 0
9 sh_flags

SHF_WRITE

0x1

SHF_ALLOC

0x2

SHF_EXECINSTR

0x4

SHF_MASKPROC

0xF0000000

SHF_WRITE:
SHF_ALLOC:
0
SHF_EXECINSTR:
SHF_MASKPROC:

9 38

2003 5

3.4.2.3

PKU/SSDB-03-TR-005

sh_link sh_info

sh_link sh_info
10 sh_link sh_info
sh_type

sh_link

sh_info

SHT_DYNAMIC

SHT_HASH

SHT_REL
SHT_RELA

SHT_SYMTAB
SHT_DYNSYM

STB_LOCAL

SHN_UNDEF

3.4.3

11

.bss

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

()

+
0

SHT_DYNAMIC

SHF_ALLOC SHF_WRITE

.dynstr

SHT_STRTAB

SHF_ALLOC

.dynsym

SHT_DYNSYM

SHF_ALLOC

.fini

SHT_PROGBITS

SHF_ALLOC
+

SHF_EXECINSTR

.got

SHT_PROGBITS

.dynamic

10 38

2003 5
.hash

PKU/SSDB-03-TR-005
SHT_HASH

SHF_ALLOC

SHT_PROGBITS

SHF_ALLOC
+
SHF_EXECINSTR C
main

SHT_PROGBITS

SHF_ALLOC
0

.line

SHT_PROGBITS

()

.note

SHT_NOTE

()

.plt

SHT_PROGBITS

.relname

SHT_REL

.init

.interp

procedure linkage
table

SHF_ALLOC
0 name
.text
.rel.text .rela.text

.relaname SHT_RELA

.rodata

SHT_PROGBITS

SHF_ALLOC

.rodata1

SHT_PROGBITS

SHF_ALLOC

.shstrtab SHT_STRTAB

.strtab

SHT_STRTAB

SHF_ALLOC 0

.symtab

SHT_SYMTAB

SHF_ALLOC
0

.text

SHT_PROGBITS

SHF_ALLOC
+

SHF_EXECINSTR

e_machine .FOO.psect
FOO psect

11 38

2003 5

PKU/SSDB-03-TR-005

.sdata
.tdesc
.sbss
.lit4
.lit8
.reginfo
.gptab
.liblist
.conflict

3.5 String Table


NULLASCII 0ELF

0
NULL NULL 0
NULL
sh_size 0
0
sh_name
ELF e_shstrndx 25

12

+0

+1

+2

+3

+4

+5

+6

+7

+8

+9

\0

\0

10

\0

20

\0

\0

\0

12

()

name.

Variable

11

able

16

able

24

()

12 38

2003 5

PKU/SSDB-03-TR-005

3.6 Symbol Table

4
typedef struct {
Elf32_Word st_name;
Elf32_Addr st_value;
Elf32_Word st_size;
unsigned char
st_info;
unsigned char
st_other;
Elf32_Half st_shndx;
} Elf32_sym;

13
13

st_name

C C

st_value

st_size

st_info

st_other

st_shndx

3.6.1 st_info
st_info
5 st_info

13 38

2003 5

PKU/SSDB-03-TR-005
#define ELF32_ST_BIND(i)
((i)>>4)
#define ELF32_ST_TYPE(i)
((i)&0xf)
#define ELF32_ST_INFO(b, t) (((b)<<4) + ((t)&0xf))

st_info

14

STB_GLOBAL

STB_WEAK

STB_LOPROC

13

STB_HIPROC

15

STB_LOCAL

(1).
STB_GLOBAL

st_shndx SHN_COMMON

(2). archive libraries

0
STB_LOCAL
sh_info

3.6.2
ELF32_ST_TYPE
15

STT_NOTYPE

STT_OBJECT

STT_FUNC

STT_SECTION

STB_LOCAL

STT_FILE

STB_LOCAL

14 38

2003 5

PKU/SSDB-03-TR-005
SHN_ABS STB_LOCAL

STT_LOPROC

13

STT_HIPROC

15

STT_FUNC

STT_FUNC

st_shndx

3.6.3

SHN_ABS

SHN_COMMON

sh_addralign

st_value

SHN_UNDEF

3.6.4 STN_UNDEF
0STN_UNDEF
16 STN_UNDEF

st_name

st_value

st_size

st_info

st_other

st_shndx

3.6.5
st_value
(1). st_value SHN_COMMON

15 38

2003 5

PKU/SSDB-03-TR-005

(2). st_value
st_value st_shndx

(3). st_value

3.7

3.7.1

6
6
typedef struct {
Elf32_Addr r_offset;
Elf32_Word r_info;
} Elf32_Rel;
typedef struct
Elf32_Addr
Elf32_Word
Elf32_Word
} Elf32_Rela;

{
r_offset;
r_info;
r_addend;

17

r_offset

r_info

STN_UNDEF 0

16 38

2003 5

PKU/SSDB-03-TR-005

r_info ELF32_R_TYPE
ELF32_R_SYM
#define ELF32_R_SYM(i) ((i)>>8)
#define ELF32_R_TYPE(i) ((unsigned char)(i))
#define ELF32_R_INFO(s, t) (((s)<<8) + (unsigned char)(t))

r_addend

Elf32_Rela Elf32_Rel

sh_info
sh_link r_offset

(1).

(2).

r_offset

r_offset

r_offset

3.7.2

A
B
G

GOT GOT
L /

P r_offset

r_offset

17 38

2003 5

PKU/SSDB-03-TR-005

SYSTEM V Elf32_Rel

X86
18 x86

R_386_NONE

()

()

R_386_32

word32

S+A

R_386_PC32

word32

S+A-P

R_386_GOT32

word32

G+A-P

R_386_PLT32

word32

L+A-P

()

word32

B+A

word32

S+A-GO
T

GOT+AP

R_386_PC32


_GLOBAL_OFFSET_TABLE_

R_386_COPY

R_386_GLOB_DAT

R_386_JMP_SLOT

R_386_RELATIVE

R_386_GOTOFF

R_386_GOTPC

10

()

word32

word32

word32

18 38

2003 5

PKU/SSDB-03-TR-005

3.8

Program Header

3.8.1 Program Header

Segment Contents

ELF e_phentsize e_phnum

typedef struct
Elf32_Word
Elf32_Off
Elf32_Addr
Elf32_Addr
Elf32_Word
Elf32_Word
Elf32_Word
Elf32_Word

{
p_type;
p_offset;
p_vaddr;
p_paddr;
p_filesz;
p_memsz;
p_flags;
p_align;

} Elf32_phdr;
7

p_type

p_offset
p_vaddr
p_paddr

p_filesz
p_memsz
p_flags
p_align

19

System V

0
0

p_vaddr p_offset

19 38

2003 5

PKU/SSDB-03-TR-005

0 1 p_align
2 p_vaddr p_offset p_align

3.8.1.1

ELF 19
19

PT_NULL

PT_LOAD

p_filesz p_memsz
p_memsz
p_fileszp_filesz p_memsz
p_vaddr

PT_DYNAMIC

PT_INTERP

NULL

PT_NOTE

PT_SHLIB

ABI

PT_PHDR

PT_LOPROC

0x70000000

PT_HIPROC

0x7fffffff

3.8.1.2

Base Address

PT_LOAD p_vaddr

p_vaddr

.bss SHT_NOBITS
p_memsz

20 38

2003 5

PKU/SSDB-03-TR-005

p_filesz
3.8.1.3

Note Section

SHT_NOTE PT_NOTE

namesz
descsz
type
name
...
desc
...
8

namesz name name namesz


NULL
namesz
0 4
namesz
descsz desc desc descsz ABI
4
descsz
type
word

ABI [3]

3.8.2

21 38

2003 5

PKU/SSDB-03-TR-005
0

ELF

Ox8048100

0x2BE00 0x8073eff
0x2BF00
0x8074f00

0x100

0x4E00 0x8079cff
0x30D00

20

p_type

PT_LOAD

PT_LOAD

p_offset

0X100

0x2bf00

p_vaddr

0x8048100

0x8074f00

p_paddr

p_filesz

0x2BE00

0x4e00

p_memsz

0x2BE00

0x5e24

p_flags

PF_R + PF_X

PF_R + PF_W + PF_X

p_align

0x1000

0x1000

(1).
(2).
(3).
(4).

ELF

p_vaddr

21

22 38

2003 5

PKU/SSDB-03-TR-005

0x200

0x2a400

0x0

0x80000200

0x8002a400

0x80000000

0x80081200

0x800ab400

0x80081000

0x900c0200

0x900ea400

0x900c0000

0x900c6200

0x900f0400

0x900c6000

3.8.3
3.8.3.1

PT_INTERP exec()
PT_INTERP

mmap

3.8.3.2

PT_INTERP

Exec()
(1).
(2).
(3).
(4).

(5). exec

23 38

2003 5

PKU/SSDB-03-TR-005

SHT_DYNAMIC .dynamic

SHT_HASH .hash
SHT_PROGBITS .got .plt

ABI
ABI
3.8.3.3

PT_DYNAMIC
.dynamic _DYNAMIC

10
typedef struct {
Elf32_Sword d_tag;
union {
Elf32_Word d_val;
Elf32_Addr d_ptr;
} d_un;
} Elf32_Dyn;
extern Elf32_Dyn _DYNAMIC[];

d_tag d_un

d_val Elf32_Word
d_ptr Elf32_Addr

ABI

22

DT_NULL

DT_NEEDED

d_un

DT_NULL _DYNAMIC

NULL

DT_STRTAB

d_val

24 38

2003 5

PKU/SSDB-03-TR-005

DT_PLTRELSZ

d_val

PLT
DT_JMPREL
DT_PLTRELSZ

DT_PLTGOT

d_ptr

PLT/

DT_HASH

d_ptr

DT_SYMTAB

DT_STRTAB

d_ptr

DT_SYMTAB

d_ptr

32
Elf32_Sym

DT_RELA

d_ptr

32 Elf32_Rela

DT_RELASZ
DT_RELAENT
DT_RELA DT_REL

DT_RELASZ

d_val

DT_RELA

DT_RELAENT

d_val

DT_RELA

DT_STRSZ

10

d_val

DT_SYMENT

11

d_val

DT_INIT

12

d_ptr

DT_FINI

13

d_ptr

Termination Function

NULL

DT_STRTAB

DT_SONAME

14

d_val

DT_RPATH

15

d_val

NULL

DT_STRTAB

DT_SYMBOLIC

16

25 38

2003 5

PKU/SSDB-03-TR-005

DT_REL

17

d_ptr

DT_RELA
32 Elf32_Rel

DT_RELSZ DT_RELENT

DT_RELSZ

18

d_val

DT_REL

DT_RELENT

19

d_val

DT_REL

DT_PLTREL

20

d_val

d_val DT_REL
DT_RELA

DT_DEBUG

21

d_ptr

ABI
ABI

d_ptr

DT_PLTRELSZ
DT_PLTREL

DT_TEXTREL

22

DT_JMPREL

23

d_ptr

DT_LOPROC

0x70000000

DT_HIPROC

0x7fffffff

DT_LOPROC DT_HIPROC

DT_NULL DT_NEEDED

3.8.3.4

26 38

2003 5

PKU/SSDB-03-TR-005

DT_NEEDED

DT_NEEDED
DT_NEEDED

DT_SONAME

lib1 DT_SONAME /usr/llib/lib2


lib1 /usr/lib/lib2
/

DT_RPATH :

LD_LIBRARY_PATH
:; LD_LIBRARY_PATH
DT_RPATH

/usr/lib

SUID SGID
LD_LIBRARY_PATH DT_RPATH
/usr/lib

3.8.4 GOT

R_386_GLOB_DAT

27 38

2003 5

PKU/SSDB-03-TR-005

0 _DYNAMIC

32 Intel 1 2

32 Intel
_GLOBAL_OFFSET_TABLE_
extern Elf32_Addr _GLOBAL_OFFSET_TABLE[];

_GLOBAL_OFFSET_TABLE_ .got /

3.8.5 PLT
GOT
PLT
//
System V

.PLT0: pushl
jmp
nop;
nop;
.PLT1: jmp
pushl
.PLT2: jmp
pushl
jmp
...

got_plus_4
*got_plus_8
nop
nop
*name1_in_GOT
$offset@PC
*name2_in_GOT
$offset
.PLT0@PC

11

28 38

2003 5

PKU/SSDB-03-TR-005

.PLT0: pushl
jmp
nop;
nop;
.PLT1: jmp
pushl
jmp
.PLT2: jmp
pushl
jmp
...

4(%ebx)
*8(%ebx)
nop
nop
*name1@GOT(%ebx)
$offset
.PLT0@PC
*name2@GOT(%ebx)
$offset
.PLT0@PC

12

11 12

1.

2. %bx

3. name1name1 .PLT1
4. name1
pushl name1
5. offset 32
R_386_JMP_SLOT
jmp GOT
name1
6. .PLT0
pushl got_plus_4 4(%ebx)
GOT
got_plus_8 8(%ebx)

7.
name1

29 38

2003 5

PKU/SSDB-03-TR-005

8. name1
.PLT1 jmp name1 pushl

LD_BIND_NOW

R_386_JMP_SLOT

3.8.6 Hash Table


Elf32_Word

13
nbucket
nchain
bucket[0]
...
bucket[nbucket-1]
chain[0]
...
chain[nchain-a]

bucket nbucket chain nchain


0 bucket chain Chain
nchain chain
bucket
X bucket[X%nbucket]
y chain
chain[y] chain
chain
STN_UNDEF
3.8.6.1

ELF Linux

30 38

2003 5

PKU/SSDB-03-TR-005
unsigned long
elf_hash (const unsigned char *name)
{
unsigned long h = 0, g;
while (*name)
{
h = (h << 4) + *name++
if (g = h & 0xf0000000)
h ^= g >> 24;
h &= -g;
}
return h;
}

3.8.7

atexit()
DT_INIT DT_FINI /
.init .fini

atexit()
_exit

3.9 C
3.9.1 C
C libc libsys
ANSI C
23 libc
abort

fputc

isprint

putc

strncmp

abs

fputs

ispunct

putchar

strncpy

asctime

fread

isspace

puts

strpbrk

atof

freopen

isupper

qsort

strrchr

31 38

2003 5

PKU/SSDB-03-TR-005

atoi

frexp

isxdigit

raise

strspn

atol

fscanf

labs

rand

strstr

bsearch

fseek

ldexp

rewind

strtod

clearerr

fsetpos

ldiv

scanf

strtok

clock

ftell

localtime

setbuf

strtol

ctime

fwrite

longjmp

setjmp

strtoul

difftime

getc

mblen

setvbuf

tmpfile

div

getchar

mbstowcs

sprintf

tmpnam

fclose

getenv

mbtowc

srand

tolower

feof

gets

memchr

sscanf

toupper

ferror

gmtime

memcmp

strcat

ungetc

fflush

isalnum

memcpy

strchr

vfprintf

fgetc

isalpha

memmove

strcmp

vprintf

fgetpos

iscntrl

memset

strcpy

vsprintf

fgets

isdigit

mktime

strcspn

wcstombs

fopen

isgraph

perror

strlen

wctomb

fprintf

islower

printf

strncat

24 Libc
__assert

getdate

lockf

sleep

tell

cfgetispeed

getopt

lsearch

strdup

tempnam

cfgetospeed

getpass

memccpy

swab

tfind

cfsetispeed

getsubopt

mkfifo

tcdrain

toascii

cfsetospeed

getw

mktemp

tcflow

_tolower

ctermid

hcreate

monitor

tcflush

tsearch

cuserid

hdestroy

nftw

tcgetattr

_toupper

dup2

hsearch

nl_langinfo

tcgetpgrp

twalk

fdopen

isascii

pclose

tcgetsid

tzset

__filbuf

isatty

popen

tcsendbreak

_xftw

fileno

24 name _name
libc getopt _getopt

int __fillbuf(FILE *f);


f
EOF

int __flsbuf(FILE *f);


f putc(x, f) x
EOF x

int _xftw(int, char*, int(*)(char *, struct stat *, int), int);


ftw() ftw()

32 38

2003 5

PKU/SSDB-03-TR-005

_xftw() 2

SVIDANSI CPOSIX

3.9.2
libc libsys
libc
System V Interface
Definition, 3rd Edtion System V ABI 6 Data Definition

name - _name
ANSI C
25 libc
getdate_err

optarg

_getdate_err

opterr

__iob

optind
optopt

[1] Tool Interface Standards(TIS) Committee, Portable Formats Specification, Version 1.1.
[2] Tool Interface Standards(TIS) Committee, Executable and Linking Format(ELF) Specification, Version
1.2, May, 1995.
[3] AT&T, The Santa Cruz Operation, Inc. System V Application Binary Interface, Edtion 4.1. DRAFT
COPY, March 18, 1997.
[4] AT&T, The Santa Cruz Operation, Inc. System V Application Binary Interface, Intel386 Architecture
Processor Supplement. Fourth Edition.
[5] Free Standards Group, Linux Standard Base, Version 1.3, http://www.linuxbase.org/spec

33 38

Vous aimerez peut-être aussi