2012-03-17 4 views
5

안녕하세요, 나는이 코드 "__exidx_start = .;"이 위치 카운터 "."의 값에 라벨 값을 설정하는 링커 스크립트를 가지고 있습니다. 이 레이블은 동일한 링커 스크립트 내에서 사용되지 않습니다.'__exidx_start'및 '__exidx_end'는 무엇을합니까?

첫 번째 레이블 아래에 유사한 레이블 쌍이 정의되어 있으며 "__exidx_end = .;"과 같은 방식으로 정의되어 있습니다.

이 두 라벨은 .text.rodata 섹션의 boundries 있습니다,하지만 난 그들이 링커 스크립트에서 사용하지 않는 경우 왜 사람이 그 두를 정의하는 것 몰라?

답변

2

그들은 링커 스크립트에서 사용되지 않지만 extern 변수로 선언되어 gcc 라이브러리에서 사용됩니다. 그들을 데리고 나오면 다음과 같이됩니다.

 
.../gcc/config/arm/unwind-arm.c:614: undefined reference to `__exidx_start' 
.../gcc/config/arm/unwind-arm.c:614: undefined reference to `__exidx_end'