8.9. 컴파일러 및 개발 도구
guru 모드를 사용하는 SystemTap 스크립트를 더 빠르게 컴파일
systemtap
guru 모드 활성 분석에서는 dyninst
라이브러리를 사용하여 바이너리를 구문 분석합니다. 최신 커널은 CONFIG_RETPOLINE=y
를 사용하여 완화 코드를 활성화하여 기존 RET 명령어를 thunk로 교체할 수 있습니다. 그 결과, 바이너리 분석은 활성 분석로 점프에서 도입한 제어 흐름 그래프의 모든 추가 에지를 검사해야 하므로 훨씬 더 오랜 시간이 걸렸습니다.
이번 업데이트를 통해 systemtap
은 커널 코드가 thunks를 사용할 때 활성 분석을 비활성화하고 결과적으로 guru 모드를 사용하는 systemtap
스크립트를 더 빠르게 컴파일합니다.
eu-addr2line -C
가 다른 인수를 올바르게 인식
이전에는 elfutils
의 eu-addr2line
명령에서 -C
인수를 사용할 때 다음 단일 문자 인수가 사라졌습니다. 결과적으로 eu-addr2line -Ci
명령은 eu-addr2line -C
와 동일한 방식으로 작동하지만 eu-addr2line -iC
는 예상대로 작동했습니다. 이 버그는 수정되었으며 eu-addr2line -Ci
는 이제 두 인수를 모두 인식합니다.
eu-addr2line -i
now GCC link-time optimization으로 컴파일된 코드를 올바르게 처리
이전에는 elfutils
에 포함된 libdw
라이브러리의 dwarf_getscopes
함수에서 GCC 링크 타임 최적화로 컴파일된 함수의 추상적인 원본 정의를 찾을 수 없었습니다. 결과적으로 eu-addr2line
명령에서 -i
인수를 사용하면 eu-addr2line
에서 gcc -flto
로 컴파일된 코드에 대한 인라인 함수를 표시할 수 없었습니다. 이번 업데이트를 통해 libdw dwarf_getscopes
함수는 인라인 범위의 올바른 컴파일 단위를 찾고 eu-addr2line -i
가 예상대로 작동합니다.