<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/bolt/lib/Core/BinaryFunction.cpp, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/'/>
<entry>
<title>[BOLT][print] Add option '--print-only-file' (NFC) (#168023)</title>
<updated>2025-11-14T18:26:21+00:00</updated>
<author>
<name>YongKang Zhu</name>
<email>yongzhu@fb.com</email>
</author>
<published>2025-11-14T18:26:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=ac6daa8181894e34b8cf8e5c3e065f64035fcd36'/>
<id>ac6daa8181894e34b8cf8e5c3e065f64035fcd36</id>
<content type='text'>
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.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.</pre>
</div>
</content>
</entry>
<entry>
<title>[BOLT][AArch64] Add more heuristics on epilogue determination (#167077)</title>
<updated>2025-11-10T17:50:44+00:00</updated>
<author>
<name>YongKang Zhu</name>
<email>yongzhu@fb.com</email>
</author>
<published>2025-11-10T17:50:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=4cd16f2a0ccbcd3421a787260cf873353bf9292e'/>
<id>4cd16f2a0ccbcd3421a787260cf873353bf9292e</id>
<content type='text'>
Add more heuristics to check if a basic block is an AArch64 epilogue. We
assume instructions that load from stack or adjust stack pointer as
valid epilogue code sequence if and only if they immediately precede the
branch instruction that ends the basic block.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add more heuristics to check if a basic block is an AArch64 epilogue. We
assume instructions that load from stack or adjust stack pointer as
valid epilogue code sequence if and only if they immediately precede the
branch instruction that ends the basic block.</pre>
</div>
</content>
</entry>
<entry>
<title>[BOLT] Refactor undefined symbols handling. NFCI (#167075)</title>
<updated>2025-11-08T03:42:05+00:00</updated>
<author>
<name>Maksim Panchenko</name>
<email>maks@fb.com</email>
</author>
<published>2025-11-08T03:42:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=7af2b56dd539bdec977801952481c7e585a672a5'/>
<id>7af2b56dd539bdec977801952481c7e585a672a5</id>
<content type='text'>
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 `MCSymbol`s prior
to code emission.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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 `MCSymbol`s prior
to code emission.</pre>
</div>
</content>
</entry>
<entry>
<title>[BOLT] Refactor handling of branch targets. NFCI (#165828)</title>
<updated>2025-10-31T15:56:30+00:00</updated>
<author>
<name>Maksim Panchenko</name>
<email>maks@fb.com</email>
</author>
<published>2025-10-31T15:56:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=7c01a905451644c3a195bc32e1b866d3261b5ecc'/>
<id>7c01a905451644c3a195bc32e1b866d3261b5ecc</id>
<content type='text'>
Refactor code that verifies external branch destinations and creates
secondary entry points.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Refactor code that verifies external branch destinations and creates
secondary entry points.</pre>
</div>
</content>
</entry>
<entry>
<title>[BOLT] Add constant island check in scanExternalRefs() (#165577)</title>
<updated>2025-10-31T02:29:00+00:00</updated>
<author>
<name>Jinjie Huang</name>
<email>huangjinjie@bytedance.com</email>
</author>
<published>2025-10-31T02:29:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=6ba2127a5cbe87a97a01ee73b2ef2c4681203b8c'/>
<id>6ba2127a5cbe87a97a01ee73b2ef2c4681203b8c</id>
<content type='text'>
The [previous patch](https://github.com/llvm/llvm-project/pull/163418)
has added a check to prevent adding an entry point into a constant
island, but only for successfully disassembled functions.

Because scanExternalRefs() is also called when a function fails to be
disassembled or is skipped, it can still attempt to add an entry point
at constant islands. The same issue may occur if without a check for it

So, this patch complements the 'constant island' check in
scanExternalRefs().</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The [previous patch](https://github.com/llvm/llvm-project/pull/163418)
has added a check to prevent adding an entry point into a constant
island, but only for successfully disassembled functions.

Because scanExternalRefs() is also called when a function fails to be
disassembled or is skipped, it can still attempt to add an entry point
at constant islands. The same issue may occur if without a check for it

So, this patch complements the 'constant island' check in
scanExternalRefs().</pre>
</div>
</content>
</entry>
<entry>
<title>[BOLT] Remove CreatePastEnd parameter in getOrCreateLocalLabel(). NFC (#165065)</title>
<updated>2025-10-26T05:16:15+00:00</updated>
<author>
<name>Maksim Panchenko</name>
<email>maks@fb.com</email>
</author>
<published>2025-10-26T05:16:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=cd27741c1111f8a97af5fbca4153fa94f50ed9f3'/>
<id>cd27741c1111f8a97af5fbca4153fa94f50ed9f3</id>
<content type='text'>
CreatePastEnd parameter had no effect on the label creation. Remove it.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
CreatePastEnd parameter had no effect on the label creation. Remove it.</pre>
</div>
</content>
</entry>
<entry>
<title>[BOLT][AArch64] Validate code padding (#164037)</title>
<updated>2025-10-23T03:25:06+00:00</updated>
<author>
<name>YongKang Zhu</name>
<email>yongzhu@fb.com</email>
</author>
<published>2025-10-23T03:25:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=e1ae12640102fd2b05bc567243580f90acb1135f'/>
<id>e1ae12640102fd2b05bc567243580f90acb1135f</id>
<content type='text'>
Check whether AArch64 function code padding is valid,
and add an option to treat invalid code padding as error.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Check whether AArch64 function code padding is valid,
and add an option to treat invalid code padding as error.</pre>
</div>
</content>
</entry>
<entry>
<title>[bolt] Fix typos discovered by codespell (#124726)</title>
<updated>2025-10-14T12:45:40+00:00</updated>
<author>
<name>Christian Clauss</name>
<email>cclauss@me.com</email>
</author>
<published>2025-10-14T12:45:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=0fc05aa1c6d76a1830f2cf9227e15b168ccc1c08'/>
<id>0fc05aa1c6d76a1830f2cf9227e15b168ccc1c08</id>
<content type='text'>
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
```</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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
```</pre>
</div>
</content>
</entry>
<entry>
<title>Reapply "[BOLT][AArch64] Handle OpNegateRAState to enable optimizing binaries with pac-ret hardening" (#162353) (#162435)</title>
<updated>2025-10-08T09:05:41+00:00</updated>
<author>
<name>Gergely Bálint</name>
<email>gergely.balint@arm.com</email>
</author>
<published>2025-10-08T09:05:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=889bfd91728a8ca8d27d3f0e5605464201bf5b3e'/>
<id>889bfd91728a8ca8d27d3f0e5605464201bf5b3e</id>
<content type='text'>
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`.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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`.</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "[BOLT][AArch64] Handle OpNegateRAState to enable optimizing binaries with pac-ret hardening" (#162353)</title>
<updated>2025-10-07T19:59:18+00:00</updated>
<author>
<name>Gergely Bálint</name>
<email>gergely.balint@arm.com</email>
</author>
<published>2025-10-07T19:59:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=c7d776b06897567e2d698e447d80279664b67d47'/>
<id>c7d776b06897567e2d698e447d80279664b67d47</id>
<content type='text'>
Reverts llvm/llvm-project#120064.

@gulfemsavrun reported that the patch broke toolchain builders.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reverts llvm/llvm-project#120064.

@gulfemsavrun reported that the patch broke toolchain builders.</pre>
</div>
</content>
</entry>
</feed>
