8.10. 컴파일러 및 개발 도구


GCC Toolset 13: GCC는 이제 벡터화가 활성화된 IBM POWER9, Little Endian에서 코드를 올바르게 컴파일합니다.

이전에는 IBM POWER9에서 코드를 컴파일할 때 벡터화가 활성화된 Little Endian이 활성화된 경우 GCC 컴파일러에서 잘못된 코드를 생성했습니다. expander의 Register Transfer Language (RTL) 패턴이 수정되었으며 코드가 올바르게 컴파일됩니다.

Jira:RHEL-45190[1]

glibc 동적 링커는 사용자 정의 malloc 구현의 TLS 액세스를 사용하여 애플리케이션에서 수행한 재차별 malloc 호출을 방지합니다.

일부 애플리케이션은 초기 실행 TLS 대신 글로벌 동적 스레드 로컬 스토리지(TLS)를 사용하는 사용자 지정 malloc 동적 메모리 할당 구현을 제공합니다. 이번 업데이트 이전에는 글로벌 동적 TLS를 사용하는 번들된 malloc 호출이 있는 애플리케이션에서 애플리케이션의 malloc 하위 시스템에 대한 재식 호출이 발생할 수 있었습니다. 그 결과 스택 소진 또는 내부 데이터 구조의 예기치 않은 상태로 인해 애플리케이션 malloc 호출이 충돌했습니다. 이번 업데이트를 통해 glibc 동적 링커는 사용자 정의 malloc 구현에서 TLS 액세스를 감지합니다. malloc 호출 중 TLS 액세스가 감지되면 TLS 처리 중 추가 호출을 건너뛰고 malloc 호출을 다시 시작할 수 없습니다.

Jira:RHEL-39992

ELF 생성자에서 dlopen() 을 호출하여 TLS 데이터를 더 이상 덮어쓰지 않습니다.

이전에는 glibc 동적 링커에서 ELF 생성자에서 dlopen() 함수가 호출된 특정 경우에 스레드-로컬 스토리지(TLS)의 초기화 상태를 올바르게 추적하지 않았습니다. 그 결과 애플리케이션에서 수정한 후 TLS 데이터가 원래 값으로 복원되었습니다. 이번 업데이트를 통해 동적 링커는 별도의 플래그를 사용하여 각 공유 오브젝트의 TLS 초기화를 추적합니다. 결과적으로 ELF 생성자에서 dlopen() 함수에 대한 호출으로 TLS 데이터가 예기치 않게 덮어쓰지 않습니다.

Jira:RHEL-36148

Perftools에서 더 이상 LTO 디버그 정보를 처리하지 못했습니다

이전에는 바이너리 파일에서 디버그 정보를 읽기 위해 성능 툴에서 사용하는 binutils 컬렉션의 Binary File Descriptor(BFD) 라이브러리에서 LTO(링크 시간 최적화)를 사용하여 GCC 컴파일러에서 생성된 디버그 정보를 처리할 수 없었습니다. 그 결과 perftools에 오류 메시지가 표시되고 LTO 디버그 정보가 포함된 파일을 검사할 때 올바르게 실행되지 못했습니다. BFD 라이브러리는 LTO를 사용하여 컴파일 중에 생성된 디버그 정보를 처리하도록 업데이트되었으며 영향을 받는 perftools는 이러한 디버그 정보를 성공적으로 처리합니다.

Jira:RHEL-43758[1]

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.