4.10. 編譯器和開發工具 (機器翻譯)

Boost已更新至1.66版

促進 C ++庫已更新到上游版本1.66。版本 促進 包含在Red Hat Enterprise Linux 7中的是1.53。有關詳細信息,請參閱上游更改日誌: https://www.boost.org/users/history/

此更新引入了以下更改,破壞了與先前版本的兼容性:

  • bs_set_hook() 功能, splay_set_hook() 來自展開容器的功能,以及 bool splay = true 額外的參數 splaytree_algorithms() 功能在 侵入 庫已被刪除。
  • 解析器不再支持JSON文件中的註釋或字符串連接 物業樹 圖書館。
  • 一些發行版和特殊功能 數學 已經修復了庫以表現為文檔並提出了一個 overflow_error 而不是返回最大有限值。
  • 一些標題來自 數學 庫已被移入目錄 libs/math/include_private
  • 的行為 basic_regex<>::mark_count()basic_regex<>::subexpression(n) 功能來自 正則表達式 庫已更改為與其文檔相匹配。
  • 在中使用可變參數模板 變種 庫可能會破壞元編程功能。
  • boost::python::numeric API已被刪除。用戶可以使用 boost::python::numpy 代替。
  • 原子庫中不再提供對非對像類型指針的算術運算。

