ELF Header 개념 정리

ELF Header

Program Header

.text section

.data section

.bss section

.symtab

.rel.txt

.rel.data

.debug

Section Header table



ELF Header

ELF Format 임을 표시하는 매직 넘버 이미지의 형태, 실행되는 CPU 정보, 리틀 엔디안 인지 빅엔디안 인지 표시하는 byte 순서와 같은 파일 내용의 기본적인 정보를 포함하고 있다.


Program Header

테이블 실행 파일의 메모리 구조 내용을 표시한다. ELF 에서는 세그먼트로 알려진 영역을 섹션으로 저장하고 있다. 이 테이블 에서는 어떠한 섹션이 존재하고 그 섹션의 정보가 있는 곳을 가지고 있다.


.text section

실제로 CPU에서 수행되는 이진 기계 코드가 저장되어 있는 영역이다.


.data section

프로그램이 실행될 때, 이미 초기화되어 있는 데이터가 저장되어 있는 영역이다.


.bss section

프로그램이 실행 될 때, 초기화되어 있지 않지만 static 이나 전역으로 성언된 변수가 위치하는 곳이다.


.symtab 

함수, 전역변수, 섹션의 이름 등이 저장된 영역이다. 실제 이진 기계코드가 실행되기 위해서는 심볼이 필요하지 않다. 링커에 의해서 모두 메모리 주소 값으로 변경된다. 이 정보는 링커나 사람에게 필요한 정보이다.


.rel.txt 

동적 라이브러리의 경우 라이브러리의 코드가 여러 으용 프로그램의 메모리 영역에 연결되는데, 이 때 항상 같은 주소로 연결되지 않는다. 주소가 바뀔 때마다 올바르게 실행되기 위해서 .text 섹션에 변경되어야 할 정보가 저장되어 있다.


.rel.data 

동적 라이브러리의 경우 라이브러리의 코드가 여러 응용 프로그램의 메모리 영역에 연결되는데, 이 때 항상 같은 주소로 연결되지 않는다. 주소가 바뀔 떄 마다 올바르게 실행되기 위해서 .data 섹션에 변경되어야 할 정보가 저장되어 있다.


.debug section

디버거시 필요한 정보를 가지고 있다(gcc 컴파일러에서 g옵션을 주면 이 부분에 gdb와 같은 디버거에서 필요로 하는 정보를 이 부분에 생성한다.) 

'SM. UNIV.DCEG > Embedded' 카테고리의 다른 글

Make File 간단한 개념및 사용상의 기본설명  (0) 2008.10.14
ELF Header 개념 정리  (0) 2008.09.26

1 ··· 45 46 47 48 →