<feed xmlns='http://www.w3.org/2005/Atom'>
<title>wireguard-openbsd/gnu/llvm/lib/Target/Mips, branch jd/queueboosts</title>
<subtitle>WireGuard implementation for the OpenBSD kernel</subtitle>
<id>https://git.zx2c4.com/wireguard-openbsd/atom/gnu/llvm/lib/Target/Mips?h=jd%2Fqueueboosts</id>
<link rel='self' href='https://git.zx2c4.com/wireguard-openbsd/atom/gnu/llvm/lib/Target/Mips?h=jd%2Fqueueboosts'/>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/'/>
<updated>2020-05-23T07:18:50Z</updated>
<entry>
<title>Use a distinct trap code with retguard on mips64.</title>
<updated>2020-05-23T07:18:50Z</updated>
<author>
<name>visa</name>
<email>visa@openbsd.org</email>
</author>
<published>2020-05-23T07:18:50Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=59447aca8d09daa7e01d4745dffe3b139396b8c7'/>
<id>urn:sha1:59447aca8d09daa7e01d4745dffe3b139396b8c7</id>
<content type='text'>
This lets the kernel detect retguard traps and send SIGABRT instead
of SIGEMT.

SIGEMT does not indicate correctly the nature of the error (stack
overflow, violation of control flow). It can confuse the user to restart
the program without further investigation.

Prompted by and OK deraadt@
OK mortimer@
</content>
</entry>
<entry>
<title>Add retguard for octeon/mips64.</title>
<updated>2019-10-25T00:40:56Z</updated>
<author>
<name>mortimer</name>
<email>mortimer@openbsd.org</email>
</author>
<published>2019-10-25T00:40:56Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=52446778f86252aa4533d0b08b871472df4e84f6'/>
<id>urn:sha1:52446778f86252aa4533d0b08b871472df4e84f6</id>
<content type='text'>
For this architecture we use separate retguard prologue and epilogue code
for static or PIC code. In the PIC case we use some additional code before
the retguard epilogue to recover the function start address and the GOT
pointer in order to get the per-function random cookie. Much thanks to
visa@ for suggestions and advice making it all work.

ok deraadt@ visa@
</content>
</entry>
<entry>
<title>Merge LLVM 8.0.1 release.</title>
<updated>2019-09-01T16:37:21Z</updated>
<author>
<name>patrick</name>
<email>patrick@openbsd.org</email>
</author>
<published>2019-09-01T16:37:21Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=d3df0c01b52bb561f932539d0321079fcb70e869'/>
<id>urn:sha1:d3df0c01b52bb561f932539d0321079fcb70e869</id>
<content type='text'>
Tested in snaps and package builds
Tested on amd64 by naddy@
Tested on arm64 by patrick@
Tested on octeon by visa@
</content>
</entry>
<entry>
<title>Import LLVM 8.0.1 release including clang, lld and lldb.</title>
<updated>2019-09-01T16:27:59Z</updated>
<author>
<name>patrick</name>
<email>patrick@openbsd.org</email>
</author>
<published>2019-09-01T16:27:59Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=b19884b112052f3bf5ff9551374fbd840e2339f2'/>
<id>urn:sha1:b19884b112052f3bf5ff9551374fbd840e2339f2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Address a few issues in the expansion of li.d and li.s:</title>
<updated>2019-07-28T13:25:25Z</updated>
<author>
<name>visa</name>
<email>visa@openbsd.org</email>
</author>
<published>2019-07-28T13:25:25Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=63f1d51ba3485ee31405eafae8f0bd217f1ee7b2'/>
<id>urn:sha1:63f1d51ba3485ee31405eafae8f0bd217f1ee7b2</id>
<content type='text'>
- In the N64 mode, properly load the whole immediate value
in the destination register even if the lower 32 bits are zero.
- Ensure correct alignment of memory operands.
- Fix the endianess of memory operands.
</content>
</entry>
<entry>
<title>Fix instruction guard. This prevents the compiler from using</title>
<updated>2019-07-08T05:04:38Z</updated>
<author>
<name>visa</name>
<email>visa@openbsd.org</email>
</author>
<published>2019-07-08T05:04:38Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=8f05d8533ea8eed23c7119ca1b6dc65faf92bccf'/>
<id>urn:sha1:8f05d8533ea8eed23c7119ca1b6dc65faf92bccf</id>
<content type='text'>
the MIPS64 mul instruction on pre-MIPS64 subtargets.
</content>
</entry>
<entry>
<title>Implement the 'h' register constraint on mips64. This lets clang build</title>
<updated>2019-07-01T15:15:53Z</updated>
<author>
<name>visa</name>
<email>visa@openbsd.org</email>
</author>
<published>2019-07-01T15:15:53Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=7c158015691a62568a49a2186cab232e1c7050e1'/>
<id>urn:sha1:7c158015691a62568a49a2186cab232e1c7050e1</id>
<content type='text'>
pieces of software that use the constraint if the compiler claims
to be compatible with GCC 4.2.1.

Note that the constraint was removed in GCC 4.4. The reason was that
'h' could generate code whose result is unpredictable. The underlying
reason is that the HI and LO registers are special, and the optimizer
has to be careful when choosing the order of HI/LO accesses. It looks
that LLVM has the needed logic.
</content>
</entry>
<entry>
<title>Implement .cplocal directive. Needed when building libcrypto.</title>
<updated>2019-06-24T13:52:18Z</updated>
<author>
<name>visa</name>
<email>visa@openbsd.org</email>
</author>
<published>2019-06-24T13:52:18Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=6bb883ca97d62a98da45e1914cb06a260a941487'/>
<id>urn:sha1:6bb883ca97d62a98da45e1914cb06a260a941487</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implement SGE pseudo-instructions. Needed when building libcrypto.</title>
<updated>2019-06-24T13:47:33Z</updated>
<author>
<name>visa</name>
<email>visa@openbsd.org</email>
</author>
<published>2019-06-24T13:47:33Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=916170da4f9e366db2414e3444ff6f9016c88333'/>
<id>urn:sha1:916170da4f9e366db2414e3444ff6f9016c88333</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix a bug in memory operand handling. If a load or store uses a symbol</title>
<updated>2019-06-24T13:44:21Z</updated>
<author>
<name>visa</name>
<email>visa@openbsd.org</email>
</author>
<published>2019-06-24T13:44:21Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=0957d38e5774f24187df9ed4c2808ccaef8591ca'/>
<id>urn:sha1:0957d38e5774f24187df9ed4c2808ccaef8591ca</id>
<content type='text'>
as a memory operand, the assembler generates incorrect relocations in
PIC mode. As a simple fix, expand the instruction into an address load
sequence, which works, that is followed by the actual memory
instruction.

Note that the generated sequence is not always optimal. If the symbol
has a small offset, the offset could be fused with the memory
instruction. The fix does not achieve that, however. A symbol offset
adds an extra instruction.
</content>
</entry>
</feed>
