2011-09-04 4 views
1

x86-64에서이 상대 주소를 사용하여 다음 작업을 수행 할 수 있습니까? 내가 NASM과 OS X에이 방법을 수행 할 때데이터 세그먼트의 텍스트 세그먼트에 대한 포인터

section .text 
two 
    dq 0 

section .data 
one: 
    dq two 

, 나는 다음과 같은 링커 경고를 얻을 :

LD : 경고 : PIE 사용할 수 없습니다. 절대 주소 지정 ( -mdynamic-no-pic)은 코드 서명 된 PIE에서는 허용되지 않지만, 에서 /var/tmp/tmp.1.Ho4qKA에서 사용됩니다. 이 경고를 해결하려면 은, -Wl와 -mdynamic 노 그림 또는 링크 -no_pie 컴파일하지

+0

어떤 버전의 nasm을 사용하고 있습니까? Xcode 4.1 Lion에 포함 된 제품으로이를 재현 할 수 없었습니다. –

+0

Xcode와 함께 제공되는 NASM의 버전이 64 비트 어셈블리를 지원하지 않는 것 같습니다. –

+0

아마도'section .text'와'section .data'를 의미할까요? –

답변

-1

경고의 말씀 마십시오. PIE (position independent executable)은 가능하다. 즉 시스템이 코드를 전혀 수정하지 않고 메모리에서 재배치 될 수 있음을 의미한다. 링커가 자동으로이를 감지하고 비활성화하므로 평상시처럼 재배치가 발생하여 지속적인 주소를 사용할 수 있습니다.

+1

PIE를 비활성화하지 않고 수행하려는 작업을 수행하고 있습니까? –