27장. 컴파일러 및 툴
GDB는 64비트 ARM 아키텍처에서 정렬되지 않은 감시 지점 히트를 등록합니다.
이전에는
GDB
디버거에서 64비트 ARM 아키텍처에서 사용하는 시계 ,rwatch 및 a watch GDB
명령에 대해 정렬되지 않은 하드웨어 감시 지점에 대한 제한된 지원을 제공했습니다. 결과적으로 이러한 시스템에서 실행되는 GDB
는 일부 감시 지점 히트를 등록하지 못하여 나중에 디버그된 프로그램을 중지하지 않았습니다.
GDB
는 이러한 상황을 처리하도록 확장되었습니다. 따라서 정렬되지 않은 것을 포함하여 64비트 ARM 아키텍처의 모든 하드웨어 감시 포인트를 올바르게 처리할 수 있습니다. (BZ#1347993)
IBM Z 아키텍처 GCC에서 Retpoline 지원
이번 업데이트에서는 IBM Z 아키텍처의 GCC(GNU Compiler Collection)에서 retpoline 생성 지원이 추가되었습니다. retpolines는 CVE-2017-5715에 설명된 Spectre Variant 2 공격을 완화하는 오버헤드를 줄이기 위해 커널에서 사용하는 기술입니다. (BZ#1552021)
binutils 절대 주소에 대한 재배치가 발생할 때 링커가 더 이상 예기치 않게 종료되지 않음
이전에는 binutils 패키지의 링커에서 절대 주소에 대한 재배치를 제대로 처리할 수 없었습니다. 결과적으로 이러한 재배치가 발생하면 링커의 세그먼트 결함이 발생했습니다.
절대 주소에 대한 재배치를 처리하도록 링커가 확장되었으며 더 이상 문제가 발생하지 않습니다. (BZ#1557346)
이제 GNOME 키에 인증 정보를 저장하는 도우미를 git-gnome-keyring 하위 패키지에서 사용할 수 있습니다.
이전에는 GNOME 키링에 자격 증명을 저장하는 도우미가
git
패키지의 일부이기 때문에 git
구성 요소를 종속성으로 자동 설치합니다. 이번 업데이트를 통해 도우미가 별도의 git-gnome-keyring 하위 패키지로 이동되었습니다. 결과적으로 git
설치 크기가 줄어듭니다.
하위 패키지를 설치하려면 다음을 수행합니다.
yum install git-gnome-keyring
# yum install git-gnome-keyring
(BZ#1284081)
Git instaweb
은 이제 추가 구성없이 작동하며 별도의 하위 패키지에서 사용할 수 있습니다.
이전에는
git instaweb
명령에 웹 서버가 필요했으며 기본 설치에서는 작동하지 않았습니다. 이번 업데이트를 통해 git instaweb
이 Apache
웹 서버에 따라 달라지고 웹 서버를 자동으로 사용하도록 구성된 별도의 git-instaweb 하위 패키지로 이동되었습니다. 결과적으로 git-instaweb 가 설치될 때 git instaweb
이 추가 구성 없이 작동합니다. 하위 패키지를 설치하려면 다음을 수행합니다.
yum install git-instaweb
# yum install git-instaweb
(BZ#1213059)
man
유틸리티는 자정 후 gimme gimme 을 더 이상 인쇄하지 않습니다.
이번 업데이트 이전에는 00:30 현지 시간에 표준 오류 출력에 gimme gimme gimme 을 출력하는
man
유틸리티에 동경이 발생했습니다. 그 결과 특정 상황에서 예기치 않은 출력이 자동화된 툴을 잘못 입력했습니다. 이번 업데이트에서는 동부의 말란이 제거되었으며 설명된 문제는 더 이상 발생하지 않습니다. (BZ#1515352)
sysctl
에서 이제 tuned
에서 커널 매개변수를 재설정할 수 있음
이번 업데이트 이전에는
sysctl
의 버그가 커널 매개변수를 기본값으로 설정하는 것을 허용하지 않았습니다. 결과적으로 tuned
유틸리티에서 sysctl
을 사용하여 기본 커널 매개변수를 설정할 수 없었습니다. 이번 업데이트를 통해 sysctl
은 기본값을 적용하여 커널 매개변수를 재설정합니다. 결과적으로 tuned
는 예상대로 작동하며 커널 매개 변수는 기본값으로 재설정할 수 있습니다. (BZ#1507356)
ncat
이 UDP 모드에서 환경 변수를 올바르게 설정
이전에는
ncat
유틸리티에서 UDP(User Datagram Protocol) 연결에 대한 환경 변수를 올바르게 설정하지 않았습니다. 그 결과 사용자의 스크립트가 UDP 모드에서 실패했습니다. 이번 업데이트에서는 일부 내부 값을 설정하고 환경 변수가 올바르게 설정됩니다. (BZ#1573411)
ncat
은 모든 프록시 유형에 대해 더 이상 기본 HTTP 포트를 사용하지 않습니다.
이전에는
socks4
또는 socks5
와 같은 다른 프록시 유형이 지정되어도 HTTP 프록시의 기본 포트가 사용되었습니다. 그 결과 ncat
유틸리티에서 기본이 아닌 포트를 통해 프록시 유형에 연결하지 못했습니다. 이번 업데이트에서는 HTTP 프록시 포트가 기본적으로 사용되지 않도록 코드가 수정되었습니다. 결과적으로 ncat
은 이제 프록시 유형에 따라 적절한 기본 포트를 설정합니다. (BZ#1546246)
10.0.0.1 2000 이미지의 디코딩 및 변환이 올바르게 작동합니다.
이전에는
openjpeg
라이브러리의 버그로 인해 CloudEvent 2000 이미지의 디코딩 및 변환이 제대로 작동하지 않았습니다. 이번 업데이트를 통해 기본 소스 코드가 수정되었으며 10.0.0.1 2000 이미지의 디코딩 및 변환이 예상대로 작동합니다. (BZ#1553235)
스트라이프
가 더 이상 BFD
라이브러리 버전을 사용하는 도구로 빌드되는 바이너리 파일
이전에는 파일이 처음에
strip
보다 최신 버전의 BFD
라이브러리를 사용하는 툴에 의해 생성된 경우 스트립
툴에서 유효하지 않은 바이너리 파일을 생성했습니다. 그 결과 결과 바이너리 파일을 실행하면 실패하고 확인할 수 없는 재배치에 대한 오류 메시지가 생성되었습니다. BFD
는 이러한 기능이 포함된 코드를 손상시키는 대신 향후 기능을 인식하지 못하는 상황을 보고하도록 수정되었습니다. 결과적으로 strip
는 이제 오류 메시지를 생성하고 이 상황에서 중단됩니다. (BZ#1553842)
프로세스 공유 강력한 버그 수정
이전에는 POSIX 스레드 구현의 버그로 인해 이러한 10.0.0.1이 복구되지 않을 수 있었습니다. 결과적으로 인터페이스 사용자는 프로세스가 종료되는 것을 볼 수 있었지만
EOWNERDEAD
를 복구하려는 다른 프로세스에 반환하지 않았습니다. 이번 업데이트에서는 강력한 수준의 threading 라이브러리와 모든 알려진 수정 가능한 버그가 수정되어 있습니다. (BZ#1401665)
다른 컨테이너의 프로세스에 연결할 때 gdbserver가 제대로 작동하지 않음
경우에 따라 GDB 디버거는 컨테이너에서 실행 중인 GDB 서버에 연결할 수 없으므로 불가능하지는 않더라도 컨테이너 디버깅 문제가 발생할 수 있습니다. 이 호스트에서 사용할 수 없는 소켓 쌍 을 반환한 버그가 수정되었으며 GDB와 GDBserver 모두 컨테이너로 디버그할 수 있습니다. (BZ#1578378)
operf
는 이제 충돌 없이 프로세스를 종료하기 위한 커널 이벤트 샘플을 처리
이전에는 Red Hat Enterprise Linux kernel 4.14에서 프로세스를 -1로 종료하기 위해 perf 이벤트 샘플에서 반환된 PID 값을 변경했습니다. 결과적으로 커널 perf 이벤트 하위 시스템에서 -1을 사용하면
operf
에 의해 플래그로 -1을 내부 사용과 충돌했습니다. 플래그는 프로세스 정보를 검색하는 데 초기화 작업이 필요함을 나타내는 데 사용되었습니다. 그러나 이러한 정보를 검색하려고 하면 operf
가 충돌하게 되었습니다.
이번 업데이트에서는 다른 값을 사용하여 프로세스 정보에 플래그를 지정하도록
oprofile
코드를 조정하므로 프로세스를 종료하는 데 사용되는 -1과 더 이상 충돌하지 않습니다. (BZ#1561103)
SystemTap
에서 완전한 커널 역추적 제공
ASLR(Address space layout randomization)과 관련된 커널 변경으로 인해
SystemTap
툴에서 수집한 커널 역추적이 불완전했습니다. 이러한 상황을 처리하도록 SystemTap
이 확장되었습니다. 결과적으로 SystemTap
은 완전한 커널 역추적을 제공합니다. (BZ#1567356)
fallocate()
플래그는 문서에 따라 다시 사용 가능
이전에는 glibc 패키지의
fcntl.h
헤더 파일에 fallocate()
함수에 대한 플래그가 포함되지 않았습니다. 그 결과 man 페이지에 따라 fallocate()
를 사용하는 프로그램이 컴파일되지 않았습니다. < linux/entryoc.h
> 파일을 간접 포함하여 누락된 플래그가 추가되어 해당 프로그램의 컴파일이 다시 가능합니다. (BZ#1476120)
nscd
netgroups 캐시가 만료 처리
이전 버전에서는
nscd
서비스를 사용하여 netgroups에 대한 LDAP 요청을 캐시할 때 캐시의 일부 항목이 올바르게 만료되지 않을 수 있었습니다. 그 결과 nscd
캐시는 서비스 데이터베이스를 올바르게 반영하지 않았습니다(예: LDAP). 캐시 만료 코드가 수정되었으며 netgroups의 변경 사항이 캐시로 올바르게 전파됩니다. (BZ#1505647)
llvm-private 최신 libstdc++
라이브러리 버전과 함께 사용할 때 더 이상 충돌하지 않음
이전에는 그래픽 렌더링에 대한 드라이버를 제공하는 llvm-private 패키지의 실행 파일이
libstdc++
라이브러리에 대해 정적으로 연결되었습니다. 그 결과 gRPCX, Mesa llvmpipe
renderer를 사용하여 프로그램을 실행하면 잘못된 포인터에 대한 메시지와 함께 다른 libstdc++
버전에서 예기치 않은 종료가 발생했습니다. llvm-private 변경되어 libstdc++
에 대한 정적 링크가 아닙니다. 결과적으로 이 드라이버를 사용하는 프로그램이 더 이상 이러한 상황에서 예기치 않게 종료되지 않습니다. (BZ#1417663)