ELF(Executable and Linkable Format)은 유닉스 및 유닉스 호환 시스템에서 실행 파일, 목적 파일[1], 공유 라이브러리 및 덤프 기록 파일[2]을 위해 사용하는 파일 포맷이다.

구조

편집

ELF 파일은 크게 파일 헤더, 프로그램 헤더 테이블, 섹션 헤더 테이블, 그리고 전술한 테이블이 가리키는 데이터들로 되어 있다. 그러나 이 헤더 테이블들이 가리키지 않는 고아 바이트들이 있을 수 있다.


프로그램 헤더 뒤에 배치되는 섹션 헤더들은 다음이 있다. 섹션 헤더 다음에 섹션 헤더 테이블이 온다.

  • .text: 코드 영역
  • .data: 초기화된 데이터 영역
  • .bss: 초기화되지 않은 데이터 영역
  • .symtab: 함수/전역 변수/섹션 리스트들이 들어간다.
  • .rel.txt: 동적 링크된 라이브러리의 코드
  • .rel.data: 동적 링크된 라이브러리의 데이터
  • .debug: 디버거를 위한 정보들

같이 보기

편집
  1. ↑ 링커가 정적 링크를 수행하기 이전의 컴파일 결과물.
  2. ↑ 에러로 인한 프로그램 비정상 종료 과정에서 덤프한 결과일 수도 있고, 그냥 임의로 덤프를 시도하여 프로그램이 메모리에 올라온 상태를 본뜬 결과물일 수도 있다.