CS

ELF(Executable and Linkable Format)이란?

_minit 2024. 12. 18. 16:47

UNIX 및 유사 운영체제에서 실행 파일, 공유 라이브러리, 그리고 객체 파일을 위한 표준 파일 포맷이다. ELF는 시스템 간 이식성을 고려해 설계되었으며, 다양한 이키텍쳐에서 사용된다.

 

ELF 파일의 주요 구조

ELF 파일은 크게 헤더(Headers), 섹션(Sections), 세그먼트(Segments)로 구성된다.

 

1. ELF 헤더(ELF Header)

  • 파일의 전반적인 정보를 담고 있는 헤더이다.
  • 주요 필드
    • `Magic Number` : ELF 파일임을 식별하는 마커 (`0x7F + ELF` 문자열).
    • 파일 클래스 : 32비트(ELF32) 또는 64비트(ELF64)로 구분.
    • 데이터 정렬 : 리틀 엔디안 또는 빅 엔디안.
    • 파일 타입 : 실행 파일, 재배치 가능 파일, 공유 객체, 코어 덤프.
    • 대상 아키텍쳐 : 0x86, ARM, RISC-V 등.

2. 프로그램 헤더 테이블(Program Header Table)

  • 실행 시 필요한 세그먼트 정보를 포함.
  • 실행 가능한 코드와 데이터를 메모리에 어떻게 매핑할 지 설명.
  • 주요 필드 
    • `Type` : 로드 가능(Loadable) 세그먼트, 동적 링크 정보 등.
    • `Offset` : 파일 내 위치.
    • `Virtual Address` : 메모리 내 매핑 위치.

3. 섹션 헤더 테이블 (Section Header Table)

  • 파일에 포함된 섹션들에 대한 정보를 포함.
  • 주로 링크 과정에서 사용되며, 실행 시에는 생략 가능.
  • 주요 섹션
    • `.text` : 실행 가능한 코드.
    • `.data` : 초기화된 데이터.
    • `.bss` : 초기화되지 않은 데이터.
    • `.symtab`/`.strtab` : 심볼 테이블과 스트링 테이블.

4. 데이터 (Sections 또는 Segments)

  • 실제 실행 파일의 코드, 데이터, 심볼 정보를 담고 있는 부분.
  • ELF 파일은 세그먼트와 섹션의 두 가지 관점에서 파일을 나눕니다.
    • 세그먼트 : 실행 시 메모리 매핑을 위한 논리적 단위.
    • 섹션 : 파일 내 컴파일러와 링커를 위한 물리적 단위

 

728x90

'CS' 카테고리의 다른 글

Free RTOS란?  (0) 2024.12.09
Keil μVision5  (2) 2024.11.08
OSAL(Operating System Abstraction Layer)란?  (0) 2024.11.05
프리패칭(Prefetching)이란?  (0) 2024.11.04
부동소수점에 대해서  (0) 2024.11.01