ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ELF(executable and linking format)
    컴파일러/코드 생성 2013. 8. 3. 00:38

    프로그램 헤더(program header; 로더) 정보로 처리하면 세그먼트의 집합으로 보이고, 섹션 헤더(section header; 어셈블러나 링커) 정보로 처리하면 섹션의 집합으로 보인다. 세그먼트는 1개 이상의 섹션으로 구성된다.

    c.f. ELF 헤더


    재배치 가능 파일(relocatable file)

    어셈블러(GNU as)가 생성하는 오브젝트 파일

    프로그램 헤더가 없으므로 그대로 실행할 수 없다

    c.f. 링크


    입력 모듈에서 정의되어 있는 global symbol

    일반 함수와 전역 변수

    입력 모듈에서 참조하는 하고 있지만 다른 곳에 정의된 global symbol

    extern으로 선언된 함수와 변수

    입력 모듈에서 정의되어 해당 모듈에서만 배타적으로 참조할 수 있는 local symbol

    정적 함수와 정적 변수


    gcc는 옵션을 붙이지 않으면 다이내믹 링크를 한다.

    공유 라이브러리


    .text 섹션

    기계어 코드


    .text 디렉티브

    .data 섹션

    초기값을 갖는 글로벌 변수


    .data 디렉티브

    .rodata 섹션

    문자열 리터럴 등의 변경할 수 없는 데이터


    .section .rodata

    .bss 섹션

    c.f. block started by symbol

    초기값이 없는 글로벌 변수


    .comm 디렉티브

    common symbol


Designed by Tistory.