7.2.4. RELOC

RELOC 지시어는 객체 파일에서 ELF 재배치를 명시적으로 인코딩합니다.

구문

RELOC n, symbol
RELOC n

인수 설명:

n

0 ~ 255 범위에 있어야 합니다.

symbol

임의의 프로그램 상대 레이블일 수 있습니다.

사용법

RELOC n, symbol을 사용하여 symbol로 레이블이 지정된 주소와 관련된 재배치를 만듭니다.

RELOC를 ARM 또는 Thumb 명령어 바로 다음에 사용할 경우 해당 명령어에 재배치가 만들어집니다. RELOCDCB, DCW, DCD 또는 다른 모든 데이터 생성 지시어 바로 다음에 사용할 경우 데이터의 시작 부분에 재배치가 만들어집니다. 적용할 모든 가수는 명령어나 DCI 또는 DCD에 인코딩해야 합니다.

어셈블러가 해당 위치에서 재배치를 이미 만든 경우 이 재배치는 RELOC 지시어의 세부 정보로 업데이트됩니다. 예를 들면 다음과 같습니다.

DCD     sym2 ; R_ARM_ABS32 to sym32
RELOC   55   ; ... makes it R_ARM_ABS32_NOI

그 밖의 모든 경우에는 RELOC를 사용하면 오류가 발생합니다. 예를 들어 이 지시어를 LTORG 또는 ALIGN 같이 데이터를 생성하지 않는 지시어 다음에 사용하거나 AREA에서 맨 처음 사용하면 오류가 발생합니다.

RELOC n을 사용하여 익명 기호 즉, 익명 테이블의 기호 0과 관련된 재배치를 만듭니다. 위의 어셈블러가 만든 재배치 없이 RELOC n을 사용하면 익명 기호와 관련된 재배치가 만들어집니다. 자세한 내용은 ARM 아키텍처용 응용 프로그램 바이너리 인터페이스를 참조하십시오.

예제

IMPORT  impsym
LDR     r0,[pc,#-8]
RELOC   4, impsym
DCD     0
RELOC   2, sym
DCD     0,1,2,3,4  ; the final word is relocated
RELOC   38,sym2    ; R_ARM_TARGET1
Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IK
Non-Confidential