안녕하세요. 라이브러리 프로파일에 대한 조언을 얻고 싶습니다.
application 컴파일시 -pg 옵션을 줘도 library 함수(e.g. malloc/open 등등)에 대해서는 캐치 할 수 없어서
glibc 빌드시 --enable-profile 이란 옵션을 주었는데요. ( 빌드 후 libc_p.a 로 생성됩니다.)
application을 컴파일할 때 libc_p.a 를 링킹하고 실행시키면 __mcount_internal 함수에서 seg fault 가 발생합니다.
glibc 여러 version 에서 시도해 보았고 glibc-profile.xx.rpm 파일을 사용해도 같은 결과를 보입니다.
해결의 실마리가 잡히지 않아 혹시나 과거에 같은 어려움을 겪으신 분께 조언을 구하고 싶습니다.
.
glibc 빌드시 강제로 -pg 옵션을 주십시요.
--enable-profile 옵션이 그 역활을 제대로 수행하는지 모르겠는데,
만약 -pg 옵션이 추가 되지 않는다면 강제로 주어야 합니다.
물론 이로인해 segment fault와 같은 현상이 발생할수 있는데,
만약 특정 파일에서 발생을 한다면 그 파일은 -pg 옵션을 제거하시고,
이런식으로 줄여 나가십시요.
참고로 프로파일링 코드는 IPA 단계에서 추가됩니다.