“ compiler-rt”运行时runtime库
“ compiler-rt”運行時runtime庫
編譯器-rt項目包括:
? Builtins-一個簡單的庫,提供了代碼生成和其他運行時runtime組件所需的特定于目標的低級接口。例如,當為32位目標進行編譯時,將雙精度數(shù)轉換為64位無符號整數(shù)將編譯為對“ __fixunsdfdi”函數(shù)的運行時runtime調用。內置庫以與目標無關的C形式或經過高度優(yōu)化的程序集的形式提供了此示例和其他低級示例的優(yōu)化實現(xiàn)。
內建函數(shù)為受支持的目標上的libgcc接口提供了全面支持,并為匯編中的常用功能(如__floatundidf)提供了高性能的手動調試實現(xiàn),這些實現(xiàn)比libgcc實現(xiàn)快得多。通過添加內置目標來支持新目標應該很容易,因為該目標需要添加新的示例。
? sanitizer運行時runtime-使用sanitizer工具運行代碼所需的運行時runtime庫。這包括以下運行時runtime:
? AddressSanitizer
? ThreadSanitizer
? UndefinedBehaviorSanitizer
? MemorySanitizer
? LeakSanitizer
? DataFlowSanitizer
? profile -用于收集覆蓋范圍信息的庫。
? BlocksRuntime-蘋果“ Blocks”運行時runtime接口的與目標無關的實現(xiàn)。
根據(jù)MIT許可證和UIUC許可證(類似于BSD的許可證),compiler-rt項目中的所有代碼均具有雙重許可。
客戶群
當前,Clang 和LLVM項目主要將editor -rt用作運行時runtime編譯器支持庫的實現(xiàn)。有關將C ++編譯器與Clang一起使用的更多信息,請參見Clang 入門 文檔。
平臺支援
已知buildin可在以下平臺上工作:
? 硬件架構:i386,X86-64,SPARC64,ARM,PowerPC,PowerPC 64。
? 操作系統(tǒng):AuroraUX,DragonFlyBSD,FreeBSD,NetBSD,Linux,Darwin。
大多數(shù)sanitizer運行時runtime僅在Linux x86-64上受支持。有關更多詳細信息,請參見Clang文檔中特定于工具的文檔。
源結構
編譯器-rt的目錄結構的簡短說明:
為了進行測試,可以構建通用庫和優(yōu)化庫。通過將優(yōu)化版本覆蓋到通用庫上來形成優(yōu)化庫。當然,某些體系結構具有附加功能,因此優(yōu)化庫可能具有通用版本中找不到的功能。
? include /包含可以包含在用戶程序中的header(例如,用戶可以直接從sanitizer運行時runtime調用某些函數(shù))。
? lib /包含庫實現(xiàn)。
? lib / builtins是內置示例的通用可移植實現(xiàn)。
? lib / builtins /(arch)為支持的體系結構優(yōu)化了某些示例的版本。
? test /包含用于compile-rt運行時runtime的測試套件。
得到它并參與其中!
通常,需要構建LLVM / Clang才能構建Compiler-rt。可以將其與llvm和clang一起構建,也可以分別構建。
要將其構建在一起,只需將compile-rt添加到-DLLVM_ENABLE_PROJECTS =option to cmake。
要單獨構建它,首先分別 構建LLVM 以獲得llvm-config二進制文件,然后運行:
? cd llvm-project
? mkdir build-compiler-rt
? cd build-compiler-rt
? cmake …/compiler-rt -DLLVM_CONFIG_PATH = / path / to / llvm-config
? make
sanitizer運行時runtime的測試已移植到 llvm-lit,并通過LLVM / Clang / compiler-rt構建樹中的make check-all命令運行。
使用LLVM / Clang / compiler-rt或獨立的compile-rt構建樹中的make install命令將編譯器RT庫安裝到系統(tǒng)中。
compile-rt沒有自己的郵件列表,如果有任何疑問,請通過電子郵件發(fā)送llvm-dev郵件列表。提交到editor-rt SVN模塊的信息將自動發(fā)送到 llvm-commits 郵件列表。
總結
以上是生活随笔為你收集整理的“ compiler-rt”运行时runtime库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Clang:LLVM的C语言家族前端
- 下一篇: 多级中间表示概述MLIR