본문 바로가기

gcc

(4)
GCC 옵션 : version script 참고 : http://korea.gnu.org/manual/release/ld/ld-sjp/ld-ko_2.html 참고2: http://studyfoss.egloos.com/5254916 참고3: http://stackoverflow.com/questions/8129782/version-script-and-hidden-visibility gcc 옵션 중 version script라는 게 있다는 사실을 알았다. 정확히는 ld 옵션이기 때문에 gcc에서 옵션을 줄 때는 -Wl,--version-script=파일 경로 의 형태를 가져야 한다. 참고2에서는 버전 관리를 위해 사용했으나, 버전 관리 뿐 아니라 심볼 개수를 줄이는 용도로도 활용이 가능한가 보다. 예컨데,// t.c int __attribute__(..
GCC옵션: finstrument-functions 추가 조사 : -finstrument-functions-exclude-file-list instrument-functions 옵션은 함수의 시작과 끝에 다른 함수를 삽입해주는 옵션입니다. 용도는 다양할 것 같지만, 디버깅이 어려운 환경 - 예를 들어 임베디드, 멀티 프로세스 환경, 서버-클라이언트 구조 등에서 큰 도움이 될 것 같습니다. 그 외 많은 프로파일링 툴이 이것을 사용하여 나름의 기능을 구현하는 것 같습니다. 사용 방법은 무척 간단합니다. __cyg_profile_func_enter 와 __cyg_profile_func_exit는 instrument 옵션이 켜졌을 때 gcc가 연결해주는 함수입니다. 이 함수들은 다른 함수들과 다르게 no_instrument_function이라는 attribute..
__builtin_expect 키워드 최근 이상한 매크로를 발견하고 추적하던 중 멋진 gcc의 키워드를 발견했다. __builtin_expect라는 키워드이다. 아래 URL에 좀 더 자세히 적혀있다. http://galaxyra.linuxstudy.pe.kr/galaxyra/tag/__builtin_expect 한마디로 말하면 실행할 가능성이 높은 애를 위해서 컴파일하도록 하는 매크로이다. 방어적 코딩을 하다보면 무수히 많은 if 문을 넣어야 하는데 아키텍처를 조금이라도 공부한 사람들은 Pipeline Hazard때문에 if문을 꺼리게 된다. if문의 해악을 없앨순 없지만 되도록 실행가능성이 높은 코드를 밑에 배치해 파이프라인 해저드를 최소화 시킬수 있도록 해주는 키워드가 바로 이 키워드이다. #define unlikely(x) __buil..
gcc 업그레이드 (4.5.0) WebKit 작업중에 오류가 발생해서 알아보니 gcc 4.4.1에 버그가 있는 것 같다. 현재까지 우분투 9.10 의 기본 gcc 버전은 4.4.1이다. 그래서 직접 gcc 4.5를 설치해보기로 했다. gcc 4.5 릴리즈 노트 : http://gcc.gnu.org/gcc-4.5/ gcc SVN 관련 문서 : http://gcc.gnu.org/svn.html 1. gcc 4.5 다운로드 먼저 gcc 4.5를 뜻하는 브랜치를 확인해야하겠기에 아래 명령을 수행한다. svn ls svn://gcc.gnu.org/svn/gcc/branches 명령의 결과로 무수히 많은 브랜치가 올라가는데 gcc 4.5 브랜치는 gcc-4_5-branch SVN으로 받았으나 configure에서 에러가 발생했는데 메시지 공부하고..