<feed xmlns='http://www.w3.org/2005/Atom'>
<title>wireguard-openbsd/gnu/llvm/tools/clang/lib/Basic, branch jd/simplify-queueing</title>
<subtitle>WireGuard implementation for the OpenBSD kernel</subtitle>
<id>https://git.zx2c4.com/wireguard-openbsd/atom/gnu/llvm/tools/clang/lib/Basic?h=jd%2Fsimplify-queueing</id>
<link rel='self' href='https://git.zx2c4.com/wireguard-openbsd/atom/gnu/llvm/tools/clang/lib/Basic?h=jd%2Fsimplify-queueing'/>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/'/>
<updated>2020-05-30T19:23:16Z</updated>
<entry>
<title>Powerpc64 should use same _mcount profiling as powerpc 32bit.</title>
<updated>2020-05-30T19:23:16Z</updated>
<author>
<name>drahn</name>
<email>drahn@openbsd.org</email>
</author>
<published>2020-05-30T19:23:16Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=949932c898dbe0db8f3e57846975f25e49567f99'/>
<id>urn:sha1:949932c898dbe0db8f3e57846975f25e49567f99</id>
<content type='text'>
ok kettenis@
</content>
</entry>
<entry>
<title>Make sure that we add our OpenBSD specific defines on PowerPC64 targets.</title>
<updated>2020-05-20T07:07:44Z</updated>
<author>
<name>patrick</name>
<email>patrick@openbsd.org</email>
</author>
<published>2020-05-20T07:07:44Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=5a51f1c14b8d8ec321a16e1d85f6bed3b9492fa4'/>
<id>urn:sha1:5a51f1c14b8d8ec321a16e1d85f6bed3b9492fa4</id>
<content type='text'>
Prompted and tested by drahn@
ok deraadt@ drahn@ kettenis@ visa@
</content>
</entry>
<entry>
<title>Define the appropriate __GCC_HAVE_SYNC_COMPARE_AND_SWAP_* symbols like all</title>
<updated>2020-04-05T13:55:53Z</updated>
<author>
<name>kettenis</name>
<email>kettenis@openbsd.org</email>
</author>
<published>2020-04-05T13:55:53Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=f7d9bb6830ad75deb53c1fcb554dc6445b20a279'/>
<id>urn:sha1:f7d9bb6830ad75deb53c1fcb554dc6445b20a279</id>
<content type='text'>
other clang platforms do.

ok jca@
</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>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>Merge LLVM 8.0.0 release.</title>
<updated>2019-06-23T22:05:08Z</updated>
<author>
<name>patrick</name>
<email>patrick@openbsd.org</email>
</author>
<published>2019-06-23T22:05:08Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=f27a781c9811da94fe68b2cf34237c2a61b48c96'/>
<id>urn:sha1:f27a781c9811da94fe68b2cf34237c2a61b48c96</id>
<content type='text'>
Prepared with help from jsg@ and mortimer@
Tested on amd64 by bcallah@, krw@, naddy@
Tested on arm64 by patrick@
Tested on macppc by kettenis@
Tested on octeon by visa@
Tested on sparc64 by claudio@
</content>
</entry>
<entry>
<title>Import LLVM 8.0.0 release including clang, lld and lldb.</title>
<updated>2019-06-23T21:36:31Z</updated>
<author>
<name>patrick</name>
<email>patrick@openbsd.org</email>
</author>
<published>2019-06-23T21:36:31Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=23f101f37937a1bd4a29726cab2f76e0fb038b35'/>
<id>urn:sha1:23f101f37937a1bd4a29726cab2f76e0fb038b35</id>
<content type='text'>
</content>
</entry>
<entry>
<title>On OpenBSD/powerpc (and NetBSD/powerpc) long double == double like on</title>
<updated>2019-02-10T17:06:03Z</updated>
<author>
<name>kettenis</name>
<email>kettenis@openbsd.org</email>
</author>
<published>2019-02-10T17:06:03Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=a748f3aef913185ae09270e131d36eed8f9f110d'/>
<id>urn:sha1:a748f3aef913185ae09270e131d36eed8f9f110d</id>
<content type='text'>
FreeBSD/powerpc.  From George Koehler.

ok millert@, deraadt@, visa@
</content>
</entry>
<entry>
<title>implement -msave-args in clang/llvm, like the sun did for gcc</title>
<updated>2019-01-30T03:08:12Z</updated>
<author>
<name>dlg</name>
<email>dlg@openbsd.org</email>
</author>
<published>2019-01-30T03:08:12Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=728e23dfc36a7a5f9a19f349b6c8d489de3d3859'/>
<id>urn:sha1:728e23dfc36a7a5f9a19f349b6c8d489de3d3859</id>
<content type='text'>
this is a bit different to gcc as gcc likes to use movs to move
stuff on and off the stack, and directly updates the stack pointers
with add and sub instructions. llvm prefers to use push and pop
instructions, is a lot more careful about keeping track of how
much stuff is currently on the stack, and generally pops the frame
pointer rather than do maths on it.

-msave-args adds a bunch of pushes as the first thing a function
prologue does. to keep the stack aligned, if there's an odd number
of arguments to the function it pushes the first one again to put
the frame back on a 16 byte boundary.

to undo the pushes the frame pointer needs to be updated in function
epilogues. clang emits a series of pops to fix up the registers on
the way out, but popping saved arguments is a waste of time and
harmful to actual data in the function. rather than add an offset
to the stack pointer, -msave-args emits a leaveq operation to fix
up the frame again. leaveq is effectively mov rbp,rsp; pop rbp, and
is a single byte, meaning there's less potential for gadgets compared
to a direct add to rsp, or an explicit mov rbp,rsp.

the only thing missing compared to the gcc implementation is adding
the SUN_amd64_parmdump dwarf flag to affected functions. if someone
can tell me how to add that from the frame lowering code, let me
know.

when enabled in kernel builds again, this will provide useful
arguments in ddb stack traces again.
</content>
</entry>
<entry>
<title>Tedu files that got removed in LLVM 7.0.1.</title>
<updated>2019-01-27T17:11:29Z</updated>
<author>
<name>patrick</name>
<email>patrick@openbsd.org</email>
</author>
<published>2019-01-27T17:11:29Z</published>
<link rel='alternate' type='text/html' href='https://git.zx2c4.com/wireguard-openbsd/commit/?id=9f520fd6abbfde117cf551fb4eacdd2687a606a9'/>
<id>urn:sha1:9f520fd6abbfde117cf551fb4eacdd2687a606a9</id>
<content type='text'>
</content>
</entry>
</feed>
