<feed xmlns='http://www.w3.org/2005/Atom'>
<title>llvm-project.git/llvm/lib/ExecutionEngine/JITLink/aarch64.cpp, branch users/nico/python-2</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>[ExecutionEngine] Remove unnecessary casts (NFC) (#146218)</title>
<updated>2025-06-28T20:03:45+00:00</updated>
<author>
<name>Kazu Hirata</name>
<email>kazu@google.com</email>
</author>
<published>2025-06-28T20:03:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=289c066ac47488a13db13844f1befb295188d51c'/>
<id>289c066ac47488a13db13844f1befb295188d51c</id>
<content type='text'>
R and K are already of Edge::Kind in all these cases.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
R and K are already of Edge::Kind in all these cases.</pre>
</div>
</content>
</entry>
<entry>
<title>[JITLink][MachO][arm64] Don't lower ptrauth edges in noalloc-lifetime sections.</title>
<updated>2025-04-01T11:18:00+00:00</updated>
<author>
<name>Lang Hames</name>
<email>lhames@gmail.com</email>
</author>
<published>2025-04-01T10:56:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=191e0622e84a215c1d632412561c2fe6ccd86170'/>
<id>191e0622e84a215c1d632412561c2fe6ccd86170</id>
<content type='text'>
Ptrauth relocations can only be fixed up in the executing process, but noalloc
sections do not have any memory in the executing process. Failure to skip
ptrauth edges results in signing instructions that operate on invalid addresses,
leading to segfaults or data corruption.

Ignoring noalloc sections for ptrauth lowering purposes allows the ptrauth
edges to persist until they reach the applyFixup method, at which point they
raise a useful error and cleanly terminate linking.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Ptrauth relocations can only be fixed up in the executing process, but noalloc
sections do not have any memory in the executing process. Failure to skip
ptrauth edges results in signing instructions that operate on invalid addresses,
leading to segfaults or data corruption.

Ignoring noalloc sections for ptrauth lowering purposes allows the ptrauth
edges to persist until they reach the applyFixup method, at which point they
raise a useful error and cleanly terminate linking.
</pre>
</div>
</content>
</entry>
<entry>
<title>[JITLink][AArch64] Ensure that nulls remain null during ptrauth signing.</title>
<updated>2025-02-28T04:19:41+00:00</updated>
<author>
<name>Lang Hames</name>
<email>lhames@gmail.com</email>
</author>
<published>2025-02-28T04:08:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=84934674907781c50494a125889ed16e23de2b9f'/>
<id>84934674907781c50494a125889ed16e23de2b9f</id>
<content type='text'>
Signing a null pointer value can, and usually will, result in some high bits
being set, causing null checks to fail. E.g. in

extern void __attribute__((weak_import)) f(void);
void (*p) = &amp;f;

if f is undefined then p should be null (left unsigned).

This patch updates lowerPointer64AuthEdgesToSigningFunction to check for
Pointer64Authenticated edges to null targets. Where found, these edges are
turned into plain Pointer64 edges (which we know from context will write a null
value to the fixup location), and signing instructions for these locations are
omitted from the signing function.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signing a null pointer value can, and usually will, result in some high bits
being set, causing null checks to fail. E.g. in

extern void __attribute__((weak_import)) f(void);
void (*p) = &amp;f;

if f is undefined then p should be null (left unsigned).

This patch updates lowerPointer64AuthEdgesToSigningFunction to check for
Pointer64Authenticated edges to null targets. Where found, these edges are
turned into plain Pointer64 edges (which we know from context will write a null
value to the fixup location), and signing instructions for these locations are
omitted from the signing function.
</pre>
</div>
</content>
</entry>
<entry>
<title>[JITLink] Use continue to reduce loop indentation and improve readability. NFC.</title>
<updated>2025-01-28T04:06:12+00:00</updated>
<author>
<name>Lang Hames</name>
<email>lhames@gmail.com</email>
</author>
<published>2025-01-28T04:03:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=5ab43c3e7d9b5dc0ca4fffa58c65fc6f7283d3c0'/>
<id>5ab43c3e7d9b5dc0ca4fffa58c65fc6f7283d3c0</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>[JITLink][aarch64] Fix dependence tracking for Pointer64Authenticated edges.</title>
<updated>2025-01-28T03:57:49+00:00</updated>
<author>
<name>Lang Hames</name>
<email>lhames@gmail.com</email>
</author>
<published>2025-01-28T03:46:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=79685b59b78804f99e46f12ac888edbc0a6d1472'/>
<id>79685b59b78804f99e46f12ac888edbc0a6d1472</id>
<content type='text'>
Transform Pointer64Authenticated edges into KeepAlive edges, rather than
removing them, in order to preserve symbol dependence information.

The lowerPointer64AuthEdgesToSigningFunction pass is responsible for
transforming Pointer64Authenticated edges to a signing function that can be run
in the executing process to initialize global PAC pointers. Removing the edges
entirely in this pass results in loss of dependence tracking, which can in turn
cause ORC to report PAC pointers as ready before the pointers targets have
completed materialization (resulting in a use-before-finalize error, often
manifesting as access to uninitialized / unprotected memory).

This commit addresses the issue by leaving the edges in the graph and simply
changing their kind to KeepAlive, a no-op for fixup purposes but followed for
dependence tracking purposes.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Transform Pointer64Authenticated edges into KeepAlive edges, rather than
removing them, in order to preserve symbol dependence information.

The lowerPointer64AuthEdgesToSigningFunction pass is responsible for
transforming Pointer64Authenticated edges to a signing function that can be run
in the executing process to initialize global PAC pointers. Removing the edges
entirely in this pass results in loss of dependence tracking, which can in turn
cause ORC to report PAC pointers as ready before the pointers targets have
completed materialization (resulting in a use-before-finalize error, often
manifesting as access to uninitialized / unprotected memory).

This commit addresses the issue by leaving the edges in the graph and simply
changing their kind to KeepAlive, a no-op for fixup purposes but followed for
dependence tracking purposes.
</pre>
</div>
</content>
</entry>
<entry>
<title>[JITLink] Move debugging output helper array into LLVM_DEBUG. NFC.</title>
<updated>2025-01-28T03:57:49+00:00</updated>
<author>
<name>Lang Hames</name>
<email>lhames@gmail.com</email>
</author>
<published>2025-01-28T03:25:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=8b29c5ccddb87ac7336a700877dc08cdc57ac65b'/>
<id>8b29c5ccddb87ac7336a700877dc08cdc57ac65b</id>
<content type='text'>
This doesn't need a separate guard.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This doesn't need a separate guard.
</pre>
</div>
</content>
</entry>
<entry>
<title>[JITLink] Add "Pointer64Authenticated" string to aarch64::getEdgeKindName.</title>
<updated>2025-01-28T03:12:15+00:00</updated>
<author>
<name>Lang Hames</name>
<email>lhames@gmail.com</email>
</author>
<published>2025-01-28T02:59:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=9c1d2f84e91f39cdd17519ca61bd2aacd8bcbd84'/>
<id>9c1d2f84e91f39cdd17519ca61bd2aacd8bcbd84</id>
<content type='text'>
No testcase: this change just allows edge names to be correctly reported in
debug dumps of LinkGraphs. (Previously Pointer64Authenticated edges were
reported as "&lt;Unrecognized edge kind&gt;").
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
No testcase: this change just allows edge names to be correctly reported in
debug dumps of LinkGraphs. (Previously Pointer64Authenticated edges were
reported as "&lt;Unrecognized edge kind&gt;").
</pre>
</div>
</content>
</entry>
<entry>
<title>[JITLink] Teach aarch64 GOT &amp; PLT table managers to discover existing entries.</title>
<updated>2025-01-14T08:54:55+00:00</updated>
<author>
<name>Lang Hames</name>
<email>lhames@gmail.com</email>
</author>
<published>2025-01-14T08:41:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=42595bdaefb6b066896c20b69ab66ff2a7fe8477'/>
<id>42595bdaefb6b066896c20b69ab66ff2a7fe8477</id>
<content type='text'>
aarch64::GOTTableManager and aarch64::PLTTableManager will now look for
existing GOT and PLT sections and re-use existing entries if they're present.

This will be used for an upcoming MachO patch to enable compact unwind support.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
aarch64::GOTTableManager and aarch64::PLTTableManager will now look for
existing GOT and PLT sections and re-use existing entries if they're present.

This will be used for an upcoming MachO patch to enable compact unwind support.
</pre>
</div>
</content>
</entry>
<entry>
<title>Reapply "[ORC] Introduce LazyReexportsManager, ... (#118923)" with fixes.</title>
<updated>2024-12-09T03:22:51+00:00</updated>
<author>
<name>Lang Hames</name>
<email>lhames@gmail.com</email>
</author>
<published>2024-12-09T01:44:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=f2d18a4d00c5f5dea436b4f7b62ec5c87b98eac2'/>
<id>f2d18a4d00c5f5dea436b4f7b62ec5c87b98eac2</id>
<content type='text'>
This re-applies 570ecdcf8b4, which was reverted in 74e8a37ff32 due to bot
failures. This commit renames sysv_resolve.cpp to resolve.cpp, which was the
cause of the config errors.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This re-applies 570ecdcf8b4, which was reverted in 74e8a37ff32 due to bot
failures. This commit renames sysv_resolve.cpp to resolve.cpp, which was the
cause of the config errors.
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "Reapply "[ORC] Introduce LazyReexportsManager, … (#118923)" with fixes"</title>
<updated>2024-12-09T01:38:59+00:00</updated>
<author>
<name>Lang Hames</name>
<email>lhames@gmail.com</email>
</author>
<published>2024-12-09T01:38:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.belthelziquor.com/llvm-project.git/commit/?id=74e8a37ff32e599fd40858e0d6c7e531dcbe4e03'/>
<id>74e8a37ff32e599fd40858e0d6c7e531dcbe4e03</id>
<content type='text'>
This reverts commit 41652c6c92958a87b8505b9b1e6f008856e392ac while I investigate
more bot failures.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 41652c6c92958a87b8505b9b1e6f008856e392ac while I investigate
more bot failures.
</pre>
</div>
</content>
</entry>
</feed>
