elf32-littlearm.lds 분석
/* 2008.09.10. */
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
/*ELF32의 little endian으로 코드를 생성하겠다.*/
/*OUTPUT_FORMAT("elf32-arm", "elf32-arm", "elf32-arm")*/
OUTPUT_ARCH(arm)/* binary를 실행할 수 있는 CPU architecture로 Arm*/
ENTRY(reset_handler)/* 프로그램의 시작을 가리키며, 시작되는 함수의 */
/* 이름은 "reset_handler"*/
/* reset_hanger은 cstartup.S의 파일에 있는 루틴*/
SECTIONS
{
.text : { /*실행할 프로그램 코드영역 */
_stext = .;/*Makefile파일에서 가져와서 넣어준다 . 운영체제가.*/
*(.text)/*함수위치*/
*(.rodata)/*Read only Data의 위치 */
*(.rodata*)/*그외에 잡다한것들 */
. = ALIGN(4);/*4바위트 단위로 */
_etext = . ;/*텍스트 영역의 끝주소*/
}
/* collect all initialized .data sections that go into FLASH */
.data : AT ( ADDR (.text) + SIZEOF (.text) ) {
_sdata = .;/* 텍스트 영역의 시작주소 Makefile 로부터 받아옴 */
*(.vectors)/* 벡터테이블 */
*(.data)/* 초기화된 데이타 영역 */
_edata = .;/* 마지막주소 End */
}
/* collect all uninitialized .bss sections that go into FLASH */
.bss (NOLOAD) : { /* 0값이므로 마지막을 게산할 필요가 없음 */
. = ALIGN(4);
_sbss = .;
*(.bss)/*초기화되지 않은 데이타 영역 */
_ebss = .;/*bss영역의 마지막 주소 */
}
}
end = .;