4.9. 컴파일러 및 개발 도구
glibc
의 Intel® Xeon® v5 기반 하드웨어에서 문자열 및 메모리 루틴 성능 개선
이전 버전에서는 glibc
에서 문자열 및 메모리 루틴에 사용하는 기본 캐시 양으로 인해 Intel® Xeon® v5 기반 시스템에서 예상되는 성능보다 낮았습니다. 이번 업데이트를 통해 성능을 개선하기 위해 사용할 캐시 양이 조정되었습니다.
GCC에서 레지스터 인수 보존 지원
이번 업데이트를 통해 이제 인수 레지스터 콘텐츠를 스택에 저장하고 적절한 Call Frame Information (CFI)을 생성하여 unwinder가 성능에 부정적인 영향을 미치지 않도록 할 수 있습니다.
Bugzilla:2168205[1]
새로운 GCC 도구 세트 13
GCC Toolset 13은 최신 버전의 개발 도구를 제공하는 컴파일러 툴셋입니다. AppStream 리포지토리에서 소프트웨어 컬렉션 형식으로 Application Stream으로 사용할 수 있습니다.
GCC 컴파일러가 버전 13.1.1으로 업데이트되어 업스트림 GCC에서 사용할 수 있는 많은 버그 수정 및 개선 사항을 제공합니다.
다음 툴 및 버전은 GCC Toolset 13에서 제공합니다.
툴 | 버전 |
---|---|
GCC | 13.1.1 |
GDB | 12.1 |
binutils | 2.40 |
dwz | 0.14 |
annobin | 12.20 |
GCC Toolset 13을 설치하려면 root로 다음 명령을 실행합니다.
# yum install gcc-toolset-13
GCC Toolset 13에서 툴을 실행하려면 다음을 수행합니다.
$ scl enable gcc-toolset-13 tool
GCC Toolset 13의 툴 버전이 다음 툴의 시스템 버전을 재정의하는 쉘 세션을 실행하려면 다음을 수행합니다.
$ scl enable gcc-toolset-13 bash
자세한 내용은https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/developing_c_and_cpp_applications_in_rhel_8/additional-toolsets-for-development_developing-applications#gcc-toolset-13_assembly_additional-toolsets-for-development[GCC Toolset 13] 및 GCC Toolset 사용을 참조하십시오.
Bugzilla:2171898[1], Bugzilla:2171928, Bugzilla:2188490
GCC Toolset 13: GCC 버전 13.1.1에 따라 업데이트됨
GCC Toolset 13에서는 GNU 컴파일러 컬렉션(GCC)이 버전 13.1.1으로 업데이트되었습니다. 주요 변경 사항은 다음과 같습니다.
일반 개선 사항
OpenMP:
- OpenMP 5.0: Fortran은 이제 일부 비방형 루프 중첩을 지원합니다. GCC 11의 C/C++에 대한 지원이 추가되었습니다.
- 많은 OpenMP 5.1 기능이 추가되었습니다.
- OpenMP 5.2 기능에 대한 초기 지원이 추가되었습니다.
-
새로운 디버그 정보 압축 옵션 값인
-gz=zstd
를 사용할 수 있습니다. -
-Ofast
,-ffast-math
th 및-funsafe-math-optimizations
옵션은 공유 옵션을 사용하여 공유 오브젝트를 생성할 때 부동 소수점 환경을 변경하는 시작 코드를 더 이상 추가하지 않습니다. -
GCC는 이제 정적 분석 도구 (Gcc의
-fanalyzer
)의 결과를 캡처하는 데 적합한 JSON 기반 형식인 SARIF (SARIF)를 사용하여 진단을 내보낼 수 있습니다. SARIF를 사용하여 머신에서 읽을 수 있는 형식으로 다른 GCC 경고 및 오류를 캡처할 수도 있습니다. - 링크 타임 최적화가 구현되었습니다.
새로운 언어 및 언어별 개선 사항
C 제품군:
-
새로운
-Wxor-used-as-pow
옵션은 사용자가 지수를 의미할 수 있는 배타적 또는 (^
) 연산자의 사용에 대해 경고합니다. 파일 설명자인
int
인수를 문서화하기 위해 세 가지 새로운 함수 속성이 추가되었습니다.-
attribute((fd_arg(N)))
-
attribute((fd_arg_read(N)))
-
attribute((fd_arg_write(N)))
이러한 속성은
-fanalyzer
에서 파일 설명자의 오용을 감지하는 데도 사용됩니다.-
-
새로운 문 특성,
속성(EXPR));
C++23 이식 가능한 가정에 추가되었습니다. 이 속성은 C 또는 이전 C++에서도 지원됩니다. -
GCC는 이제 해당 배열의 요소에 액세스하기 위해 유연한 배열 멤버로 구조의 후행 배열을 처리할 시기를 제어할 수 있습니다. 기본적으로 집계의 모든 후행 배열은 유연한 배열 멤버로 처리됩니다.By default, all trailing arrays in aggregates are treated as flexible array members. 새로운 명령줄 옵션
-fstrict-flex-arrays
를 사용하여 flexible 배열로 처리할 배열 멤버를 제어합니다.
C:
몇 가지 C23 기능이 구현되었습니다.
-
nullptr
상수를 도입합니다. - 기본 형식을 지정하기 위해 향상된 열거입니다.
- variadic 매개변수 목록의 요구 사항이 완화되었습니다.
-
오브젝트 정의에 대한 유형 유추를 활성화하는
자동
기능이 도입되었습니다. -
개체 정의에 대한
constexpr
지정자가 도입되었습니다. - 복합 리터럴에 대한 스토리지 클래스 지정자가 도입되었습니다.
-
이전에 확장으로 지원되는
typeof
오브젝트 및typeof_unqual
오브젝트를 도입했습니다. -
새로운 키워드 추가:
alignas
,alignof
,bool
,false
,static_assert
,thread_local
,true
. -
[[no return]]
속성을 추가하여 함수가 호출자에게 실행을 반환하지 않도록 지정합니다. - 빈 이니셜라이저에 대한 지원이 추가되었습니다.
-
STDC_VERSION_*_H
헤더 버전 매크로에 대한 지원이 추가되었습니다. -
ATOMIC_VAR_INIT
매크로를 삭제했습니다. -
<
stddef.h&
gt; 헤더에연결할 수 없는
매크로를 추가했습니다. - 제거된 trigraphs입니다.
- 검증되지 않은 함수를 제거합니다.
-
%wN
및%wfN
형식 길이 수정자에 대해-Wformat
옵션을 통해 검사한 Cryostat 및scanf
포멧을 추가했습니다. - 유니코드 Standard Annex(UAX) 31의 식별자 구문 지원이 추가되었습니다.
-
C23에서 채택된 기존 기능은 C23 요구 사항을 따르도록 조정되었으며
-std=c2x -Wpedantic
옵션을 사용하여 진단되지 않습니다.
-
-
새로운
-Wenum-int-mismatch
옵션은 열거된 유형과 정수 유형 간의 불일치에 대해 경고합니다.
C++:
-fexcess-retries 옵션을 통해 과도한 정밀
지원을 구현합니다. 기본적으로-std=c++17
과 같은 엄격한 표준 모드로 활성화됩니다. 여기서 기본값은-fexcess-chrony=standard
입니다.-std=gnu++20
과 같은 GNU 표준 모드에서는 기본값은-fexcess-retries=fast
이며 이는 이전 동작을 복원합니다.-fexcess-retries
옵션은 다음 아키텍처에 영향을 미칩니다.-
x87 계산을 사용하는 Intel 32 및 64비트에서 x87 계산을 사용하는 경우에 따라
Single
및double
표현식이긴 이중
전체 순서로 평가됩니다. -
Single
표현식이double
precision로 평가되는 64비트 IBM Z 시스템입니다. -
std::
또는float
16_tstd::bfloat16_t
유형을 지원하는 여러 아키텍처에서 이러한 유형은 부동 소수점으로 평가됩니다.
-
x87 계산을 사용하는 Intel 32 및 64비트에서 x87 계산을 사용하는 경우에 따라
다음을 포함하여 C++23에 대한 실험적 지원 개선:
- 복합 문 끝에 레이블에 대한 지원이 추가되었습니다.
- 임시에 대한 참조 바인딩을 감지하기 위해 유형 특성을 추가했습니다.
- 휘발성 복합 작동에 대한 지원을 다시 도입했습니다.
-
#warning
지시문에 대한 지원이 추가되었습니다. - 구분된 이스케이프 시퀀스에 대한 지원이 추가되었습니다.
- 이름이 지정된 범용 문자 이스케이프에 대한 지원이 추가되었습니다.
-
char8_t
유형에 대한 호환성 및 이식성 수정 사항이 추가되었습니다. -
정적
operator()
함수 개체가 추가되었습니다. - 단순화된 암시적 이동
- 표현식에서 같음을 다시 작성하는 것은 이제 변경 사항이 적습니다.
- 무제한으로 사용할 수 없는 문자 리터럴과 광범위한 다중 문자 리터럴을 제거합니다.
-
몇 가지
constexpr
기능 제한 사항을 완화했습니다. - 확장된 부동 소수점 유형 및 표준 이름입니다.
- 이식 가능한 가정을 구현합니다.
- UTF-8에 대한 지원이 이식 가능한 소스 파일 인코딩 표준으로 추가되었습니다.
-
정적
operator[]
하위 스크립트에 대한 지원이 추가되었습니다.
새로운 경고:
-
-Wself-move
는std::move
를 사용하여 값을 자체적으로 이동할 때 경고합니다. -
-Wdangling-reference
는 라이프 사이클이 종료된 임시로 참조가 바인딩될 때 경고합니다. -
더 많은 상황에서 경고하도록
-Wpessimizing-move
및-Wredundant-move
경고가 확장되었습니다.
-
-
새로운
-nostdlib++
옵션을 사용하면 C++ 표준 라이브러리에서 암시적으로 연결하지 않고도g++
와 연결할 수 있습니다.
libstdc++
런타임 라이브러리의 변경 사항
다음을 포함하여 C++20에 대한 실험적 지원 개선:
-
<
format>
; 헤더와std::format
함수를 추가했습니다. -
std::
, 기타 클럭, 시간대,chrono
::utc_clockstd::format
함수에 대한 <chrono> 헤더에 지원이 추가되었습니다.
-
<
다음을 포함하여 C++23에 대한 실험적 지원 개선:
-
<
ranges> 헤더에
추가되었습니다.views::zip
_transformviews::adjacent
_transform ,views::adjacent_transform
,views::pairwise
,
_by ,views:
:chunkviews::chunk_by
,views::repeat
,views::chunk_by
,views::cartesian_product
,views::as_rvalue
,views::enumerate
,views::as_const
. -
<
algorithm> 헤더에
추가:ranges::contains
_subrangeranges::iota
, ranges::find_last ,ranges::find_last
_if ,ranges::find_last_if
,ranges::find_if_not , ranges::fold_
left ,ranges::fold_left
_first ,ranges::fold_left_first
,ranges::fold_right
,ranges::fold_right_last
,ranges::fold_left_with_iter
,ranges::fold_left_first_with_iter
. -
std::expected
클래스 템플릿에 대한 monadic 작업을 지원합니다. -
std::bitset
,std::to_chars
및std::from_chars
함수에constexpr
수정자를 추가했습니다. - 확장 부동 소수점 유형에 대한 라이브러리 지원이 추가되었습니다.
-
<
-
Library Cryostatals
<experimental/scope>
Technical Specification (TS)의 버전 3에서 헤더에 대한 지원이 추가되었습니다. -
Concurrency TS 버전 2에서
<experimental/synchronized_value>
헤더에 대한 지원이 추가되었습니다. 이전에 사용할 수 없는 많은 기능에 대한 지원이 무료로 추가되었습니다. 예를 들면 다음과 같습니다.
-
std::튜플
클래스 템플릿을 무료로 컴파일할 수 있습니다. -
libstdc++
라이브러리는std::array
및std::string_view
와 같은 자유 하위 집합에 구성 요소를 추가합니다. -
libstdc++
라이브러리는 이제-ffree
espite 컴파일러 옵션을 사용하므로libstdc++
라이브러리의 별도의 무료 설치를 빌드할 필요가 없습니다.libstdc++
라이브러리가 전체 호스팅 구현으로 빌드된 경우에도-ffree
espite로 사용 가능한 기능을 freestanding 하위 집합으로 제한합니다.
-
새로운 대상 및 대상별 개선 사항
64비트 ARM 아키텍처:
-
-march=
옵션에 대한armv9.1-a
,armv9.2-a
,armv9.3-a
인수에 대한 지원이 추가되었습니다.
32비트 및 64비트 AMD 및 Intel 아키텍처:
-
C 및 C++ 모두에서
__bf16
유형은 Streaming ScanSettingD Extensions 2 이상이 활성화된 시스템에서 지원됩니다. -
이제 실제
__bf16
유형이AVX512BF16
명령어 내장에 사용됩니다. 이전에는__bfloat16
.hort16이 사용된 typedef입니다. GCC 12를 GCC 13으로 업그레이드할 때AVX512BF16
관련 소스 코드를 조정합니다. 다음 Intel 명령어를 지원하기 위해 새로운 Instruction Set Architecture (ISA) 확장을 추가했습니다.
-
명령 내장이
-mavxifma
컴파일러 스위치를 통해 사용할 수 있는AVX-IFMA
입니다. -
-mavxvnniint8
컴파일러 스위치를 통해 내장 명령어를 사용할 수 있는AVX-VNNI-INT8
-
명령 내장을 통해
-mavxneconvert
컴파일러 스위치를 통해 사용할 수 있는AVX-NE-CONVERT
. -
-mcmpccxadd
컴파일러 스위치를 통해 내장 명령어를 사용할 수 있는CMPccXADD
. -
AMX-FP16
명령어 내장을 통해-mamx-fp16
컴파일러 스위치를 사용할 수 있습니다. -
-mprefetchi
컴파일러 스위치를 통해 내장 명령어를 사용할 수 있는PREFETCHI
. -
-mraoint
컴파일러 스위치를 통해 내장 명령어를 사용할 수 있는RAO-INT
. -
AMX-COMPLEX
는-mamx-complex
컴파일러 스위치를 통해 내장 명령어를 사용할 수 있습니다.
-
명령 내장이
-
GCC는
-march=
컴파일러 스위치를 통해 znver4 코어를 기반으로 AMD CPU를 지원합니다. 스위치는 GCC가 자동 벡터를 사용할 때 512비트 벡터를 사용하는 것을 고려합니다.znver4
정적 분석기 개선
정적 분석기에는 20개의 새로운 경고가 추가되었습니다.
-
-Wanalyzer-allocation-size
-
-Wanalyzer-deref-before-check
-
-Wanalyzer-exposure-through-uninit-copy
-
-Wanalyzer-imprecise-fp-arithmetic
-
-Wanalyzer-infinite-recursion
-
-Wanalyzer-jump-through-null
-
-Wanalyzer-out-of-bounds
-
-Wanalyzer-putenv-of-auto-var
-
-Wanalyzer-tainted-assertion
파일 설명자의 오용과 관련된 7 가지 새로운 경고:
-
-Wanalyzer-fd-access-mode-mismatch
-
-Wanalyzer-fd-double-close
-
-Wanalyzer-fd-leak
-
-Wanalyzer-fd-phase-mismatch
(예:listen
를 호출하기 전에 소켓에서accept
를 호출) -
-Wanalyzer-fd-type-mismatch
(예: 데이터그램 소켓에서 스트림 소켓 사용) -
-Wanalyzer-fd-use-after-close
-Wanalyzer-fd-use-without-check
-
또한
open
,close
,creat
,dup2
,
, pipe , pipe ,dup
3
,pipe
2read
및write
함수의 동작에 대한 특수 캐스팅 처리를 구현합니다.
-
또한
-
<
stdarg.h>
헤더의 오용에 대한 새로운 경고 4가지:-
-Wanalyzer-va-list-leak
는va_start
또는va_copy
매크로 이후va_end
매크로가 누락되었다고 경고합니다. -
-Wanalyzer-va-list-use-va-end
는va_arg
또는va_copy
매크로가 호출된va_list
오브젝트 유형에서 사용되는 va_arg 또는va_
copy 매크로에 대해 경고합니다. -
-Wanalyzer-va-arg-type-mismatch
type-checksva_arg
macro usage in interprocedural execution paths that were actually passed to the variadic call. -
-Wanalyzer-va-list-exhausted
va_arg
매크로가 절차 간 실행 경로에va_list
오브젝트 유형에서 너무 여러 번 사용되면 경고 메시지가 표시됩니다.
-
-
- 다른 많은 개선사항
이전 버전과 호환되지 않는 변경 사항
C ++의 경우 std::cout
과 같은 글로벌 iostream 오브젝트의 구성은 이제 < iostream
> 헤더를 포함하는 모든 소스 파일에서 대신 표준 라이브러리 내에서 수행됩니다. 이러한 변경으로 인해 C++ 프로그램의 시작 성능이 향상되지만 런타임 시 올바른 버전의
libstdc++.so
를 사용하지 않으면 GCC 13.1로 컴파일된 코드가 충돌하게 됩니다. 런타임 시 올바른 libstdc++.so
사용에 대한 설명서 를 참조하십시오. 향후 GCC 릴리스는 호환되지 않는 libstdc++.so
를 사용하여 프로그램을 전혀 실행할 수 없도록 문제를 완화합니다.
Bugzilla:2172091[1]
GCC Toolset 13: annobin
을 버전 12.20으로 재조정
GCC Toolset 13은 annobin
패키지 버전 12.20을 제공합니다. 주요 개선 사항은 다음과 같습니다.
-
annobin
노트를 별도의 디버그 정보 파일로 이동하는 지원이 추가되었습니다. 이렇게 하면 실행 가능한 바이너리 크기가 줄어듭니다. - 새로운 작은 노트 형식에 대한 지원이 추가되어 별도의 debuginfo 파일의 크기와 이러한 파일을 만드는 데 걸리는 시간이 줄어듭니다.
Bugzilla:2171923[1]
GCC Toolset 13: GDB는 버전 12.1에 재기반
GCC Toolset 13은 GDB 버전 12.1을 제공합니다.
주요 버그 수정 및 개선 사항은 다음과 같습니다.
-
GDB는 이제 기본적으로 소스 코드 및 디스어셈블러의 스타일을 지정합니다. 스타일링이 GDB의 자동화 또는 스크립팅을 방해하는 경우
maint set gnu-source-highlight enabled off
및maint set style disassembler enabled off
명령을 사용하여 비활성화할 수 있습니다. -
GDB는 이제 내부 오류가 발생할 때마다 backtraces를 표시합니다. 스크립트 또는 자동화에 영향을 미치는 경우
maint set backtrace-on-fatal-signal off
명령을 사용하여 이 기능을 비활성화할 수 있습니다.
C/C++ 개선 사항:
- GDB는 이제 함수 과부하와 유사하게 C++ 템플릿을 포함하는 함수 또는 유형을 처리합니다. 매개 변수 목록을 생략하여 여러 템플릿 유형으로 구성된 유형 또는 함수를 포함하여 템플릿 함수 제품군에서 Cryostat를 설정할 수 있습니다. 탭 완료도 비슷한 개선 사항을 가져왔습니다.
터미널 사용자 인터페이스(TUI):
Tui 레이아웃
Tui 중점
Tui 새로 고침
Tui 창 높이
이전레이아웃
의 새 이름,focus
,refresh
및winheight
TUI 명령 각각입니다. 이전 이름은 이러한 새 명령에 대한 별칭으로 계속 존재합니다.Tui 창 너비
winwidth
새로운
tui window width
명령 또는winwidth
별칭을 사용하여 창이 수평 모드로 설정될 때 TUI 창의 너비를 조정합니다.info win
이 명령에는 출력에 TUI 창의 너비에 대한 정보가 포함됩니다.
MIT(Machine Interface) 변경:
- Mini 인터프리터의 기본 버전은 이제 4 (-i=mi4)입니다.
-
플래그가 없는
-add-inferior
명령은 현재 유추 연결을 상속합니다. 이렇게 하면 버전 10 이전의 GDB 동작이 복원됩니다. -
-add-inferior
명령은 이제 연결 없이 새 유추를 시작할 수 있는--no-connection
플래그를 허용합니다. Cryostat 출력의
script
필드(simum 3 및 이전 버전에서 구문적으로 잘못된 경우)의 스크립트가 list가 되었습니다. 이는 다음 명령 및 이벤트에 영향을 미칩니다.-
-break-insert
-
-break-info
-
=breakpoint-created
=breakpoint-modified
-fix-breakpoint-script-output
명령을 사용하여 이전 버전의 새 동작을 활성화합니다.
-
새 명령:
maint set internal-error backtrace [on|off]
maint show internal-error backtrace
maint set internal-warning backtrace [on|off]
maint show internal-warning backtrace
GDB는 내부 오류 또는 내부 경고가 발생할 때 자체 역추적을 출력할 수 있습니다. 이는 기본적으로 내부 오류에 대해 활성화되며 내부 경고에 대해 기본적으로 비활성화되어 있습니다.
종료
기존
quit
명령 외에도 새exit
명령을 사용하여 GDB를 종료할 수 있습니다.maint set gnu-source-highlight enabled [on|off]
maint show gnu-source-highlight enabled
소스 코드에 스타일링을 추가하기 위해 GNU 소스 Highlight 라이브러리를 활성화하거나 비활성화합니다. 비활성화된 경우 사용 가능한 경우에도 라이브러리가 사용되지 않습니다. GNU Source Highlight 라이브러리를 사용하지 않는 경우 Python Pygments 라이브러리가 대신 사용됩니다.suppress-cli-notifications [on|off] 설정
suppress-cli-notifications 표시
CLI용으로 알림 인쇄가 비활성화되었는지 여부를 제어합니다. CLI 알림은 선택한 컨텍스트(예: 현재 유추, 스레드 또는 프레임)를 변경하거나 디버깅 중인 프로그램이 중지될 때 발생합니다(예: build를 적중하거나 source-stepping 완료 또는 인터럽트 완료).
설정 스타일 disassembler enabled [on|off]
스타일 디스어셈블러 표시
이 명령을 활성화하면 GDB가 Python 지원으로 컴파일되고 Python Pygments 패키지를 사용할 수 있는 경우 명령은 디스어셈블러 출력에 스타일링을 적용합니다.
변경된 명령:
로깅 설정 [on|off]
더 이상 사용되지 않으며
설정된 로깅이 활성화된 [on|off]
명령으로 교체되었습니다.출력
/x
와 같은 기본 형식을 사용하여 부동 소수점 값 인쇄가 원하는 베이스에 값의 기본 바이트를 표시하도록 변경되었습니다.clone-inferior
이제
clone-inferior
명령으로TTY
,CMD
및ARGs
설정이 원래 유추에서 새 설정으로 복사되도록 합니다.set environment
또는unset environment
명령을 사용하여 수행한 환경 변수에 대한 모든 수정 사항은 새 유추에도 복사됩니다.
Python API:
-
새로운
gdb.add_history()
함수는gdb.Value
개체를 사용하여 GDB의 기록 목록에 나타내는 값을 추가합니다. 함수는 기록 목록에 있는 새 항목의 인덱스인 정수를 반환합니다. -
새로운
gdb.history_count()
함수는 GDB의 값 기록의 값 수를 반환합니다. -
새로운
gdb.events.gdb_exiting
이벤트는 GDB 종료 코드 값을 포함하는 읽기 전용 속성exit_code
가 있는gdb.GdbExitingEvent
오브젝트를 사용하여 호출됩니다. 이 이벤트는 GDB가 내부 상태를 정리하기 전에 GDB의 종료 전에 트리거됩니다. -
새로운
gdb.architecture_names()
함수는 가능한 모든Architecture.name()
값을 포함하는 목록을 반환합니다. 각 항목은 문자열입니다. -
새로운
gdb.Architecture.integer_type()
함수는 크기와 부호 있는 범위 지정 정수 유형을 반환합니다. -
새로운
gdb.TargetConnection
오브젝트 유형은 연결을 나타냅니다(info connections
명령으로 표시됨). 하위 클래스gdb.RemoteTargetConnection
은원격
및확장 원격
연결을 나타냅니다. -
gdb.Inferior
유형에는 이 유추에서 사용하는연결
인gdb.TargetConnection
오브젝트의 인스턴스인 연결 속성이 있습니다. 이 경우 열등호가 연결되지 않은 경우None
이 될 수 있습니다. -
새로운
gdb.events.connection_removed
이벤트 레지스트리는 GDB에서 연결이 제거될 때gdb.ConnectionEvent
이벤트를 내보냅니다. 이 이벤트에는 제거 중인연결에
대한gdb.TargetConnection
오브젝트인 connection 속성이 있습니다. -
새로운
gdb.connections()
함수는 현재 활성 상태인 모든 연결 목록을 반환합니다. -
새로운
gdb.RemoteTargetConnection.send_packet(PACKET)
방법은 기존maint 패킷
CLI 명령과 동일합니다. 이를 사용하여 지정된 패킷을 원격 대상으로 보낼 수 있습니다. -
새로운
gdb.host_charset()
함수는 현재 호스트 문자 세트의 이름을 문자열로 반환합니다. -
새로운
gdb.set_parameter(NAME,VALUE)
함수는 GDB 매개변수NAME
을VALUE
로 설정합니다. -
새로운
gdb.with_parameter(NAME,VALUE)
함수는 GDB 매개변수NAME
을VALUE
로 임시로 설정한 다음 컨텍스트가 종료될 때 이를 재설정하는 컨텍스트 관리자를 반환합니다. -
gdb.Value.format_string
메서드는 부울인스타일링
인수를 사용합니다.true
인 경우 반환된 문자열에는 스타일링을 적용하는 이스케이프 시퀀스가 포함될 수 있습니다. 스타일링은 GDB에서 스타일링이 켜진 경우에만 존재합니다 (styling 설정 도움말
참조 ). 경우false
, 이는스타일
인수가 제공되지 않는 경우 기본값이며 반환된 문자열에 스타일링이 적용되지 않습니다. -
새로운 읽기 전용 속성
gdb.InferiorThread.details
는 추가 대상별 스레드 상태 정보를 포함하는 문자열이거나 이러한 추가 정보가 없는 경우None
입니다. -
새로운 읽기 전용 속성
gdb.Type.is_scalar
는 스칼라 유형의 경우True
이고 다른 모든 유형의 경우False
입니다. -
새로운 읽기 전용 속성
gdb.Type.is_signed
는Type.is_scalar
가True
이고 다른 모든 유형의 경우True
가 됩니다.비스칼라 유형에 대한 이 속성을 읽으려고 하면
ValueError
가 발생합니다. - 이제 Python으로 구현된 GDB 및>-< 명령을 추가할 수 있습니다.
자세한 내용은 업스트림 릴리스 노트를 참조하십시오.
Bugzilla:2172095[1]
GCC Toolset 13: bintuils
는 버전 2.40으로 재기반
GCC Toolset 13은 binutils
패키지 버전 2.40을 제공합니다. 주요 개선 사항은 다음과 같습니다.
링커:
-
링커의 새로운
-w
(--no-warnings
) 명령줄 옵션은 경고 또는 오류 메시지 생성을 표시하지 않습니다. 이 기능은 작동하지 않는 바이너리를 생성해야 하는 경우에 유용합니다. 이제 ELF 링커가 다음과 같은 경고 메시지를 생성합니다.
- 스택이 실행 가능하게 되어 있습니다.
-
읽기
,쓰기
및eXecute
권한 세트를 모두 사용하여 메모리 상주 세그먼트를 생성합니다. eXecute
권한 세트를 사용하여 스레드 로컬 데이터 세그먼트를 생성합니다.--no-warn-exec-stack
또는--no-warn-rwx-segments
옵션을 사용하여 이러한 경고를 비활성화할 수 있습니다.
- 링커에서 임의의 JSON 형식 메타데이터를 생성한 바이너리에 삽입할 수 있습니다.
기타 툴:
-
파일 헤더 및 PE(Portable Executable) 형식 파일의 섹션 헤더에 필드를 표시하는 새로운
objdump
툴의--private
옵션입니다. -
objcopy
및 ELF 파일에서 ELF 섹션 헤더를 제거하는 유틸리티를 제거하는 새로운--strip-section-headers
명령줄 옵션입니다. -
objdump
유틸리티에 대한 새로운--show-all-symbols
명령줄 옵션은 주소와 일치하는 첫 번째 기호만 표시하는 기본 함수와 달리 지정된 주소와 일치하는 모든 기호를 표시하는 것입니다. -
nm
유틸리티에 대한 새로운-W
(--no-weak
) 옵션은 약한 기호를 무시하도록 합니다. 이제
objdump
유틸리티에서 일부 아키텍처의 disassembler 출력 구문 강조 표시 기능을 지원합니다. MODE는 다음 중 하나로--disassembler-color= MODE
명령줄 옵션을 사용합니다.-
off
-
color
- 이 옵션은 모든 터미널 에뮬레이터에서 지원됩니다. -
Extended-color
- 이 옵션은 모든 터미널 에뮬레이터에서 지원하지 않는 8비트 색상을 사용합니다.
-
Bugzilla:2171924[1]
GCC Toolset 13: annobin
을 버전 12.20으로 재조정
GCC Toolset 13은 annobin
패키지 버전 12.20을 제공합니다. 주요 개선 사항은 다음과 같습니다.
-
annobin
노트를 별도의 디버그 정보 파일로 이동하는 지원이 추가되었습니다. 이렇게 하면 실행 가능한 바이너리 크기가 줄어듭니다. - 별도의 debuginfo 파일의 크기와 이러한 파일을 생성하는 데 걸리는 시간을 줄이는 새로운 작은 노트 형식에 대한 지원이 추가되었습니다.
Bugzilla:2171921[1]
Valgrind 버전 3.21.0으로 업데이트
Valgrind가 3.21.0 버전으로 업데이트되었습니다. 주요 개선 사항은 다음과 같습니다.
-
--vgdb-stop-at=event1 의 새로운
옵션은 프로그램이 0이 아닌 종료 코드와 같이 비정상적으로 종료될 때abexit
값,event2,…gdbserver
유틸리티를 알립니다. 새로운
--enable-debuginfod=[yes|no]
옵션은DEBUGINFOD_URLS
환경 변수에 나열된debuginfod
서버를 사용하여 Valgrind에서 실행되는 프로그램에 대한 누락된 DWARF debuginfo 정보를 가져오도록 Valgrind에 지시합니다. 이 옵션의 기본값은yes
입니다.참고DEBUGINFOD_URLS
환경 변수는 기본적으로 설정되지 않습니다.-
이제
Cryostatdb
유틸리티는--multi
옵션으로 호출할 때 확장 원격 프로토콜을 지원합니다. GDBrun
명령은 이 모드에서 지원되며 결과적으로 단일 터미널에서 GDB 및 Valgrind를 실행할 수 있습니다. -
malloc
-zero-bytes-frees=[yes|no]
옵션을 사용하여malloc()
호출을 차단하는 툴에 대해 크기가 0인realloc()
함수의 동작을 변경할 수 있습니다. -
memcheck
툴은 이제 크기가 0인realloc()
함수의 사용에 대한 검사를 수행합니다. 새로운--show-realloc-size-zero=[yes|no]
스위치를 사용하여 이 기능을 비활성화합니다. -
helgrind
툴에 새로운--history-backtrace-size=value
옵션을 사용하여 이전 액세스의 스택 추적에 기록할 항목 수를 구성할 수 있습니다. -
--cache-sim=[yes|no]
cachegrind
옵션은 기본값이no
이며 결과적으로 명령어 캐시 읽기 이벤트만 기본적으로 수집됩니다. -
cg_annotate
,cg_diff
,cg_merge
cachegrind
유틸리티의 소스 코드가 다시 작성되었으며 결과적으로 유틸리티에서 보다 유연한 명령줄 옵션을 처리할 수 있습니다. 예를 들어--show-percs
및--no-show-percs
옵션과 기존--show-percs=yes
및--show-percs=no
옵션을 지원합니다. -
cg_annotate
cachegrind
유틸리티는 diffing(-diff ,--
mod-filename--mod-funcname
옵션 사용) 및 병합(여러 데이터 파일을 전달하여)을 지원합니다. 또한cg_annotate
는 이제 파일 및 기능 수준에서 더 많은 정보를 제공합니다. -
DHAT
툴에 대한 새로운 사용자 요청을 사용하면 메모리 블록에 대한 액세스 수 히스토그램의 1024바이트 제한을 덮어쓸 수 있습니다.
이제 다음과 같은 새로운 아키텍처별 명령 세트가 지원됩니다.
64-bit ARM:
- v8.2 스칼라 및 벡터 부동 소수점 Absolute difference (FABD), 유동-포인트 Absolute Compare greaterer than or Equal (FACGE), floating-point Absolute Compare Greater Than (FACGT), FADD(유동-point Add) 지침.
- v8.2 유동점(FP) 비교 및 조건부 비교 지침.
- v8.2 floating-point (FP)의 제로 변형은 지침을 비교합니다.
64비트 IBM Z:
-
기타 -instruction-extensions 기능 3
및벡터 강화 시설 2에
대한 지원 이를 통해 Valgrind에서-march=arch13
또는-march=z15
옵션으로 컴파일된 프로그램을 실행할 수 있습니다.
-
IBM Power:
- ISA 3.1 지원이 완료되었습니다.
- ISA 3.0은 이제 deliver a random number (darn) 명령어를 지원합니다.
- ISA 3.0은 이제 시스템 호출 벡터(scv) 명령어를 지원합니다.
- ISA 3.0은 이제 copy, paste, cpabort 명령어를 지원합니다.
SystemTap
버전 4.9로 업데이트
systemtap
패키지가 버전 4.9로 업그레이드되었습니다. 주요 변경 사항은 다음과 같습니다.
-
LSP( Language-Server-Protocol) 백엔드에서는 LSP 가능 편집기에서
systemtap
스크립트를 보다 쉽게 대화형으로 작성할 수 있습니다. - Python/Jupyter 대화형 노트북 프런트 엔드에 액세스할 수 있습니다.
- DWARF 5 비트 필드 처리 개선
elfutils
버전 0.189로 업데이트
elfutils
패키지가 버전 0.189로 업데이트되었습니다. 주요 개선 사항 및 버그 수정은 다음과 같습니다.
libelf
-
elf_compress
툴은ELFCOMPRESS_ZSTD
ELF 압축 유형을 지원합니다. libdwfl
-
이제
dwfl_module_ return_value_location
함수는DW_TAG_unspecified_type
유형 태그를 가리키는 DWARF Information Entries(DIEs)의 0( 반환 유형 없음)을 반환합니다. eu-elfcompress
-
-t
및--type=
옵션은zstd
인수를 통해 Zstandard(zstd
) 압축 형식을 지원합니다.
버전 4.13에 따라 libpfm
업데이트
libpfm
패키지가 버전 4.13으로 업데이트되었습니다. 이번 업데이트를 통해 libpfm
은 다음 프로세서 마이크로 아키텍처의 성능 모니터링 하드웨어 기본 이벤트에 액세스할 수 있습니다.
- AMD Cryostat 4
- ARM Neoverse N1
- ARM Neoverse N2
- ARM Neoverse V1
- ARM Neoverse V2
- 4th Generation Intel® Xeon® Scalable Processors
- IBM z16
Bugzilla:2185653, Bugzilla:2111987, Bugzilla:2111966, Bugzilla:2111973, Bugzilla:2109907, Bugzilla:2111981, Bugzilla:2047725
Papi에서
새로운 프로세서 마이크로 아키텍처 지원
이번 개선된 기능을 통해 다음 프로세서 마이크로 아키텍처에서 papi
이벤트를 사전 설정하여 성능 모니터링 하드웨어에 액세스할 수 있습니다.
- ARM Neoverse N1
- ARM Neoverse N2
- ARM Neoverse V1
- ARM Neoverse V2
Bugzilla:2111982[1], Bugzilla:2111988
Papi에서
64비트 ARM에 대한 빠른 성능 이벤트 수 읽기 작업 지원
이전에는 64비트 ARM 프로세서에서 모든 성능 이벤트 카운터 읽기 작업에서 리소스 집약적인 시스템 호출을 사용해야 했습니다. Papi가
64비트 ARM에 대해 업데이트되어 성능 카운터와 함께 프로세스 모니터링이 성능 이벤트 카운터의 더 빠른 사용자 공간 읽기를 사용할 수 있도록 업데이트되었습니다. /proc/sys/kernel/perf_user_access
매개변수를 1로 설정하면 papi
의 평균 클럭 사이클 수가 724 사이클에서 29 사이클로 단축됩니다.
Bugzilla:2161146[1]
LLVM Toolset이 버전 16.0.6으로 업데이트됨
LLVM Toolset이 버전 16.0.6으로 업데이트되었습니다.
주요 개선 사항은 다음과 같습니다.
- 최적화 개선
- 새로운 CPU 확장 지원
- 새로운 C++ 버전에 대한 지원 개선
주요 이전 버전과 호환되지 않는 변경 사항은 다음과 같습니다.
-
Clang의 기본 C++ 표준은 이제
gnu++14
대신gnu++17
입니다. -
-Wimplicit-function-dec declarationation
,-Wimplicit-int
및-Wincompatible-function-pointer-types
옵션은 이제 C 코드의 오류로 기본 설정됩니다. 이는 구성 스크립트의 동작에 영향을 미칠 수 있습니다.
기본적으로 Clang 16은 GCC Toolset 13에서 제공하는 libstdc++
라이브러리 버전 13 및 binutils 2.40
을 사용합니다.
자세한 내용은 LLVM 릴리스 노트 및 Clang 릴리스 노트를 참조하십시오.
버전 1.71.1에 따라 rust Toolset
rust Toolset이 버전 1.71.1으로 업데이트되었습니다. 주요 변경 사항은 다음과 같습니다.
- 성능을 개선하기 위해 여러 생산자, 단일 소비자(mpsc) 채널의 새로운 구현
-
crates.io
레지스트리를 보다 효율적으로 사용하기 위한 새로운 카고스파스
인덱스 프로토콜 -
일회성 값 초기화를 위한 새로운
OnceCell
및OnceLock
유형 -
새로운
C-unwind
ABI 문자열 Foreign Function Interface (FFI) 경계에서 강제로 unwinding을 사용할 수 있도록 하는 새로운 C-unwind ABI 문자열
자세한 내용은 일련의 업스트림 릴리스 알림을 참조하십시오.
Rust profiler_builtins
런타임 구성 요소를 사용할 수 있음
이번 개선된 기능을 통해 Rust profile_builtins
런타임 구성 요소를 사용할 수 있습니다. 이 런타임 구성 요소는 다음과 같은 컴파일러 옵션을 활성화합니다.
-c instrument-coverage
- 적용 범위 프로파일링 활성화
-c profile-generate
- 프로필 가이드 최적화 활성화
Bugzilla:2213875[1]
Go Toolset을 버전 1.20.10으로 업데이트
Go Toolset이 버전 1.20.10으로 업데이트되었습니다.
주요 개선 사항은 다음과 같습니다.
-
내부 표현에 의존하지 않고 슬라이스와 문자열을 처리하기 위해
안전하지 않은
패키지에 추가된 새로운 함수입니다. - 유사 유형은 이제 유사한 제약 조건을 충족할 수 있습니다.
-
새로운
crypto/ecdh
패키지입니다. -
go build
및go test
명령은 더 이상-i
플래그를 허용하지 않습니다. -
go generate
및go test
명령에서-skip 패턴
옵션을 허용합니다. -
go build
,go install
및 기타 빌드 관련 명령에서-pgo
및-cover
플래그를 지원합니다. -
이제
go
명령은 C 툴체인이 없는 시스템에서 기본적으로cgo
를 비활성화합니다. -
go version -m
명령은 이제 더 많은 Go 바이너리 유형 읽기를 지원합니다. -
이제
go
명령은 C 툴체인이 없는 시스템에서 기본적으로cgo
를 비활성화합니다. - 단위 테스트에서만 수집하는 대신 애플리케이션 및 통합 테스트에서 코드 범위 프로필 수집에 대한 지원이 추가되었습니다.
Bugzilla:2185260[1]
Grafana
버전 9.2.10으로 재기반
grafana
패키지가 버전 9.2.10으로 업데이트되었습니다. 주요 변경 사항은 다음과 같습니다.
- 시계열 패널은 이제 그래프 패널을 대체하는 기본 시각화 옵션입니다.
- Grafana는 새 Prometheus 및 Loki 쿼리 빌더를 제공합니다.
- Grafana에는 이제 여러 UI/ Cryostat 및 성능 개선이 포함됩니다.
- 라이센스가 Apache 2.0에서 GNU Affero General Public License (AGPL)로 변경되었습니다.
- 이제 Grafana 전체에서 heatmap 패널이 사용됩니다.
- Geomaps는 이제 거리와 영역을 모두 측정할 수 있습니다.
- Alertmanager는 이제 Prometheus Alertmanager 버전 0.24를 기반으로 합니다.
-
Grafana 경고 규칙은 기본적으로 실행
오류
또는 타임아웃에 오류 상태를 반환합니다. - 이제 공용 대시보드에서 표현식을 사용할 수 있습니다.
- 이제 조인 변환에서 내부 조인을 지원합니다.
- 공용 대시보드를 사용하면 Grafana 대시보드를 공유할 수 있습니다.
- 이제 새로운 Prometheus 스트리밍 구문 분석기를 옵트인 기능으로 사용할 수 있습니다.
자세한 내용은 업스트림 릴리스 노트를 참조하십시오.
Grafana-pcp
를 버전 5.1.1로 업데이트
Performance Co- Cryostat Grafana 플러그인을 제공하는 grafana-pcp
패키지가 버전 5.1.1로 업데이트되었습니다. 주요 변경 사항은 다음과 같습니다.
- 쿼리 편집기: 속도 대화 및 시간 활용 대화를 비활성화하는 버튼 추가
Redis 데이터 소스:
-
더 이상 사용되지 않는
label_values(metric, label)
함수 삭제 - 많은 시리즈를 사용하여 메트릭의 네트워크 오류를 수정 (Performance Co- Cryostat 버전 6 이상 필요)
-
더 이상 사용되지 않는
-
pmproxy
API 시간 제한을 1분으로 설정합니다.
.NET 8.0 사용 가능
Red Hat Enterprise Linux 8.9는 .NET 버전 8.0과 함께 배포됩니다. 주요 개선사항은 다음과 같습니다.
- C#12 및 F#8 언어 버전에 대한 지원이 추가되었습니다.
- .NET 소프트웨어 개발 키트를 사용하여 컨테이너 이미지 빌드에 대한 지원이 추가되었습니다.
- 가비지 수집기(GC),JIT(Just-In-Time) 컴파일러 및 기본 라이브러리의 많은 성능 개선
Jira:RHELPLAN-164398[1]