(BZ#1494495)

Unicode 11.0.0支持

紅帽企業Linux核心C庫, glibc的, ,已更新為支持Unicode標準版本11.0.0。因此,所有寬字符和多字節字符API(包括字符集之間的音譯和轉換)都能提供符合此標準的準確和正確的信息。

(BZ#1512004)

boost package現在獨立於Python

有了這個更新,安裝 boost 包不再安裝了 Boost.Python 庫作為依賴。為了使用 Boost.Python, ,你需要明確安裝 boost-python3 要么 boost-python3-devel 包。

(BZ#1616244)

一個新的 compat-libgfortran-48 包可用

為了與使用Fortran庫的Red Hat Enterprise Linux 6和7應用程序兼容,一個新的 compat-libgfortran-48 兼容包現在可用,它提供了 libgfortran.so.3 圖書館。

(BZ#1607227)

GCC中的Retpoline支持

此更新增加了對GCC的retpolines的支持。retpoline是內核使用的軟件構造,用於減少CVE-2017-5715中描述的減輕Spectre Variant 2攻擊的開銷。

(BZ#1535774)

增強了對工具鏈組件中64位ARM體系結構的支持

工具鏈組件, GCCbinutils, ,現在為64位ARM體系結構提供擴展支持。例如:

  • GCCbinutils 現在支持可伸縮矢量擴展(SVE)。
  • 支持 FP16 數據類型由ARM v8.2提供,已添加到 GCC。該 FP16 數據類型提高了某些算法的性能。
  • 來自的工具 binutils 現在支持ARM v8.3架構定義,包括指針驗證。指針驗證功能通過製作自己的函數指針來防止惡意代碼破壞程序或內核的正常執行。因此,在分支到代碼中的不同位置時,僅使用可信地址,這提高了安全性。

(BZ#1504980, BZ#1550501, BZ#1504995, BZ#1504993, BZ#1504994)

優化到 glibc 對於IBM POWER系統

此更新提供了新版本 glibc 它針對IBM POWER 8和IBM POWER 9體系結構進行了優化。因此,IBM POWER 8和IBM POWER 9系統現在可以自動切換到相應的優化系統 glibc 運行時的變體。

(BZ#1376834)

GNU C Library已更新至2.28版

Red Hat Enterprise Linux 8包含GNU C庫2.28版(glibc)。顯著的改進包括:

  • 安全加固功能:

    • 安全的二進製文件標有 AT_SECURE 國旗忽略了 LD_LIBRARY_PATH 環境變量。
    • 不再打印回溯以進行堆棧檢查失敗,以加速關閉並避免在受損環境中運行更多代碼。
  • 性能改進:

    • 表現的 malloc() 函數已通過線程本地緩存進行了改進。
    • 添加了 GLIBC_TUNABLES 環境變量,以改變庫性能特徵。
    • 線程信號量的實現已得到改進,並且具有新的可擴展性 pthread_rwlock_xxx() 功能已添加。
    • 數學庫的性能得到了改進。
  • 添加了對Unicode 11.0.0的支持。
  • 增加了對ISO / IEC / IEEE 60559:2011,IEEE 754-2008和ISO / IEC TS 18661-3:2015標准定義的128位浮點數的改進支持。
  • 域名服務(DNS)存根解析器改進相關的 /etc/resolv.conf 配置文件:

    • 更改文件時會自動重新加載配置。
    • 增加了對任意數量搜索域的支持。
    • 適當的隨機選擇 rotate 選項已添加。
  • 增加了新的開發功能,包括:

    • Linux的包裝函數 preadv2pwritev2 內核調用
    • 新功能包括 reallocarray()explicit_bzero()
    • 新的標誌 posix_spawnattr_setflags() 功能如 POSIX_SPAWN_SETSID

(BZ#1512010, BZ#1504125, BZ#506398)

可在RHEL中使用CMake

CMake構建系統版本3.11在Red Hat Enterprise Linux 8中可用作 cmake 包。

(BZ#1590139, BZ#1502802)

make 版本4.2.1

Red Hat Enterprise Linux 8隨附了 make 構建工具版本4.2.1。值得注意的變化包括:

  • 配方失敗時,將顯示生成文件的名稱和配方的行號。
  • --trace 已添加選項以啟用目標跟踪。使用此選項時,每個配方都會在調用之前打印,即使它將被抑制,也可以與此配方所在的文件名和行號一起打印,還可以使用先決條件來調用它。
  • 混合顯式和隱式規則不再導致 make 終止執行。而是打印一個警告。請注意,此語法已棄用,將來可能會完全刪除。
  • $(file …​) 已添加函數以將文本寫入文件。在沒有文本參數的情況下調用時,它只會打開並立即關閉文件。
  • 一個新的選擇, --output-sync 要么 -O, ,使每個作業對多個作業的輸出進行分組,並使並行構建的調試更容易。
  • --debug 選項現在也接受了 n (無)標誌禁用所有當前啟用的調試設置。
  • != shell賦值運算符已被添加為 $(shell …​) 用於增加與BSD makefile的兼容性。有關運算符和函數之間的更多詳細信息和差異,請參閱GNU make手冊。

請注意,結果是名稱以感嘆號結尾並緊接著賦值的變量,例如 variable!=value, ,現在被解釋為新語法。要恢復以前的行為,請在感嘆號後面添加一個空格,例如 variable! =value

+

  • ::= 已添加由POSIX標准定義的賦值運算符。
  • 當。。。的時候 .POSIX 指定變量, make 遵守處理反斜杠和新行的POSIX標準要求。在此模式下,保留反斜杠之前的任何尾隨空格,並且每個反斜杠後跟一個新行和空格字符將轉換為單個空格字符。
  • 的行為 MAKEFLAGSMFLAGS 現在可以更精確地定義變量。
  • 一個新變量, GNUMAKEFLAGS, ,被解析 make 標誌相同 MAKEFLAGS。因此,GNU make- 特定標誌可以存儲在外面 MAKEFLAGS 並且增加了makefile的可移植性。
  • 一個新變量, MAKE_HOST, ,包含主機架構已添加。
  • 新變量, MAKE_TERMOUTMAKE_TERMERR, ,表明是否 make 正在將標準輸出和錯誤寫入終端。
  • 設置 -r-R 中的選項 MAKEFLAGS makefile中的變量現在可以正常工作,並分別刪除所有內置規則和變量。
  • .RECIPEPREFIX 現在每個食譜都會記住這個設置。此外,在該配方中擴展的變量也使用該配方前綴設置。
  • .RECIPEPREFIX 設置和所有特定於目標的變量顯示在輸出中 -p 選項就好像在makefile中,而不是作為註釋。

(BZ#1641015)

Go程序用 去工具集 符合FIPS標準

可用的加密庫 去工具集 已改為使用了 OpenSSL的 如果主機系統配置為FIPS模式,則為庫版本1.1.0。因此,使用此版本構建的程序 去工具集 符合FIPS標準。

要使Go程序僅使用未經認證的標準加密例程,請使用 -tags no_openssl 的選擇 go 編譯器在構建時。

(BZ#1512570)

SystemTap的 版本4.0

Red Hat Enterprise Linux 8隨附了 SystemTap的 儀表工具4.0版。顯著的改進包括:

  • 擴展的Berkeley Packet Filter(eBPF)後端已得到改進,尤其是字符串和函數。要使用此後端,請啟動 SystemTap的 隨著 --runtime=bpf 選項。
  • 增加了與Prometheus監測系統一起使用的新的出口網絡服務。
  • 系統調用探測實現已得到改進,以便在必要時使用內核跟踪點。

(BZ#1641032)

改進 binutils 版本2.30

紅帽企業Linux 8包括版本2.30 binutils 包。顯著的改進包括:

  • 對新的s390x架構擴展的支持已得到改進。

彙編程序:

  • 添加了對WebAssembly文件格式的支持,以及WebAssembly到wasm32 ELF文件格式的轉換。
  • 增加了對ARMv8-R架構和Cortex-R52,Cortex-M23和Cortex-M33處理器的支持。
  • 增加了對RISC-V架構的支持。

鏈接器:

  • 現在,鏈接器默認將代碼和只讀數據放入單獨的段中。因此,創建的可執行文件更大,運行更安全,因為動態加載程序可以禁用包含只讀數據的任何內存頁面的執行。
  • 添加了對動態加載程序提供有關二進製文件的提示的GNU屬性註釋的支持。
  • 以前,鏈接器為英特爾間接分支跟踪(IBT)技術生成了無效的可執行代碼。因此,生成的可執行文件無法啟動。此錯誤已得到修復。
  • 以前, gold 鏈接器合併屬性說明不正確。因此,可能會在生成的代碼中啟用錯誤的硬件功能,並且代碼可能會意外終止。此錯誤已得到修復。
  • 以前, gold 鏈接器在末尾創建了帶有填充字節的註釋部分,以根據體系結構實現對齊。因為動態加載器沒有期望填充,所以它會意外終止它正在加載的程序。此錯誤已得到修復。

其他工具:

  • readelfobjdump 現在,工具可以選擇將鏈接跟踪到單獨的調試信息文件中,並在其中顯示信息。
  • 新的 --inlines 選項擴展了現有的 --line-numbers 的選擇 objdump 用於顯示內聯函數的嵌套信息的工具。
  • nm 工具獲得了新的選擇 --with-version-strings 顯示符號名稱後的版本信息(如果存在)。

(BZ#1641004, BZ#1637072, BZ#1501420, BZ#1504114, BZ#1614908, BZ#1614920)

執行副駕駛 版本4.1.3

Red Hat Enterprise Linux 8隨附 績效副駕駛 (pcp)4.1.3版。顯著的改進包括:

  • pcp-dstat 工具現在包括歷史分析和逗號分隔值(CSV)格式輸出。
  • 日誌實用程序可以使用度量標籤和幫助文本記錄。
  • pmdaperfevent 工具現在可以在較低的同步多線程(SMT)級別報告正確的CPU編號。
  • pmdapostgresql 工具現在支持 Postgres的 系列10.x.
  • pmdaredis 工具現在支持 Redis的 5.x系列
  • pmdabcc 工具已通過動態流程過濾和每進程系統調用,ucalls和ustat得到增強。
  • pmdammv 工具現在導出度量標籤,格式版本增加到3。
  • pmdagfs2 工具支持額外的格洛克和格洛克持有人指標。
  • 已對SELinux策略進行了一些修復。

(BZ#1641034)

內存保護密鑰

此更新啟用了允許每線程頁面保護標誌更改的硬件功能。新的 glibc 系統調用包裝器已添加為 pkey_alloc(), ,pkey_free(), ,和 pkey_mprotect() 功能。除此之外 pkey_set()pkey_get() 添加了函數以允許訪問每線程保護標誌。

(BZ#1304448)

elfutils 已更新至0.174版

在Red Hat Enterprise Linux 8中 的elfutils 軟件包的版本號為0.174。值得注意的變化包括:

  • 以前, eu-readelf 工具可以顯示具有負值的變量,就好像它具有較大的無符號值,或者將大的無符號值顯示為負值。這已得到糾正 eu-readelf 現在查找常量值類型的大小和符號以正確顯示它們。
  • 一個新功能 dwarf_next_lines() 閱讀 .debug_line 缺少CU的數據已被添加到 libdw 圖書館。此功能可用作替代 dwarf_getsrclines()dwarf_getsrcfiles() 功能。
  • 以前,超過65280節的文件可能會導致錯誤 了libelflibdw 庫和使用它們的所有工具。此錯誤已得到修復。結果,延長了 shnumshstrndx 正確處理ELF文件頭中的值。

(BZ#1641007)

Valgrind已更新至3.14版

Red Hat Enterprise Linux 8隨Valgrind可執行代碼分析工具3.14版一起發布。值得注意的變化包括:

  • 一個新的 --keep-debuginfo 已添加選項以保留已卸載代碼的調試信息。因此,保存的堆棧跟踪可以包含內存中不再存在的代碼的文件和行信息。
  • 已添加基於源文件名和行號的抑制。
  • Helgrind 工具已經擴展了一個選項 --delta-stacktrace 指定完整歷史堆棧跟踪的計算。值得注意的是,與此一起使用此選項 --history-level=full 可以改善 Helgrind 性能高達25%。
  • 假陽性率 Memcheck 用於優化英特爾和AMD 64位架構和ARM 64位架構代碼的工具已經減少。請注意,您可以使用 --expensive-definedness-checks 控制定義檢查的處理並以犧牲性能為代價來提高速率。
  • Valgrind現在可以識別IBM Power Systems的little-endian變體的更多指令。
  • Valgrind現在可以部分處理IBM Z體系結構z13處理器的整數和字符串向量指令。

有關新選項及其已知限制的詳細信息,請參閱 valgrind(1) 手冊頁。

(BZ#1641029, BZ#1501419)

GDB版本8.2

Red Hat Enterprise Linux 8隨GDB調試器版本8.2一起發布。值得注意的變化包括:

  • 支持IPv6協議進行GDB和GDB的遠程調試 gdbserver
  • 沒有調試信息的調試已得到改進。
  • GDB用戶界面中的符號完成已得到改進,通過使用更多語法結構(如ABI標記或命名空間)提供更好的建議。
  • 命令現在可以在後台執行。
  • 現在可以使用Rust編程語言創建調試程序。
  • 調試C和C ++語言已得到改進,解析器支持 _Alignofalignof 運算符,C ++右值引用和C99可變長度自動數組。
  • GDB擴展腳本現在可以使用Guile腳本語言。
  • 擴展的Python腳本語言接口已經通過新的API函數,框架裝飾器,過濾器和展開器進行了改進。另外,腳本在 .debug_gdb_scripts GDB配置部分自動加載。
  • GDB現在使用Python版本3來運行其腳本,包括漂亮的打印機,幀裝飾器,過濾器和展開器。
  • ARM和64位ARM體系結構已通過流程執行記錄和重放進行了改進,包括Thumb 32位和系統調用指令。
  • 增加了對英特爾MPX寄存器和綁定違規,PKU寄存器和英特爾處理器跟踪的支持。
  • 記錄和重播功能已擴展到包括 rdrandrdseed 有關基於Intel的系統的說明。
  • GDB在IBM Z體系結構上的功能已得到擴展,支持跟踪點和快速跟踪點,向量寄存器和ABI,以及 Catch 系統調用。此外,GDB現在支持該架構的最新指令。
  • GDB現在可以在64位ARM體系結構上使用SystemTap靜態用戶空間探測器(SDT)。

(BZ#1641022, BZ#1497096, BZ#1505346, BZ#1592332)

RHEL的本地化分佈在多個包中

在RHEL 8中,單一不再提供語言環境和翻譯 glibc-common 包。相反,每個語言環境和語言都可用 glibc-langpack-CODE 包。此外,默認情況下不會安裝所有語言環境,只會在安裝程序中選擇這些語言環境。用戶必須單獨安裝所需的所有其他語言環境包。

有關使用langpacks的更多信息,請參閱 Installing and using langpacks

(BZ#1512009)

strace 已更新至4.24版

Red Hat Enterprise Linux 8隨附了 strace 工具版本4.24。值得注意的變化包括:

  • 系統調用篡改功能已添加 -e inject= 選項。這包括注入錯誤,返回值,延遲和信號。
  • 系統調用資格已得到改進:

    • 一個 -e trace=/regex 已添加選項以使用正則表達式過濾系統調用。
    • 將問號添加到系統調用資格中 -e trace= 選項讓 strace 即使資格與任何系統調用都不匹配,也要繼續。
    • 個性化指定已被添加到系統調用資格中 -e trace 選項。
  • 解碼 kvm vcpu 退出原因已被添加。為此,請使用 -e kvm=vcpu 選項。
  • libdw 庫現在用於堆棧展開時 -k 使用選項。此外,當符號消除時,符號消除是可能的 libiberty 庫已安裝在系統上。
  • 以前, -r 選項造成的 strace 忽略了 -t 選項。這已經修復,現在兩個選項是獨立的。
  • 添加了[option]`-A選項,用於在追加模式下打開輸出文件。
  • -X 已添加選項以進行配置 xlat 輸出格式。
  • 使用。解碼套接字地址 -yy 選項已得到改進。另外,打印塊和字符設備號 -yy 模式已添加。

此外,還添加,改進或更新了以下項目的解碼:

  • netlink 協議,消息和屬性
  • arch_prctlbpf, ,getsockopt, ,io_pgetevent, ,kern_features, ,keyctl, ,prctl, ,pkey_alloc, ,pkey_free, ,pkey_mprotect, ,ptrace, ,rseq, ,setsockopt, ,socket, ,statx 和其他系統調用
  • 很多命令 ioctl 系統調用
  • 各種常數
  • 路徑追踪 execveat, ,inotify_add_watch, ,inotify_init, ,select, ,symlink, ,symlinkat 系統調用和 mmap 系統調用間接參數
  • 特定於ARM體系結構的系統調用 __ARM_NR_*
  • 信號代碼列表

(BZ#1641014)