4.12. 컴파일러 및 개발 도구


시스템 GCC 버전 11.5로 업데이트

RHEL 9의 GCC 시스템 버전이 버전 11.5로 업데이트되었습니다. 이 업데이트는 다양한 버그 수정을 제공합니다.

Jira:RHEL-35635

동적 오브젝트를 더 가깝게 배치하여 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 프로세서가 가장 최적의 선택과 관계없이 memcpymemmove 라이브러리 루틴의 Enhanced Repeat Move String (ERMS) 버전을 사용하는 경우가 있었습니다. 이 업데이트에서 glibc, AMD Cryostat 3 및 Cryostat 4 프로세서는 가장 최적의 버전의 memcpymemmove 를 사용합니다.

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() 편의성 함수를 사용하여 표현식 평가 중에 쉘 명령을 실행할 수 있습니다.

기존 명령 변경:

  • 중단,감시

    • breakwatch 명령에 스레드 또는 작업 키워드를 여러 번 사용하면 키워드의 마지막 인스턴스의 스레드 또는 작업 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 를 보고합니다.
  • threadtask 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 이벤트
    • progspacereload 속성이 있는 ExecutableChangedEvent 오브젝트를 내보내는 새로운 gdb.executable_changed 이벤트 레지스트리입니다.
    • NewProgpspaceEventFreeProgspaceEvent 이벤트 유형을 내보내는 새로운 gdb.events.new_progspacegdb.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, and function, which mirror similar methods of the gdb.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_envunset_env 메서드입니다.
  • 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_likeis_string_like 메서드는 형식의 실제 유형 코드에 관계없이 형식이 배열 또는 문자열일 수 있는지 여부를 나타냅니다.
  • 예기치 않은 적용 결과에 대한 기본 클래스로 사용할 수 있는 새로운 gdb.Value Cryostater 클래스입니다.
  • 새로 구현된 gdb.LazyString.__str__ 메서드.
  • gdb.Frame 클래스

    • 중첩된 함수 프레임의 외부 프레임을 반환하는 새로운 static_link 메서드입니다.
    • 새로운 gdb.Frame. Cryostat 메서드는 프레임 언어의 이름을 반환합니다.
  • gdb.Command 클래스

    • GDB는 이제 gdb.Command 클래스와 gdb.Parameter 하위 클래스의 doc 문자열을 다시 포맷하여 문자열을 도움말 출력으로 사용하기 전에 각 줄에서 불필요한 선행 공백을 제거합니다.
  • 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 API GDB.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 명령을 기록하고 재생합니다.
  • IBM Power Systems, Little Endian

    • POWER11에 대한 기본 활성화 지원이 추가되었습니다.

Application Streams에 대한 자세한 내용은 Red Hat Enterprise Linux Application Streams 라이프 사이클 을 참조하십시오.

Jira:RHEL-36211, Jira:RHEL-10550, Jira:RHEL-39555

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 아카이브에 배치할 수 있습니다.

Jira:RHEL-29194

SystemTap 이 버전 5.1로 업데이트됨

SystemTap 추적 및 검사 툴이 버전 5.1로 업데이트되었습니다. 주요 변경 사항은 다음과 같습니다.

  • 스크립트 컴파일 중 권한을 줄이기 위한 실험적인 --build-as=USER 플래그입니다.
  • 호스트 PID로 식별된 컨테이너에서 실행되는 프로세스 검사에 대한 지원이 개선되었습니다.
  • 사용자 공간 하드웨어 list 및 watchpoints에 대한 새로운 프로브입니다.
  • runtime=bpf 모드의 -- remote 작업을 지원합니다.
  • 커널 사용자 전송의 강력한 기능 개선.

Jira:RHEL-29528

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,strlcatstrlcpy 함수에 대한 래퍼를 제공합니다.
  • Valgrind 는 이제 mlock2,fchmodat2pidfd_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,섹시 ,fptrunc,fpext , fptoui ,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 옵션을 사용합니다.
  • C++23 기능 지원:

    • 람다에서 특성 사용을 경고하기 위해 새로운 진단 플래그 -Wc++23-lambda-attributes 가 추가되었습니다.
  • C++2c 기능 지원:

    • Clang에서는 이제 동일한 범위에서 _ 문자를 자리 표시자 변수 이름으로 여러 번 사용할 수 있습니다.
    • 이제 특성에서 문자열 리터럴인 속성 매개변수에서 평가되지 않은 문자열이 예상됩니다.
    • C++26의 열거에서 더 이상 사용되지 않는 연산 변환이 제거되었습니다.
    • 템플릿 매개변수 초기화 사양이 개선되었습니다.
  • 전체 변경 사항 목록은 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 라이프 사이클 문서를 참조하십시오.

Jira:RHEL-28687

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 라이프 사이클 문서를 참조하십시오.

Jira:RHEL-30070

버전 1.22에 따라 도구 세트 세트 업데이트

Go Toolset이 1.22 버전으로 업데이트되었습니다.

주요 개선 사항은 다음과 같습니다.

  • for 루프의 변수가 반복별로 생성되어 실수로 버그를 공유하지 않습니다. 또한 for 루프는 이제 정수를 초과할 수 있습니다.
  • 작업 공간의 명령은 이제 작업 공간의 종속 항목에 대해 벤더 디렉터리를 사용할 수 있습니다.
  • go get 명령은 더 이상 레거시 GOPATH 모드를 지원하지 않습니다. 이 변경 사항은 go buildgo 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 네트워킹 메트릭 개선

Jira:RHEL-30198

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 패키지도 javajava-devel 패키지를 제공합니다. 자세한 내용은 OpenJDK 설명서 를 참조하십시오.

RHEL 9의 기존 패키지는 java/bin 또는 java-openjdk/bin 을 직접 호출하는 기존 패키지는 OpenJDK 17을 즉시 사용할 수 있습니다.

RHEL 9의 기존 패키지는 java 또는 java-devel 패키지가 직접 필요한 기존 패키지 즉 tomcatsystemtap-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]

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.