4.9. 컴파일러 및 개발 도구


glibc의 Intel® Xeon® v5 기반 하드웨어에서 문자열 및 메모리 루틴 성능 개선

이전 버전에서는 glibc 에서 문자열 및 메모리 루틴에 사용하는 기본 캐시 양으로 인해 Intel® Xeon® v5 기반 시스템에서 예상되는 성능보다 낮았습니다. 이번 업데이트를 통해 성능을 개선하기 위해 사용할 캐시 양이 조정되었습니다.

Bugzilla:2180462

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 계산을 사용하는 경우에 따라 Singledouble 표현식이 긴 이중 전체 순서로 평가됩니다.
    • Single 표현식이 double precision로 평가되는 64비트 IBM Z 시스템입니다.
    • std:: float 16_t 또는 std::bfloat16_t 유형을 지원하는 여러 아키텍처에서 이러한 유형은 부동 소수점으로 평가됩니다.
  • 다음을 포함하여 C++23에 대한 실험적 지원 개선:

    • 복합 문 끝에 레이블에 대한 지원이 추가되었습니다.
    • 임시에 대한 참조 바인딩을 감지하기 위해 유형 특성을 추가했습니다.
    • 휘발성 복합 작동에 대한 지원을 다시 도입했습니다.
    • #warning 지시문에 대한 지원이 추가되었습니다.
    • 구분된 이스케이프 시퀀스에 대한 지원이 추가되었습니다.
    • 이름이 지정된 범용 문자 이스케이프에 대한 지원이 추가되었습니다.
    • char8_t 유형에 대한 호환성 및 이식성 수정 사항이 추가되었습니다.
    • 정적 operator() 함수 개체가 추가되었습니다.
    • 단순화된 암시적 이동
    • 표현식에서 같음을 다시 작성하는 것은 이제 변경 사항이 적습니다.
    • 무제한으로 사용할 수 없는 문자 리터럴과 광범위한 다중 문자 리터럴을 제거합니다.
    • 몇 가지 constexpr 기능 제한 사항을 완화했습니다.
    • 확장된 부동 소수점 유형 및 표준 이름입니다.
    • 이식 가능한 가정을 구현합니다.
    • UTF-8에 대한 지원이 이식 가능한 소스 파일 인코딩 표준으로 추가되었습니다.
    • 정적 operator[] 하위 스크립트에 대한 지원이 추가되었습니다.
  • 새로운 경고:

    • -Wself-movestd::move 를 사용하여 값을 자체적으로 이동할 때 경고합니다.
    • -Wdangling-reference 는 라이프 사이클이 종료된 임시로 참조가 바인딩될 때 경고합니다.
    • 더 많은 상황에서 경고하도록 -Wpessimizing-move-Wredundant-move 경고가 확장되었습니다.
  • 새로운 -nostdlib++ 옵션을 사용하면 C++ 표준 라이브러리에서 암시적으로 연결하지 않고도 g++ 와 연결할 수 있습니다.

libstdc++ 런타임 라이브러리의 변경 사항

  • 다음을 포함하여 C++20에 대한 실험적 지원 개선:

    • < format&gt; 헤더와 std::format 함수를 추가했습니다.
    • std:: chrono::utc_clock, 기타 클럭, 시간대, std::format 함수에 대한 <chrono> 헤더에 지원이 추가되었습니다.
  • 다음을 포함하여 C++23에 대한 실험적 지원 개선:

    • < ranges> 헤더에 추가되었습니다. views::zip _transform, views::adjacent ,views::adjacent _transform ,views::adjacent_transform,views::pairwise,views::chunk _by ,views::chunk_by,views::repeat, views::chunk_by,views::cartesian_product,views::as_rvalue,views::enumerate,views::as_const.
    • < algorithm> 헤더에 추가: ranges::contains _subrange,ranges::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_charsstd::from_chars 함수에 constexpr 수정자를 추가했습니다.
    • 확장 부동 소수점 유형에 대한 라이브러리 지원이 추가되었습니다.
  • Library Cryostatals <experimental/scope> Technical Specification (TS)의 버전 3에서 헤더에 대한 지원이 추가되었습니다.
  • Concurrency TS 버전 2에서 <experimental/synchronized_value> 헤더에 대한 지원이 추가되었습니다.
  • 이전에 사용할 수 없는 많은 기능에 대한 지원이 무료로 추가되었습니다. 예를 들면 다음과 같습니다.

    • std::튜플 클래스 템플릿을 무료로 컴파일할 수 있습니다.
    • libstdc++ 라이브러리는 std::arraystd::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 컴파일러 스위치를 통해 znver4 코어를 기반으로 AMD CPU를 지원합니다. 스위치는 GCC가 자동 벡터를 사용할 때 512비트 벡터를 사용하는 것을 고려합니다.

