0
dlopen()
으로로드 된 공유 라이브러리를 디버깅 할 때 재미있는 점이 발견되었습니다. crypt()
에 의해 반환 된 주소는 내 라이브러리에서 호출 할 때 32 비트를 기반으로합니다. 즉, 디버거에서 해당 주소를 보려고 할 때. 이것은 나쁜 주소라고합니다. 이 주소에 내 경우에있는 시프트 인 0xffffffff00000000
을 추가하면 올바른 결과를 얻을 수 있습니다. crypt
소스를 보면 crypt
이 반환하는 문자열은 정적 문자 배열이지만 주소가 32 비트 인 이유는 분명하지 않습니다. Solaris x64에서 crypt()가 잘못된 주소를 반환했습니다.
char *
를 반환으로
crypt()
을 선언 함수 프로토 타입을 가지고 있도록 코드에서