| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[BOLT] Fix incorrect basic block output addresses (#70000) Some optimization passes may duplicate basic blocks and assign the same input offset to a number of different blocks in a function. This is done e.g. to correctly map debugging ranges for duplicated code. However, duplicate input offsets present a problem when we use AddressMap to generate new addresses for basic blocks. The output address is calculated based on the input offset and will be the same for blocks with identical offsets. The result is potentially incorrect debug info and BAT records. To address the issue, we have to eliminate the dependency on input offsets while generating output addresses for a basic block. Each block has a unique label, hence we extend AddressMap to include address lookup based on MCSymbol and use the new functionality to update block addresses. | 2 年前 | |
[BOLT] Remove redundant declarations (NFC) (#166893) In C++17, static constexpr members are implicitly inline, so they no longer require an out-of-line definition. Identified with readability-redundant-declaration. | 9 个月前 | |
[BOLT] Refactor tracking internals of BinaryFunction. NFCI (#167074) In addition to tracking offsets inside a BinaryFunction that are referenced by data relocations, we need to track those relocations too. Plus, we will need to map symbols referenced by such relocations back to the containing function. This change introduces BinaryFunction::InternalRefDataRelocations to track the aforementioned relocations and expands BinaryContext::SymbolToFunctionMap to include local/temp symbols involved in relocation processing. There is no functional change introduced that should affect the output. Future PRs will use the new tracking capabilities. | 9 个月前 | |
| 1 年前 | ||
[BOLT] Fix debug line emission for functions in multiple compilation units (#151230) This patch fixes a bug in BOLT's debug line emission where functions that belong to multiple compilation units (such as inline functions in header files) were not handled correctly. Previously, BOLT incorrectly assumed that a binary function could belong to only one compilation unit, leading to incomplete or incorrect debug line information. ### **Problem** When a function appears in multiple compilation units (common scenarios include): * Template instantiated functions * Inline functions defined in header files included by multiple source files BOLT would only emit debug line information for one compilation unit, losing debug information for other CUs where the function was compiled. This resulted in incomplete debugging information and could cause debuggers to fail to set breakpoints or show incorrect source locations. ### **Root Cause** The issue was in BOLT's assumption that each binary function maps to exactly one compilation unit. However, when the same function (e.g., an inline function from a header) is compiled into multiple object files, it legitimately belongs to multiple CUs in the final binary. | 11 个月前 | |
[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. | 9 个月前 | |
[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 | 10 个月前 | |
[BOLT][NFC] Disambiguate sample as basic sample (#139350) Sample is a general term covering both basic (IP) and branch (LBR) profiles. Find and replace ambiguous uses of sample in a basic sample sense. Rename RawBranchCount into RawSampleCount reflecting its use for both kinds of profile. Rename PF_LBR profile type as PF_BRANCH reflecting non-LBR based branch profiles (non-brstack SPE, synthesized brstack ETM/PT). Follow-up to #137644. Test Plan: NFC | 1 年前 | |
[BOLT] Refactor undefined symbols handling. NFCI (#167075) Remove internal undefined symbol tracking and instead rely on the emission state of MCSymbol while processing data-to-code relocations. Note that CleanMCState pass resets the state of all MCSymbols prior to code emission. | 9 个月前 | |
[BOLT] Refactor MCInstReference and move it to Core (NFC) (#155846) Refactor MCInstReference class and move it from PAuth gadget scanner to Core. MCInstReference is a class representing a reference to a constant instruction inside a parent entity - either inside a basic block (which has a reference to its parent function) or directly inside a function (when CFG information is not available). This patch reapplies #138655 with a fix for iterator usage and multiple minor issues fixed during the second round of review. | 10 个月前 | |
[BOLT] Replace LLVM_ATTRIBUTE_UNUSED with [[maybe_unused]] (NFC) (#163700) This patch replaces LLVM_ATTRIBUTE_UNUSED with [[maybe_unused]], introduced as part of C++17. | 10 个月前 | |
[BOLT][NFC] Move CallGraph from Passes to Core (#96922) Moved CallGraph and BinaryFunctionCallGraph from Passes to Core for future use in stale matching. | 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 | 10 个月前 | |
[BOLT] Replace LLVM_ATTRIBUTE_UNUSED with [[maybe_unused]] (NFC) (#163700) This patch replaces LLVM_ATTRIBUTE_UNUSED with [[maybe_unused]], introduced as part of C++17. | 10 个月前 | |
[BOLT] Use DenseMap::contains (NFC) (#167169) Identified with readability-container-contains. | 9 个月前 | |
[BOLT] Remove redundant declarations (NFC) (#166893) In C++17, static constexpr members are implicitly inline, so they no longer require an out-of-line definition. Identified with readability-redundant-declaration. | 9 个月前 | |
Reapply "[BOLT][AArch64] Handle OpNegateRAState to enable optimizing binaries with pac-ret hardening" (#162353) (#162435) Reapply "[BOLT][AArch64] Handle OpNegateRAState to enable optimizing binaries with pac-ret hardening (#120064)" (#162353) This reverts commit c7d776b06897567e2d698e447d80279664b67d47. #120064 was reverted for breaking builders. Fix: changed the mismatched type in MarkRAStates.cpp to auto. --- Original message: OpNegateRAState is an AArch64-specific DWARF CFI used to change the value of the RA_SIGN_STATE pseudoregister. The RA_SIGN_STATE register records whether the current return address has been signed with PAC. OpNegateRAState requires special handling in BOLT because its placement depends on the function layout. Since BOLT reorders basic blocks during optimization, these CFIs must be regenerated after layout is finalized. This patch introduces two new passes: - MarkRAStates (runs before optimizations): assigns a signedness annotation to each instruction based on OpNegateRAState CFIs in the input binary. - InsertNegateRAStates (runs after optimizations): reads the annotations and emits new OpNegateRAState CFIs where RA state changes between instructions. Design details are described in: bolt/docs/PacRetDesign.md. | 10 个月前 | |
| 10 个月前 | ||
[BOLT] Don't emit invalid (gdb-breaking) address ranges in gdb-index (#151923) Empty address map ranges in gdb-index break gdb, so don't emit them | 10 个月前 | |
BOLT: Replace MCTargetExpr with MCSpecifierExpr to fix bolt-icf.test on aarch64 host | 1 年前 | |
[BOLT] Change Relocation Type to 32-bit NFCI (#130792) | 1 年前 | |
[BOLT] Refactor MCInstReference and move it to Core (NFC) (#155846) Refactor MCInstReference class and move it from PAuth gadget scanner to Core. MCInstReference is a class representing a reference to a constant instruction inside a parent entity - either inside a basic block (which has a reference to its parent function) or directly inside a function (when CFG information is not available). This patch reapplies #138655 with a fix for iterator usage and multiple minor issues fixed during the second round of review. | 10 个月前 | |
[BOLT] Simplify RAState helpers (NFCI) (#162820) - unify isRAStateSigned and isRAStateUnsigned to a common getRAState, - unify setRASigned and setRAUnsigned into setRAState(MCInst, bool), - update users of these to match the new implementations. | 9 个月前 | |
[BOLT] Remove redundant calls to std::unique_ptr<T>::get (NFC) (#139403) | 1 年前 | |
[BOLT][AArch64] Fix printing of relocation types (#166621) Enumeration of relocation types is not always sequential, e.g. on AArch64 the first real relocation type is 0x101. As such, the existing code in Relocation::print() was crashing while printing AArch64 relocations. Fix it by using llvm::object::getELFRelocationTypeName(). | 9 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 年前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 11 个月前 | ||
| 9 个月前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 9 个月前 | ||
| 10 个月前 | ||
| 10 个月前 | ||
| 2 年前 | ||
| 10 个月前 | ||
| 10 个月前 | ||
| 9 个月前 | ||
| 9 个月前 | ||
| 10 个月前 | ||
| 10 个月前 | ||
| 10 个月前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 10 个月前 | ||
| 9 个月前 | ||
| 1 年前 | ||
| 9 个月前 |