안녕하세요.


__mmap_switched 레이블부터 PIC(position-independent code)가 아닌 절대주소(virtual address)로 전환되는 것과 관련하여 궁금한 점이 있습니다.

* 위치 : arch/arm/kernel/head-common.S


1. 위와 같은 경우 한 파일 안에 PIC 와 절대주소 코드가 공존하게 되는데 그 원리가

linker 가 그러한 것이 가능하게끔 GOT (global offset table) 및 관련 코드를 생성해서 그런건가요?


2. 어디서 본 것에 의하면 PIC는 compiler option으로 설정,생성된다고 하는데

head-common.S 의 경우 assembly 이기 때문에 linker 가 그 작업을 해주는건지도 궁금합니다.


3. head.s , head-common.s 에 보면 ADR 명령어가 사용되는데 PIC 방식으로 addressing 하는걸로 알고 있습니다.

결국 compiler option으로 PIC 생성할 경우 이 ADR 명령어가 만들어지는 것인가요? 이것이 linker 가 해주는

PIC 처리와 어떤 연관이 있는지 궁금합니다.