| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[BOLT][AArch64] Run LDR relaxation (#165787) Replace the current ADRRelaxationPass with AArch64RelaxationPass, which, besides the existing ADR relaxation, will also run LDR relaxation that for now only handles these two forms of LDR instructions: ldr Xt, [label] and ldr Wt, [label]. | 9 个月前 | |
[BOLT] Add support for safe-icf (#116275) Identical Code Folding (ICF) folds functions that are identical into one function, and updates symbol addresses to the new address. This reduces the size of a binary, but can lead to problems. For example when function pointers are compared. This can be done either explicitly in the code or generated IR by optimization passes like Indirect Call Promotion (ICP). After ICF what used to be two different addresses become the same address. This can lead to a different code path being taken. This is where safe ICF comes in. Linker (LLD) does it using address significant section generated by clang. If symbol is in it, or an object doesn't have this section symbols are not folded. BOLT does not have the information regarding which objects do not have this section, so can't re-use this mechanism. This implementation scans code section and conservatively marks functions symbols as unsafe. It treats symbols as unsafe if they are used in non-control flow instruction. It also scans through the data relocation sections and does the same for relocations that reference a function symbol. The latter handles the case when function pointer is stored in a local or global variable, etc. If a relocation address points within a vtable these symbols are skipped. | 1 年前 | |
[bolt] Fix typos discovered by codespell (#124726) https://github.com/codespell-project/codespell bash codespell bolt --skip="*.yaml,Maintainers.txt" --write-changes \ --ignore-words-list=acount,alledges,ans,archtype,defin,iself,mis,mmaped,othere,outweight,vas | 9 个月前 | |
[BOLT] Support restartable sequences in tcmalloc (#167195) Add RSeqRewriter to detect code references from __rseq_cs section and ignore function referenced from that section. Code references are detected via relocations (static or dynamic). Note that the abort handler is preceded by a 4-byte signature byte sequence and we cannot relocate the handler without that the signature, otherwise the application may crash. Thus we are ignoring the function, i.e. making sure it's not separated from its signature. | 8 个月前 | |
| 8 个月前 | ||
[BOLT] Use StringRef::{starts,ends}_with (NFC) This patch replaces uses of StringRef::{starts,ends}with with StringRef::{starts,ends}_with for consistency with std::{string,string_view}::{starts,ends}_with in C++20. I'm planning to deprecate and eventually remove StringRef::{starts,ends}with. | 2 年前 | |
[BOLT] Add GNUPropertyRewriter and warn on AArch64 BTI note (#161206) This commit adds the GNUPropertyRewriter, which parses features from the .note.gnu.property section. Currently we only read the bit indicating BTI support (GNU_PROPERTY_AARCH64_FEATURE_1_BTI). As BOLT does not add BTI landing pads to targets of indirect branches/calls, we have to emit a warning that the output binary may be corrupted. | 10 个月前 | |
[BOLT][Linker][NFC] Remove lookupSymbol() in favor of lookupSymbolInfo() (#128070) Sometimes we need to know the size of a symbol besides its address, so maybe we can start using the existing BOLTLinker::lookupSymbolInfo() (that returns symbol address and size) and remove BOLTLinker::lookupSymbol() (that only returns symbol address). And for both we need to check return value as it is wrapped in std::optional<>, which makes the difference even smaller. | 1 年前 | |
| 1 年前 | ||
[BOLT] Remove redundant calls to std::unique_ptr<T>::get (NFC) (#139403) | 1 年前 | |
[BOLT] Use rewriter interface for updating binary build ID (#94273) Move functionality for patching build ID into a separate rewriter class and change the way we do the patching. Support build ID in different note sections in order to update the build ID in the Linux kernel binary which puts in into ".notes" section instead of ".note.gnu.build-id". | 2 年前 | |
[bolt] Fix typos discovered by codespell (#124726) https://github.com/codespell-project/codespell bash codespell bolt --skip="*.yaml,Maintainers.txt" --write-changes \ --ignore-words-list=acount,alledges,ans,archtype,defin,iself,mis,mmaped,othere,outweight,vas | 9 个月前 | |
[BOLT] Support restartable sequences in tcmalloc (#167195) Add RSeqRewriter to detect code references from __rseq_cs section and ignore function referenced from that section. Code references are detected via relocations (static or dynamic). Note that the abort handler is preceded by a 4-byte signature byte sequence and we cannot relocate the handler without that the signature, otherwise the application may crash. Thus we are ignoring the function, i.e. making sure it's not separated from its signature. | 8 个月前 | |
[BOLT][print] Add option '--print-only-file' (NFC) (#168023) With this option we can pass to BOLT names of functions to be printed through a file instead of specifying them all on command line. | 8 个月前 | |
Use StringRef::operator== instead of StringRef::equals (NFC) (#91864) I'm planning to remove StringRef::equals in favor of StringRef::operator==. - StringRef::operator==/!= outnumber StringRef::equals by a factor of 276 under llvm-project/ in terms of their usage. - The elimination of StringRef::equals brings StringRef closer to std::string_view, which has operator== but not equals. - S == "foo" is more readable than S.equals("foo"), especially for !Long.Expression.equals("str") vs Long.Expression != "str". | 2 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 9 个月前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 2 年前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 年前 | ||
| 9 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 2 年前 |