4.11. 컴파일러 및 개발 도구
시스템 GCC 버전 11.5로 업데이트
RHEL 9의 GCC 시스템 버전이 버전 11.5로 업데이트되었습니다. 이 업데이트는 다양한 버그 수정을 제공합니다.
동적 오브젝트를 더 가깝게 배치하여 glibc
의 새로운 튜닝 가능 항목을 사용하여 성능을 개선할 수 있습니다.
이전에는 glibc
의 동적 로더가 사용 가능한 주소 공간 전체에서 동적 오브젝트를 무작위로 배치하여 보안을 강화했습니다. 그 결과 오브젝트가 너무 멀리 떨어져 있어 비효율적인 호출이 발생했습니다.
이번 업데이트를 통해 다음 튜닝 가능 항목을 설정하여 주소 공간의 처음 2GB에 더 가깝게 함께 오브젝트를 배치할 수 있습니다.
export GLIBC_TUNABLES=glibc.cpu.prefer_map_32bit_exec=1
이 튜닝 가능 항목을 설정하면 ASLR(Address Space layout randomization)이 감소하는 대신 일부 애플리케이션의 성능이 향상될 수 있습니다.
Jira:RHEL-20172[1]
glibc
는 Intel APX 지원 함수의 동적 연결 지원
호환되지 않는 동적 링커 trampoline은 Intel APX(Advanced Performance Extensions) 애플리케이션의 비호환성 잠재적 소스로 확인되었습니다. 이 문제를 해결하려면 BIND_NOW
실행 파일을 사용하거나 표준 호출 규칙만 사용할 수 있었습니다. 이번 업데이트를 통해 glibc
의 동적 링커는 APX 관련 레지스터를 유지합니다.
이러한 변경으로 인해 스택 상단 이외의 추가 공간이 필요합니다. 이 공간을 엄격하게 제한하는 사용자는 스택 제한을 조정하거나 평가해야 할 수 있습니다.
Jira:RHEL-25046[1]
glibc
에서 AMD Cryostat 3 및 4 성능 최적화
이전에는 AMD Cryostat 3 및 4 프로세서가 가장 최적의 선택과 관계없이 memcpy
및 memmove
라이브러리 루틴의 Enhanced Repeat Move String (ERMS) 버전을 사용하는 경우가 있었습니다. 이 업데이트에서 glibc
, AMD Cryostat 3 및 Cryostat 4 프로세서는 가장 최적의 버전의 memcpy
및 memmove
를 사용합니다.
Jira:RHEL-25531[1]
GCC Toolset에서 제거된 버전 14.2 및 GDB에 대한 GDB의 시스템 버전
GDB가 14.2 버전으로 업데이트되었습니다. RHEL 9.5부터 GDB는 RHEL의 마이너 릴리스에서 시스템 버전을 기반으로 하는 롤링 애플리케이션 스트림으로 전환되고 있습니다. 따라서 GDB는 RHEL 9의 GCC Toolset 14에 포함되지 않습니다.
다음 단락에서는 GDB 12.1 이후 GDB 14.2에서 주요 변경 사항을 나열합니다.
일반:
-
이제
info Cryo
stats 명령에y-
state와 같이 비활성화된 Cryostat의 활성화된 Cryostat 위치가 표시됩니다. -
ELF(
ELFCOMPRESS_ZSTD
)로 압축된 디버그 섹션에 대한 지원이 추가되었습니다. -
텍스트 사용자 인터페이스(TUI)는 기본적으로 현재 위치 표시기에 의해 강조 표시된 소스 및 어셈블리 코드를 더 이상 스타일링하지 않습니다. styling을 다시 활성화하려면 새 명령
set style tui-current-position
를 사용합니다. -
새로운
$_inferior_thread_count
사용 편의성 변수에는 현재 유추의 라이브 스레드 수가 포함됩니다. -
여러 코드 위치가 있는 Cryostat의 경우 GDB는 이제 <
breakpoint_number>.<location_number
> 구문을 사용하여 코드 위치를 출력합니다. -
Cryostat가 적을 때 GDB는
$_hit_bpnum
및$_hit_locno
편의성 변수를 적중 Cryostat 번호 및 코드 위치 번호로 설정합니다. 이제 disable $_hit_bpnum 명령을 사용하여 마지막 hit Cryostat를 비활성화하거나disable $_hit_
할 수 있습니다.bpnum
.$_hit_locno 명령을 사용하여 특정 Cryostat 코드 위치만 비활성화 -
NO_COLOR
환경 변수에 대한 지원이 추가되었습니다. - 64비트보다 큰 정수 유형에 대한 지원이 추가되었습니다.
-
다중 대상 기능 구성에 새 명령을 사용하여 원격 대상 기능 세트를 구성할 수 있습니다(명령에 원격 <
name>-packet 설정
참조 및표시 원격 <name>-packet
표시). - Debugger Adapter Protocol에 대한 지원이 추가되었습니다.
-
이제 new
inferior
키워드를 사용하여 Cryostat를 유추할 수 있습니다(명령의중단
또는감시
참조). -
이제 새로운
$_shell()
편의성 함수를 사용하여 표현식 평가 중에 쉘 명령을 실행할 수 있습니다.
기존 명령 변경:
중단
,감시
-
break
및watch
명령에스레드
또는작업
키워드를 여러 번 사용하면 키워드의 마지막 인스턴스의 스레드 또는 작업 ID를 사용하는 대신 오류가 발생합니다. -
동일한
break
또는watch
명령에스레드
,작업
및
유추 키워드 중 하나를 사용하는 것이 이제 유효하지 않습니다.
-
Cryostat
,d Cryostat
-
이제
Cryo
stat및 d
Cryostat 명령은 출력 명령과 동일한 방식으로 표현식을 포맷하는%V
출력 형식을 허용합니다.명령 다음에 대괄호
[…]
에서 추가 출력 옵션을 사용하여 출력 형식을 수정할 수도 있습니다(예:"%V[-array-indexes on]", <array>
).
-
이제
list
-
이제
.
인수를 사용하여 현재 프레임에서 실행 지점 주위에 위치를 인쇄하거나 유추가 아직 시작되지 않은 경우main()
함수의 시작 부분에 있는 위치를 출력할 수 있습니다. -
파일에 있는 것보다 더 많은 소스 행을 나열하려고 하면 이제 사용자를
.
인수를 참조하는 경고가 발행됩니다.
-
이제
사용자 정의 문서
- 이제 사용자 정의 별칭을 문서화할 수 있습니다.
새 명령:
-
print nibbles [on|off](기본값:
off
)를 설정하고출력 니블
을 표시 -print/t
명령이 4비트(nibbles) 그룹에 바이너리 값을 표시할지 여부를 제어합니다. -
debug infcall [on|off] (default:
off
)를 설정하고debug infcall을 표시
- 유추 함수 호출에 대한 추가 디버그 메시지를 출력합니다. -
debug solib [on|off](기본값:
off
)를 설정하고debug solib를 표시
- 공유 라이브러리 처리에 대한 추가 디버그 메시지를 출력합니다. -
출력 문자 <LIMIT>를 설정하고
출력 문자
,출력 - 문자 <LIMIT
> - 문자열 인쇄 수를 제어합니다. -
debug Cryostat [on|off](기본값:
off
)를 설정하고디버그 Cryostat를 표시
- 번호 삽입 및 제거에 대한 추가 디버그 메시지를 출력합니다. -
Maintenance print record-instruction [N ]
- 지정된 명령에 대해 기록된 정보를 출력합니다. -
Maintenance info frame-unwinders
- 현재 우선 순위 순서로 적용되는 프레임 unwinders를 나열합니다(가장 높은 우선 순위). -
유지 관리 wait-for-index-cache
- 인덱스 캐시에 대한 모든 보류 중인 쓰기가 완료될 때까지 기다립니다. -
info main
- 프로그램에 대한 진입점을 식별하기 위해 기본 기호에 대한 정보를 출력합니다. -
tui 마우스 이벤트 [
on
|off
](기본값: )를 설정하고tui 마우스 이벤트 표시
- 마우스 클릭 이벤트가 TUI 및 Python 확장(사용 시) 또는 터미널(사용 시)으로 전송되는지 여부를 제어합니다.
MIT(Machine Interface) 변경:
- 버전 1이 삭제되었습니다.
-
이제 Multus는 역방향 실행 기록이 소진될 때
no-history
를 보고합니다. -
thread
및task
Cryostat 필드는-break-insert
명령의 출력에서 더 이상 두 번 보고되지 않습니다. - 스레드별 Cryostat는 존재하지 않는 스레드 ID에서 더 이상 만들 수 없습니다.
-
-stack-list-arguments
,-stack-list-locals
,-stack-list-variables
,-var-list- children
명령에 대한--simple-values
인수는 이제 대상이 간단한 경우 참조 유형을 간단한 것으로 간주합니다. -
이제
-break-insert
명령에서 새-g thread-group-id
옵션을 허용하여 유추별 Cryostat를 만들 수 있습니다. -
build-created 알림 및
-break-insert
명령의 출력은 이제 기본 Cryostat 및 각 Cryostat 위치에 대한 선택적 유추 필드를 포함할 수 있습니다. -
이제 Cryostat
-hit
중지 이유를 나타내는 동기화 레코드에는 다중 위치 Cryostat의 경우 코드 위치 번호를 제공하는 선택적 필드locno
가 포함됩니다.
GDB Python API의 변경 사항:
이벤트
-
새로운
gdb.ThreadExitedEvent
이벤트 -
progspace
및reload
속성이 있는ExecutableChangedEvent
오브젝트를 내보내는 새로운gdb.executable_changed
이벤트 레지스트리입니다. -
NewProgpspaceEvent
및FreeProgspaceEvent
이벤트 유형을 내보내는 새로운gdb.events.new_progspace
및gdb.events.free_progspace
이벤트 레지스트리입니다. 이러한 두 이벤트 유형에는 GDB에 추가되거나 제거되는gdb.Progspace
프로그램 공간을 지정하는 단일 속성progspace
가 있습니다.
-
새로운
gdb.unwinder.Unwinder
클래스-
이제
name
속성이 읽기 전용입니다. -
__init__
함수의 name 인수는str
유형이어야 합니다. 그렇지 않으면TypeError
가 발생합니다. -
enabled
속성은 이제bool
유형만 허용합니다.
-
이제
gdb.PendingFrame
클래스-
새로운 방법:
name
,is_valid
,pc
,language
,find_sal
,block
, andfunction
, which mirror similar methods of thegdb.Frame
class. -
create_unwind_info
함수의frame-id
인수는 이제pc
,sp
및특수
특성에 대한 정수 또는gdb.Value
개체가 될 수 있습니다.
-
새로운 방법:
-
gdb.PendingFrame.create_unwind_info
함수에 전달할 수 있는 새로운gdb.unwinder.FrameId
클래스입니다. -
gdb.disassembler.DisassemblerResult
클래스는 더 이상 하위 클래스로 분류할 수 없습니다. -
gdb.disassembler
모듈에는 이제 스타일링 지원이 포함됩니다. -
GDB/MI 명령을 호출하고 Python 사전으로 결과를 반환하는 새로운
gdb.execute_mi(COMMAND, [ARG]…)
함수입니다. -
GDB가 처리해야 하는 모든 신호를 차단하는 컨텍스트 관리자를 반환하는 새로운
gdb.block_signals()
함수입니다. -
start
메서드에서gdb.block_signals
함수를 호출하는 새로운gdb.
클래스입니다.Thread
클래스의 thread -
gdb.parse_and_eval
함수에는 글로벌 기호에 대한 구문 분석을 제한하는 새로운global_context
매개변수가 있습니다. gdb.Inferior
클래스-
알려진 경우 inferior에 대한 명령줄 인수를 보유하는 새 인수 특성입니다.
-
알려진 경우 inferior의 기본 함수의 이름을 보유하는 새로운
main
_name -
시작하기 전에 inferior의 환경을 수정할 수 있는 새로운
clear_env
,set_env
및unset_env
메서드입니다.
-
알려진 경우 inferior에 대한 명령줄 인수를 보유하는 새 인수 특성입니다.
gdb.Value
클래스-
개체 값을
할당
하는 새 할당 방법입니다. -
배열과 같은 값을 배열로 변환하는 새로운
to_array
메서드입니다.
-
개체 값을
gdb.Progspace
클래스-
지정된 주소를 포함하는
gdb.Objfile
오브젝트를 반환하는 새로운objfile_for_address
메서드(있는 경우) -
Progspace.filename
변수에 해당하는gdb.Objfile
오브젝트를 보유하는 새로운symbol_file
속성(또는 파일 이름이None
인 경우None
). -
새로운
executable_filename
속성:exec-file
또는file
명령으로 설정된 파일 이름으로 문자열을 보유하거나 실행 파일이 설정되지 않은 경우None
입니다.
-
지정된 주소를 포함하는
gdb.Breakpoint
클래스-
유추할 수 있는 특정 속성 또는
None
이 설정되어 있지 않은 경우 None에 대한inferior
ID(정수)를 포함하는 새로운 inferior 특성입니다.
-
유추할 수 있는 특정 속성 또는
gdb.Type
클래스-
새
is_array_like
및is_string_like
메서드는 형식의 실제 유형 코드에 관계없이 형식이 배열 또는 문자열일 수 있는지 여부를 나타냅니다.
-
새
-
예기치 않은 적용 결과에 대한 기본 클래스로 사용할 수 있는 새로운
gdb.Value
Cryostater 클래스입니다. -
새로 구현된
gdb.LazyString.__str__
메서드. gdb.Frame
클래스-
중첩된 함수 프레임의 외부 프레임을 반환하는 새로운
static_link
메서드입니다. -
새로운
gdb.Frame.
Cryostat 메서드는 프레임 언어의 이름을 반환합니다.
-
중첩된 함수 프레임의 외부 프레임을 반환하는 새로운
gdb.Command
클래스-
GDB는 이제
gdb.Command
클래스와gdb.Parameter
하위 클래스의 doc 문자열을 다시 포맷하여 문자열을 도움말 출력으로 사용하기 전에 각 줄에서 불필요한 선행 공백을 제거합니다.
-
GDB는 이제
gdb.Objfile
클래스-
새
is_file
속성.
-
새
-
디스패처에서 주소, 기호 및 오프셋 정보를 출력할 때와 동일한 형식을 사용하는 새로운
gdb.format_address(ADDRESS, PROGSPACE, ARCHITECTURE)
기능. -
현재 언어의 이름을 반환하는
gdb.current_ language
함수입니다. -
gdb.disassembler.register_disassembler (DISASSEMBLER, ARCH)
, gdb.disassembler.Disassembler ,gdb.disassembler.Disassembler
.Disassembler ,gdb.disassembler.DisassembleInfo
를 포함한 새로운 Python APIGDB.disassembler.builtin_disassemble(INFO, MEMORY_SOURCE)
및gdb.disassembler.DisassemblerResult
. -
gdb.Value.format_string
함수에서 허용하는 형태로 사전을 반환하는 새로운gdb.print_options
함수입니다. gdb.Value.format_string
함수-
GDB.Value.format_string
은인쇄
또는 기타 유사한 작업 중에 호출되는 경우print
명령에서 제공하는 형식을 사용합니다. -
GDB.Value.format_string
은 이제summary
키워드를 허용합니다.
-
-
새로운
gdb.BreakpointLocation
Python 유형. -
gdb.register_window_type
메서드는 허용 가능한 창 이름 집합을 제한합니다.
아키텍처별 변경 사항:
AMD 및 Intel 64비트 아키텍처
-
현재 기본적으로 사용되는
libopcodes
라이브러리를 사용하여 디스어셈블러 스타일링 지원이 추가되었습니다.set style deassembler *
명령을 사용하여 disassembler 출력이 스타일링되는 방식을 수정할 수 있습니다. 대신 Python Pygments 스타일링을 사용하려면 새유지 관리 세트 libopcodes-styling off
명령을 사용합니다.
-
현재 기본적으로 사용되는
64비트 ARM 아키텍처
- Memory Tagging Extension(MTE)에 대한 메모리 태그 데이터 덤프 지원이 추가되었습니다.
- Scalable Matrix Extension 1 및 2 (SME/SME2)에 대한 지원이 추가되었습니다. 일부 기능은 여전히 실험적 또는 알파로 간주됩니다. 예를 들어 ZA 상태의 수동 기능 호출 또는 DWARF를 기반으로 확장 가능한 벡터 그래픽(SVG) 변경 사항을 추적합니다.
- 스레드 로컬 스토리지(TLS) 변수에 대한 지원이 추가되었습니다.
- 하드웨어 감시에 대한 지원이 추가되었습니다.
64비트 IBM Z 아키텍처
-
특수 기능-assist 명령
NNPA
를 제외하고 IBM Z 대상에서 새로운arch14
명령을 기록하고 재생합니다.
-
특수 기능-assist 명령
IBM Power Systems, Little Endian
- POWER11에 대한 기본 활성화 지원이 추가되었습니다.
Application Streams에 대한 자세한 내용은 Red Hat Enterprise Linux Application Streams 라이프 사이클 을 참조하십시오.
Jira:RHEL-36211, Jira:RHEL-39555, Jira:RHEL-10550
elfutils
버전 0.191로 업데이트
elfutils
패키지가 버전 0.191로 업데이트되었습니다. 주요 개선사항은 다음과 같습니다.
libdw
라이브러리의 변경 사항:-
dwarf_addrdie
함수는debug_aranges
섹션이 없는 바이너리를 지원합니다. - DWARF 패키지 파일에 대한 지원이 개선되었습니다.
-
새로운
dwarf_cu_dwp_section_info
기능이 추가되었습니다.
-
-
debuginfod
서버의 캐싱 제거 로직은vdso.debug
와 같은 작고 빈번한 파일 또는 느린 파일의 보존을 개선하도록 향상되었습니다. -
eu-srcfiles
유틸리티는 이제 DWARF/ELF 파일의 소스 파일을 가져와서zip
아카이브에 배치할 수 있습니다.
SystemTap
이 버전 5.1로 업데이트됨
SystemTap
추적 및 검사 툴이 버전 5.1로 업데이트되었습니다. 주요 변경 사항은 다음과 같습니다.
-
스크립트 컴파일 중 권한을 줄이기 위한 실험적인
--build-as=USER
플래그입니다. - 호스트 PID로 식별된 컨테이너에서 실행되는 프로세스 검사에 대한 지원이 개선되었습니다.
- 사용자 공간 하드웨어 list 및 watchpoints에 대한 새로운 프로브입니다.
-
runtime=bpf 모드의
작업을 지원합니다.--
remote - 커널 사용자 전송의 강력한 기능 개선.
Valgrind
버전 3.23.0으로 업데이트
Valgrind
제품군이 3.23.0 버전으로 업데이트되었습니다. 주요 개선 사항은 다음과 같습니다.
-
--track-fds=yes
옵션은 파일 설명자를 두 번 닫는 것에 대해 경고하고, 억제 가능한 오류를 생성하고 XML 출력을 지원합니다. -
--show-error-list=no|yes
옵션은 이제 비활성화된 오류도 출력할 수 있는 새 값인all
을 허용합니다. -
64비트 IBM Z 아키텍처에서
Valgrind
는 이제 Neural network processing assist (NNPA) 기능 벡터 명령: CryostatNF , CryostatLFNH
, VCFNL
, VCRNF , VCRNF ,VCRNF
,NNPA
(z16/arch14)를 지원합니다. -
64비트 ARM 아키텍처에서
Valgrind
는 이제dotprod
명령(sdot/udot
)을 지원합니다. -
AMD 및 Intel 64비트 아키텍처에서
Valgrind
는 이제 x86_64-v3 마이크로 아키텍처에 대한 보다 정확한 명령 지원을 제공합니다. -
Valgrind
는 이제 메모리 중복을 감지할 수 있는wcpncpy
,memccpy
,strlcat
및strlcpy
함수에 대한 래퍼를 제공합니다. -
Valgrind
는 이제mlock2
,fchmodat2
및pidfd_getfd
라는 Linux syscall을 지원합니다.
Jira:RHEL-29534, Jira:RHEL-10551
libabigail
rebased to 버전 2.5
libabigail
라이브러리가 버전 2.5로 업데이트되었습니다. 주요 변경 사항은 다음과 같습니다.
- 유연한 배열 데이터 멤버의 엄격한 변환을 위해 억제 사양이 개선되었습니다.
- C++ 바이너리에 pointer-to-member 유형에 대한 지원이 추가되었습니다.
-
abicompat
도구의약한
모드 개선 -
운영 체제의 ABI를 관리하는 새로운
abidb
툴입니다. - 다양한 버그 수정
Jira:RHEL-30013, Jira:RHEL-7325, Jira:RHEL-7332
새로운 GCC Toolset 14
GCC Toolset 14는 최신 버전의 개발 도구를 제공하는 컴파일러 툴셋입니다. AppStream 리포지토리에서 소프트웨어 컬렉션 형식으로 Application Stream으로 사용할 수 있습니다.
다음 툴 및 버전은 GCC Toolset 14에서 제공합니다.
- GCC 14.2
-
binutils
2.41 -
annobin
12.70 -
dwz
0.14
GDB의 시스템 버전은 재기반되었으며 GDB는 더 이상 GCC Toolset에 포함되지 않습니다.
GCC Toolset 14를 설치하려면 root로 다음 명령을 입력합니다.
# dnf install gcc-toolset-14
GCC Toolset 14에서 툴을 실행하려면 다음을 수행합니다.
$ scl enable gcc-toolset-14 <tool>
GCC Toolset 14의 툴 버전이 다음 툴의 시스템 버전을 재정의하는 쉘 세션을 실행하려면 다음을 수행합니다.
$ scl enable gcc-toolset-14 bash
GCC Toolset 14 구성 요소는 gcc-toolset-14-toolchain
컨테이너 이미지에서도 사용할 수 있습니다.
자세한 내용은 GCC Toolset 14 및 GCC Toolset 사용을 참조하십시오.
Jira:RHEL-29758[1], Jira:RHEL-29852
GCC Toolset 14: GCC 버전 14.2에 기반
GCC Toolset 14에서는 GNU 컴파일러 컬렉션(GCC)이 버전 14.2로 업데이트되었습니다.
주요 변경 사항은 다음과 같습니다.
- 최적화 및 진단 개선
-
강화 플래그 세트를 가능하게 하는 새로운
-fhardened
표준 옵션 -
새로운
-fharden-control-flow-redundancy
옵션을 사용하여 제어를 기능 중으로 전송하는 공격을 탐지합니다. -
함수 및 변수의 속성을 스택 스크럽을 제어하는 새로운
strub
유형 속성 -
특정
mem*
기능의 인라인 확장을 강제 적용하는 새로운-finline-stringops
옵션 - 새로운 OpenMP 5.1, 5.2 및 6.0 기능 지원
- 몇 가지 새로운 C23 기능
- 여러 가지 새로운 C++23 및 C++26 기능
- 몇 가지 해결된 C++ 결함 보고서
- C++ 라이브러리의 C++20, C++23 및 C++26에 대한 새롭고 개선된 실험 지원
- 64비트 ARM 아키텍처의 새 CPU 지원
- 64비트 Intel 아키텍처의 여러 새로운 명령 세트 아키텍처(ISA) 확장(예: AVX10.1, AVX-VNNI-INT16, SHA512, SM4)
- GCC의 정적 분석기에서 새로운 경고
- 특정 경고가 오류로 변경되었습니다. 자세한 내용은 GCC 14 포트로 포트를참조하십시오.
- 다양한 버그 수정
GCC 14의 변경 사항에 대한 자세한 내용은 업스트림 GCC 릴리스 노트 를 참조하십시오.
Jira:RHEL-29853[1]
GCC Toolset 14: annobin
재기반 버전 12.70
GCC Toolset 14에서 annobin
이 12.70 버전으로 업데이트되었습니다. 바이너리 테스트를 위한 업데이트된 annobin
툴 세트는 다양한 버그 수정을 제공하고, 새로운 테스트를 도입하며 최신 버전의 GCC, Clang, LLVM 및 Go 컴파일러와 함께 빌드 및 작업하기 위한 툴을 업데이트합니다. 향상된 도구를 사용하면 비표준 방식으로 구축된 프로그램에서 새로운 문제를 감지할 수 있습니다.
Jira:RHEL-29850[1]
GCC Toolset 14: binutils
버전 2.41로 재기반
RHEL 9.5는 GCC Toolset 14 binutils
버전 2.41과 함께 배포됩니다. 새로운 기능은 다음과 같습니다.
-
binutils
툴은 64비트 Intel 및 ARM 아키텍처의 아키텍처 확장을 지원합니다. -
링커에서
--remap-inputs <PATTERN>=<FILE
> 명령줄 옵션을 사용하여 <PATTERN
>과 일치하는 입력 파일을 <FILE
>로 바꿉니다. 또한--remap-inputs-file=<FILE
> 옵션을 사용하여 이러한 재지정 지시문이 포함된 파일을 지정할 수 있습니다. -
ELF 대상의 경우 링커 명령줄 옵션
--print-map-locals
를 사용하여 링커 맵에 로컬 기호를 포함할 수 있습니다. -
대부분의 ELF 기반 대상의 경우
--enable-linker-version
옵션을 사용하여 링커 버전을.comment
섹션에 문자열로 삽입할 수 있습니다. -
링커 스크립트 구문에는 출력 섹션인
ASCIZ "<string>"
에 대한 새 명령이 있으며 현재 위치에 0으로 종료되는 문자열을 삽입합니다. -
새로운
-z nosectionheader
linker 명령줄 옵션을 사용하여 ELF 섹션 헤더를 생략할 수 있습니다.
Jira:RHEL-29851[1]
GCC Toolset 13: GCC는 AMD 5를 지원합니다.
GCC 도구 세트 13 버전의 GCC는 AMD 5 프로세서 마이크로 아키텍처에 대한 지원을 추가합니다. 지원을 활성화하려면 -march=znver5
명령줄 옵션을 사용합니다.
Jira:RHEL-36523[1]
LLVM Toolset이 18.1.8로 업데이트되었습니다.
LLVM Toolset이 버전 18.1.8로 업데이트되었습니다.
주요 LLVM 업데이트:
-
다음 명령의 상수 변형이 제거되었습니다.
및
,또는
,lshr
,zext
,섹시 ,
, fptoui ,fptrunc
,fpext
fptoui
,uitofp
,sitofp
. -
llvm.exp10
내장이 추가되었습니다. -
전역 변수의
code_model
속성이 추가되었습니다. - AArch64, AMDGPU, PowerPC, RISC-V, SystemZ 및 x86 아키텍처의 백엔드가 향상되었습니다.
- LLVM 툴이 개선되었습니다.
주요 Clang 개선 사항:
C++20 기능 지원:
-
Clang은 글로벌 모듈 조각에서 더 이상 하나의 정의 규칙(ODR) 검사를 수행하지 않습니다. 보다 엄격한 동작을 활성화하려면
-Xclang -fno-skip-odr-check-in-gmf
옵션을 사용합니다.
-
Clang은 글로벌 모듈 조각에서 더 이상 하나의 정의 규칙(ODR) 검사를 수행하지 않습니다. 보다 엄격한 동작을 활성화하려면
C++23 기능 지원:
-
람다에서 특성 사용을 경고하기 위해 새로운 진단 플래그
-Wc++23-lambda-attributes
가 추가되었습니다.
-
람다에서 특성 사용을 경고하기 위해 새로운 진단 플래그
C++2c 기능 지원:
-
Clang에서는 이제 동일한 범위에서
_
문자를 자리 표시자 변수 이름으로 여러 번 사용할 수 있습니다. - 이제 특성에서 문자열 리터럴인 속성 매개변수에서 평가되지 않은 문자열이 예상됩니다.
- C++26의 열거에서 더 이상 사용되지 않는 연산 변환이 제거되었습니다.
- 템플릿 매개변수 초기화 사양이 개선되었습니다.
-
Clang에서는 이제 동일한 범위에서
- 전체 변경 사항 목록은 Clang의 업스트림 릴리스 노트를 참조하십시오.
Clang의 ABI 변경:
-
x86_64용 SystemV ABI 뒤에
__int128
인수가 더 이상 레지스터와 스택 슬롯 간에 분할되지 않습니다. - 자세한 내용은 Clang의 ABI 변경 목록을 참조하십시오.
주요 이전 버전과 호환되지 않는 변경 사항:
- 템플릿된 연산자에 대한 역방향 인수 순서의 버그 수정으로 C++20의 코드가 손상되고 이전에 C++17에서 허용되었습니다.
-
GCC_INSTALL_PREFIX
CMake 변수(기본--gcc-toolchain=
)는 더 이상 사용되지 않으며 제거됩니다. 대신 구성 파일에--gcc-install-dir=
또는--gcc-triple=
옵션을 지정합니다. -
미리 컴파일된 헤더(PCH) 생성(
-c -xc-header
및-c -xc++-header
)의 기본 확장 이름은 이제.gch
대신.pch
입니다. -
-include a.h
.gch 파일을 프로브하는 경우 include는 이제 Clang PCH 파일이거나 Clang PCH 파일이 포함된 디렉터리인 경우a
를 무시합니다..h.gch
-
__has_cpp_attribute
및__has_c_attribute
로 인해 특정 C++-11 스타일 속성에 대한 잘못된 값을 반환하는 버그가 수정되었습니다. -
역방향
operator==
를 추가하는 동안 일치하는operator!=
를 찾는 버그가 수정되었습니다. - 함수 템플릿에 대한 이름 관리 규칙이 변경되어 해당 템플릿 매개변수 목록에서 함수를 과부하하거나 필요할 수 있습니다.
-
이제 시스템 헤더 및 매크로에서
-Wenum-constexpr-conversion
경고가 기본적으로 활성화됩니다. 다음 Clang 릴리스에서 하드(다운할 수 없음) 오류로 전환됩니다. - 모듈 이름이 지정된 C++20에 대해 가져온 모듈의 경로는 더 이상 하드 코딩할 수 없습니다. 명령줄에서 모든 종속 모듈을 지정해야 합니다.
-
import <module> 을 사용하여
모듈을 가져올
수 없습니다. Clang에서는 명시적으로 빌드된 모듈을 사용합니다. - 자세한 내용은 변경 사항이 손상될 가능성이 있는 목록을 참조하십시오.
자세한 내용은 LLVM 릴리스 노트 및 Clang 릴리스 노트를 참조하십시오.
LVM Toolset은 롤링 애플리케이션 스트림이며 최신 버전만 지원됩니다. 자세한 내용은 Red Hat Enterprise Linux Application Streams 라이프 사이클 문서를 참조하십시오.
rust Toolset을 버전 1.79.0으로 다시 기반
rust Toolset이 1.79.0 버전으로 업데이트되었습니다. 이전에 사용 가능한 버전 1.75.0 이후 주요 개선 사항은 다음과 같습니다.
-
새로운
offset_of!
매크로 - C 문자열 리터럴 지원
-
인라인
const
표현식 지원 - 연결된 유형 위치에서 경계 지원
- 자동 수명 연장 개선
-
안전하지 않은
사전 조건의 디버그 어설션
rust Toolset은 롤링 애플리케이션 스트림이며 최신 버전만 지원됩니다. 자세한 내용은 Red Hat Enterprise Linux Application Streams 라이프 사이클 문서를 참조하십시오.
버전 1.22에 따라 도구 세트 세트 업데이트
Go Toolset이 1.22 버전으로 업데이트되었습니다.
주요 개선 사항은 다음과 같습니다.
- for 루프의 변수가 반복별로 생성되어 실수로 버그를 공유하지 않습니다. 또한 for 루프는 이제 정수를 초과할 수 있습니다.
- 작업 공간의 명령은 이제 작업 공간의 종속 항목에 대해 벤더 디렉터리를 사용할 수 있습니다.
-
go get
명령은 더 이상 레거시GOPATH
모드를 지원하지 않습니다. 이 변경 사항은go build
및go test
명령에는 영향을 미치지 않습니다. -
vet
툴이 for 반복문의 새 동작과 일치하도록 업데이트되었습니다. - 각 힙 오브젝트에 유형 기반 가비지 컬렉션 메타데이터를 유지하여 CPU 성능이 향상되었습니다.
- 이제 확대를 통해 성능 향상을 위한 최적화와 개선된 프로필 가이드 최적화 지원이 제공됩니다.
-
새로운
math/rand/v2
패키지를 사용할 수 있습니다. - 이제 Go는 메서드 및 와일드카드를 지원하는 향상된 HTTP 라우팅 패턴을 제공합니다.
자세한 내용은 Go 업스트림 릴리스 노트를 참조하십시오.
Go Toolset은 롤링 애플리케이션 스트림이며 최신 버전만 지원됩니다. 자세한 내용은 Red Hat Enterprise Linux Application Streams 라이프 사이클 문서를 참조하십시오.
Jira:RHEL-29527[1]
PCP 버전 6.2.2로 업데이트
Performance Co- Cryostat (PCP)가 버전 6.2.2로 업데이트되었습니다. 이전에 사용 가능한 버전 6.2.0에 대한 주요 변경 사항은 다음과 같습니다.
새로운 도구 및 에이전트
-
pcp2openmetrics
: Open Metrics 형식의 PCP 메트릭을 원격 엔드포인트로 푸시하는 새로운 도구 -
PCP-geolocate
: 위도 및 경도 메트릭 라벨을 보고하는 새로운 도구 -
pmcheck
: PCP 구성 요소를 interrogate 및 제어하는 새로운 도구 -
pmdauwsgi
: uWSGI 서버에서 계측을 내보내는 새로운 PCP 에이전트
향상된 툴
-
pmdalinux
: 새로운 커널 메트릭 (hugepages, filesystems, TCP, softnet, virtual machine balloon) 추가 -
pmdalibvirt
: 메트릭 라벨 지원 추가, 새로운 balloon, vCPU, 도메인 정보 메트릭 추가 -
pmdabpf
:pcp-atop
유틸리티와 함께 사용할 수 있는 eBPF 네트워킹 메트릭 개선
Grafana
버전 10.2.6에 다시 기반
Grafana
플랫폼이 버전 10.2.6으로 업데이트되었습니다.
주요 개선 사항은 다음과 같습니다.
- 클릭 및 드래그하는 동안 전환을 유지하여 시계열 및 샌드스틱 시각화의 y축을 확대할 수 있습니다.
- 대시보드를 만들 때 간소화된 데이터 소스 선택.
- 탐색에 대한 업데이트 및 명령 팔레트 등 업데이트된 사용자 인터페이스.
-
계산 변환에서 추가 필드에
대한 새로운 단항 작업 모드를 포함하여 다양한 변환 기능이 개선되었습니다. - 재설계된 빈 대시보드 및 대시보드 패널을 포함하여 대시보드 및 데이터 시각화에 대한 다양한 개선 사항.
- 새로운 geomap 및 canvas 패널입니다.
기타 변경 사항:
- 사용자, 액세스, 인증, 권한 부여 및 보안에 대한 다양한 개선 사항.
- 새로운 경고 기능과 함께 경고 개선 사항.
- 이제 공용 대시보드를 사용할 수 있습니다.
이전에 사용 가능한 Grafana
버전 9.2 이후의 전체 변경 목록은 업스트림 문서를 참조하십시오.
Jira:RHEL-31246[1]
Red Hat build of OpenJDK 17은 RHEL 9의 기본 Java 구현입니다.
기본 RHEL 9 Java 구현은 OpenJDK 11에서 EOL(End of Life)에 도달한 OpenJDK 17로 변경됩니다. 이번 업데이트 후 OpenJDK 17 Java Runtime Environment 및 OpenJDK 17 Java Software Development Kit를 제공하는 java-17-openjdk
패키지도 java
및 java-devel
패키지를 제공합니다. 자세한 내용은 OpenJDK 설명서 를 참조하십시오.
RHEL 9의 기존 패키지는 java/bin
또는 java-openjdk/bin
을 직접 호출하는 기존 패키지는 OpenJDK 17을 즉시 사용할 수 있습니다.
RHEL 9의 기존 패키지는 java
또는 java-devel
패키지가 직접 필요한 기존 패키지 즉 tomcat
및 systemtap-runtime-java
에서는 적절한 종속성을 자동으로 가져옵니다.
javapackages-tools
패키지를 통해 Java를 간접적으로 사용하는 ant, Maven 및 패키지는 RHEL 9.5의 정식 출시 직후 비동기 업데이트로 완전히 전환됩니다.
OpenJDK를 처음 설치해야 하거나 종속성 체인을 통해 기본 패키지가 설치되지 않은 경우 DNF를 사용합니다.
# dnf install java-17-openjdk-devel
자세한 내용은 yum을 사용하여 RHEL에서 OpenJDK의 Red Hat 빌드의 여러 마이너 버전 설치를 참조하십시오.
RHEL 9의 현재 java-11-openjdk
패키지는 추가 업데이트가 제공되지 않습니다. 그러나 Red Hat은 ELS(Extended Life Cycle Support) 단계와 함께 2027년 10월 31일까지 OpenJDK 11의 Red Hat 빌드 업데이트를 제공합니다. 자세한 내용은 Red Hat build of OpenJDK 11 ELS-1 (Extended Lifecycle Support) Availability 를 참조하십시오.
OpenJDK ELS 프로그램 및 OpenJDK 라이프사이클에 대한 자세한 내용은 OpenJDK 라이프 사이클 및 지원 정책을 참조하십시오.
java
및 관련 구성 요소에 대한 alternatives
명령이 수동
모드로 설정된 경우 업데이트 후에도 OpenJDK 11이 계속 사용됩니다. 이 경우 OpenJDK 17을 사용하려면 alternatives
설정을 auto
로 변경합니다. 예를 들면 다음과 같습니다.
# alternatives --auto java # alternatives --auto javac
alternatives --list
명령을 사용하여 설정을 확인합니다.
Jira:RHEL-56094[1]