ELF visibility옵션 사용할때
글쓴이: netstat123 / 작성시간: 목, 2010/02/25 - 5:06오후
이전에 올린 질문의 답변을 받은것 중에서 아직 해결이 안된 부분이
있어서 추가적으로 질문을 올려봅니다.
동적라이브러리의 심볼을 감추어 코어덤프파일 발생시에
함수의 이름을 남기지 않으려고 합니다.
gcc 버전은 4.2이고 makefile에 -fvisibility=hidden옵션을 주어 컴파일 하였습니다.
#define DLLEXPORT __attribute__ ((visibility("default")))
#define DLLLOCAL __attribute__ ((visibility("hidden")))
define을 정의후 함수들에 적용했는데
문제는 해당함수를 다른곳에서 호출이 안되어서 해당 함수를 포함한 라이브러리를 사용시에
test.cpp:(.text+0x1b6): undefined reference to 'FunctionA'
이러한 에러가 발생합니다.
ELF visibility옵션이나 static함수로 만들어서 사용을 할때
프로그램이 정상동작하면서 코어덤프내에서 함수이름이 남지 않게 하는 방법은 없을까요?
Forums:
hidden으로 설정하시면
hidden으로 설정하시면 외부에서 함수가 있는지 없는지 알 수 없기때문에 direct reference를 할 수 없습니다.
해결 방법으로는 indirect reference가 있습니다.
자세한 내용은 아래 링크를 참고하시기 바랍니다. (영문)
http://www.winehq.org/pipermail/wine-devel/2004-May/027026.html
RET ;My life :P
우선 답변
우선 답변 감사합니다.
추가적으로 궁금한 부분이 있는데요. 그럼 extern을 이용해서 해당함수를 외부에서 접근이 가능하게 할때
-fvisibility=hidden옵션은 사용하지 않고 extern만 이용해서 접근을 할수 있도록 설정하는건가요??
댓글 달기