loadbind 서브루틴

용도

모듈의 디퍼드 심볼에 대한 특정 런타임 해상도를 제공합니다.

구문

int loadbind( Flag,  ExportPointer,  ImportPointer)
int Flag;
void *ExportPointer, *ImportPointer;

설명

로드바인드 서브루틴은 이전에 로드된 오브젝트 모듈의 미해결 임포트 심볼의 런타임 해상도를 제어합니다.

로드바인드 서브루틴은 두 모듈이 로드될 때 사용됩니다. 로드 서브루틴을 사용하여 런타임에 로드되는 객체 모듈인 모듈 A는 가져온 심볼 중 일부를 나중에 해결하도록 지정했습니다. 모듈 B에는 모듈 A의 해결되지 않은 가져오기를 해결하기 위해 내보낸 심볼이 포함되어 있습니다.

로드바인드 서비스가 호출될 때까지 모듈 A의 가져온 심볼이 확인되지 않도록 하려면 모듈 A를 로드할 때 로드 서브루틴 플래그인 L_NOAUTODEFER를 지정하면 됩니다.

32비트 프로세스가 ptrace 제어하에 실행 중인 경우 로드바인드 처리가 완료된 후 프로세스 주소 공간의 일부가 다시 복사됩니다. 기본 프로그램 텍스트(세그먼트 1에 로드됨)와 공유 라이브러리 모듈(세그먼트 13에 로드됨)이 다시 복사됩니다. 이러한 세그먼트에 대한 중단점이나 기타 수정 사항은 로드 바인드 호출 후에 다시 삽입해야 합니다.

Ptrace 제어하에 실행 중인 32비트 프로세스가 loadbind를 호출하면 wait가 반환한 상태에 W_SLWTED 플래그를 설정하여 디버거에 알림을 보냅니다.

Ptrace 제어를 받는 64비트 프로세스가 loadbind를 호출하면 디버거에 알림이 표시되지 않고 디버깅 중인 프로세스의 실행이 정상적으로 계속됩니다.

매개변수

항목 설명
플래그 지정 현재 사용하지 않습니다.
ExportPointer 모듈 B가 로드될 때 로드 서브루틴이 반환하는 함수 포인터를 지정합니다.
ImportPointer 모듈 A가 로드될 때 로드 서브루틴이 반환하는 함수 포인터를 지정합니다.
참고: ImportPointer 또는 ExportPointer 매개변수는 관련 모듈에 포함된 내보낸 정적 데이터 영역 심볼 또는 함수 포인터로 설정할 수도 있습니다. 이는 일반적으로 지정된 모듈의 로드에서 반환되는 함수 포인터입니다.

리턴 값

로드바인드 서브루틴이 성공하면 0이 반환됩니다.

오류 코드

오류가 감지되면 errno 전역 변수가 관련 오류 코드로 설정된 상태에서 -1 반환됩니다:

항목 설명
EINVAL ImportPointer 또는 ExportPointer 매개변수가 유효하지 않음을 나타냅니다( ExportPointer 또는 ImportPointer 매개변수에 대한 포인터가 로드된 프로그램 모듈 또는 라이브러리와 일치하지 않음).
ENOMEM 프로그램에 시스템에서 허용하는 최대 메모리보다 더 많은 메모리가 필요함을 나타냅니다.

로드바인드 서브루틴에서 오류가 반환된 후 로드쿼리 서브루틴을 사용하여 로드바인드 오류에 대한 추가 정보를 얻을 수도 있습니다.