2016-06-12 7 views
5

나는 LLVM 라이브러리에서 살펴 본다 그리고 난 연타이 메타 데이터 부가 LLVM IR 모듈을 방출하는 것을 알아 냈 :프로그램 컴파일시 PIC 레벨은 무엇입니까?

!llvm.module.flags = !{!0} 
!llvm.ident = !{!1} 

!0 = !{i32 1, !"PIC Level", i32 2} 
!1 = !{!"Apple LLVM version 7.3.0 (clang-703.0.31)"} 

그런 다음 나는 모듈의 방법 setPICLevel()를 호출하면 비슷한 결과를 얻을 수 있다는 발견을 :

!0 = !{i32 1, !"PIC Level", i32 0} 

전체 메타 데이터 !0은 약 PIC 수준입니다.

나는 인터넷에서 검색해 왔지만 아무 것도 찾지 못했습니다. PIC 레벨은 무엇이며 무엇이 나타 납니까?

답변

5

이 플래그는 PowerPC에만 적용되며 다른 경우 무시됩니다. 위치 독립적 코드의 모델을 작거나 큰 모델로 설정합니다. 물론 다른 아키텍처에는 PIC가있을 수 있지만이 플래그는 모델이 다른 곳에 적용되지 않는 경우 크기를 나타냅니다. 이 처음 LLVM에 추가 장소를 볼 수

는 커밋 : http://comments.gmane.org/gmane.comp.compilers.llvm.cvs/205216

상세 정보 :

https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/MachOTopics/1-Articles/dynamic_code.html

https://en.m.wikipedia.org/wiki/Position-independent_code