정적 분석기 개선

  • 정적 분석기에는 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,dup 3, pipe , pipe ,pipe 2,readwrite 함수의 동작에 대한 특수 캐스팅 처리를 구현합니다.
    • < stdarg.h> 헤더의 오용에 대한 새로운 경고 4가지:

      • -Wanalyzer-va-list-leakva_start 또는 va_copy 매크로 이후 va_end 매크로가 누락되었다고 경고합니다.
      • -Wanalyzer-va-list-use-va-endva_arg 또는 va_copy 매크로가 호출된 va_list 오브젝트 유형에서 사용되는 va_arg 또는 va_ copy 매크로에 대해 경고합니다.
      • -Wanalyzer-va-arg-type-mismatch type-checks va_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 offmaint 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,refreshwinheight 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,CMDARGs 설정이 원래 유추에서 새 설정으로 복사되도록 합니다. 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 매개변수 NAMEVALUE 로 설정합니다.
  • 새로운 gdb.with_parameter(NAME,VALUE) 함수는 GDB 매개변수 NAMEVALUE 로 임시로 설정한 다음 컨텍스트가 종료될 때 이를 재설정하는 컨텍스트 관리자를 반환합니다.
  • gdb.Value.format_string 메서드는 부울인 스타일링 인수를 사용합니다. true 인 경우 반환된 문자열에는 스타일링을 적용하는 이스케이프 시퀀스가 포함될 수 있습니다. 스타일링은 GDB에서 스타일링이 켜진 경우에만 존재합니다 ( styling 설정 도움말참조 ). 경우 false, 이는 스타일 인수가 제공되지 않는 경우 기본값이며 반환된 문자열에 스타일링이 적용되지 않습니다.
  • 새로운 읽기 전용 속성 gdb.InferiorThread.details 는 추가 대상별 스레드 상태 정보를 포함하는 문자열이거나 이러한 추가 정보가 없는 경우 None 입니다.
  • 새로운 읽기 전용 속성 gdb.Type.is_scalar 는 스칼라 유형의 경우 True 이고 다른 모든 유형의 경우 False 입니다.
  • 새로운 읽기 전용 속성 gdb.Type.is_signedType.is_scalarTrue 이고 다른 모든 유형의 경우 True 가 됩니다. 비스칼라 유형에 대한 이 속성을 읽으려고 하면 ValueError 가 발생합니다.
  • 이제 Python으로 구현된 GDB 및>-< 명령을 추가할 수 있습니다.

자세한 내용은 업스트림 릴리스 노트를 참조하십시오.

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 의 새로운 abexit 값,event2,…​ 옵션은 프로그램이 0이 아닌 종료 코드와 같이 비정상적으로 종료될 때 gdbserver 유틸리티를 알립니다.
  • 새로운 --enable-debuginfod=[yes|no] 옵션은 DEBUGINFOD_URLS 환경 변수에 나열된 debuginfod 서버를 사용하여 Valgrind에서 실행되는 프로그램에 대한 누락된 DWARF debuginfo 정보를 가져오도록 Valgrind에 지시합니다. 이 옵션의 기본값은 yes 입니다.

    참고

    DEBUGINFOD_URLS 환경 변수는 기본적으로 설정되지 않습니다.

  • 이제 Cryostatdb 유틸리티는 --multi 옵션으로 호출할 때 확장 원격 프로토콜을 지원합니다. GDB run 명령은 이 모드에서 지원되며 결과적으로 단일 터미널에서 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 명령어를 지원합니다.

Bugzilla:2124345

SystemTap 버전 4.9로 업데이트

systemtap 패키지가 버전 4.9로 업그레이드되었습니다. 주요 변경 사항은 다음과 같습니다.

  • LSP( Language-Server-Protocol) 백엔드에서는 LSP 가능 편집기에서 systemtap 스크립트를 보다 쉽게 대화형으로 작성할 수 있습니다.
  • Python/Jupyter 대화형 노트북 프런트 엔드에 액세스할 수 있습니다.
  • DWARF 5 비트 필드 처리 개선

Bugzilla:2186932

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) 압축 형식을 지원합니다.

Bugzilla:2182060

버전 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 릴리스 노트를 참조하십시오.

Bugzilla:2178806

버전 1.71.1에 따라 rust Toolset

rust Toolset이 버전 1.71.1으로 업데이트되었습니다. 주요 변경 사항은 다음과 같습니다.

  • 성능을 개선하기 위해 여러 생산자, 단일 소비자(mpsc) 채널의 새로운 구현
  • crates.io 레지스트리를 보다 효율적으로 사용하기 위한 새로운 카고 스파스 인덱스 프로토콜
  • 일회성 값 초기화를 위한 새로운 OnceCellOnceLock 유형
  • 새로운 C-unwind ABI 문자열 Foreign Function Interface (FFI) 경계에서 강제로 unwinding을 사용할 수 있도록 하는 새로운 C-unwind ABI 문자열

자세한 내용은 일련의 업스트림 릴리스 알림을 참조하십시오.

Bugzilla:2191740

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 buildgo test 명령은 더 이상 -i 플래그를 허용하지 않습니다.
  • go generatego 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 스트리밍 구문 분석기를 옵트인 기능으로 사용할 수 있습니다.

자세한 내용은 업스트림 릴리스 노트를 참조하십시오.

Bugzilla:2193250

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분으로 설정합니다.

Bugzilla:2193270

.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]

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.