<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/sys/modules/cloudabi64, branch release/13.2.0</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src/atom?h=release%2F13.2.0</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src/atom?h=release%2F13.2.0'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/'/>
<updated>2020-08-25T13:30:03Z</updated>
<entry>
<title>Pass -fuse-ld=/path/to/ld if ${LD} != "ld"</title>
<updated>2020-08-25T13:30:03Z</updated>
<author>
<name>Alex Richardson</name>
<email>arichardson@FreeBSD.org</email>
</author>
<published>2020-08-25T13:30:03Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=2b6ee34cf6fd3ba3a849685e0725ed69adf99748'/>
<id>urn:sha1:2b6ee34cf6fd3ba3a849685e0725ed69adf99748</id>
<content type='text'>
This is needed so that setting LD/XLD is not ignored when linking with $CC
instead of directly using $LD. Currently only clang accepts an absolute
path for -fuse-ld= (Clang 12+ will add a new --ld-path flag), so we now
warn when building with GCC and $LD != "ld" since that might result in the
wrong linker being used.

We have been setting XLD=/path/to/cheri/ld.lld in CheriBSD for a long time and
used a similar version of this patch to avoid linking with /usr/bin/ld.
This change is also required when building FreeBSD on an Ubuntu with Clang:
In that case we set XCC=/usr/lib/llvm-10/bin/clang and since
/usr/lib/llvm-10/bin/ does not contain a "ld" binary the build fails with
`clang: error: unable to execute command: Executable "ld" doesn't exist!`
unless we pass -fuse-ld=/usr/lib/llvm-10/bin/ld.lld.

This change passes -fuse-ld instead of copying ${XLD} to WOLRDTMP/bin/ld
since then we would have to ensure that this file does not exist while
building the bootstrap tools. The cross-linker might not be compatible with
the host linker (e.g. when building on macos: host-linker= Mach-O /usr/bin/ld,
cross-linker=LLVM ld.lld).

Reviewed By:	brooks, emaste
Differential Revision: https://reviews.freebsd.org/D26055
</content>
</entry>
<entry>
<title>sys/modules: normalize .CURDIR-relative paths to SRCTOP</title>
<updated>2017-03-04T10:10:17Z</updated>
<author>
<name>Enji Cooper</name>
<email>ngie@FreeBSD.org</email>
</author>
<published>2017-03-04T10:10:17Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=193d9e768ba63fcfb187cfd17f461f7d41345048'/>
<id>urn:sha1:193d9e768ba63fcfb187cfd17f461f7d41345048</id>
<content type='text'>
This simplifies make output/logic

Tested with:	`cd sys/modules; make ALL_MODULES=` on amd64
MFC after:	1 month
Sponsored by:	Dell EMC Isilon
</content>
</entry>
<entry>
<title>Use both the MACHINE and MACHINE_CPUARCH directories for finding sources.</title>
<updated>2016-08-29T07:48:35Z</updated>
<author>
<name>Ed Schouten</name>
<email>ed@FreeBSD.org</email>
</author>
<published>2016-08-29T07:48:35Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=bab6a051ecd3474e1ccae8bc753680a51309021b'/>
<id>urn:sha1:bab6a051ecd3474e1ccae8bc753680a51309021b</id>
<content type='text'>
When fixing this module to build on PC98, I actually broke the build on
ARM64. On PC98 we need to pull in the sources from the MACHINE_CPUARCH
(i386), but on ARM64 we need to use the MACHINE, as MACHINE_CPUARCH is
set to aarch64 instead of just arm64.
</content>
</entry>
<entry>
<title>Properly use MACHINE_CPUARCH for finding cloudabi*_sysvec.c.</title>
<updated>2016-08-27T09:50:11Z</updated>
<author>
<name>Ed Schouten</name>
<email>ed@FreeBSD.org</email>
</author>
<published>2016-08-27T09:50:11Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=fb90d86466c422b01847ef7950eb901d2262bb00'/>
<id>urn:sha1:fb90d86466c422b01847ef7950eb901d2262bb00</id>
<content type='text'>
The build of the cloudabi32 kernel module currently fails for PC98. In
the case of PC98, we just want to use the code for i386.

Reported by:	np
</content>
</entry>
<entry>
<title>Move the linker script from cloudabi64/ to cloudabi/.</title>
<updated>2016-08-21T15:14:06Z</updated>
<author>
<name>Ed Schouten</name>
<email>ed@FreeBSD.org</email>
</author>
<published>2016-08-21T15:14:06Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=4fbc90654cc14b60d67edc24bf962fe9f5dc6427'/>
<id>urn:sha1:4fbc90654cc14b60d67edc24bf962fe9f5dc6427</id>
<content type='text'>
It turns out that it works perfectly fine for generating 32-bits vDSOs
as well. While there, get rid of the extraneous .s file extension.
</content>
</entry>
<entry>
<title>Rewrite the vDSOs for CloudABI in assembly.</title>
<updated>2016-08-21T07:28:38Z</updated>
<author>
<name>Ed Schouten</name>
<email>ed@FreeBSD.org</email>
</author>
<published>2016-08-21T07:28:38Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=7ce0716103b6d8275c8cb6d98307632db26ad82c'/>
<id>urn:sha1:7ce0716103b6d8275c8cb6d98307632db26ad82c</id>
<content type='text'>
The reason why the old vDSOs were written in C using inline assembly was
purely because they were embedded in the C library directly as static
inline functions. This was practical during development, because it
meant you could invoke system calls without any library dependencies.
The vDSO was simply a copy of these functions.

Now that we require the use of the vDSO, there is no longer any need for
embedding them in C code directly. Rewriting them in assembly has the
advantage that they are closer to ideal (less useless branching, less
assumptions about registers remaining unclobbered by the kernel, etc).
They are also easier to build, as they no longer depend on the C type
information for CloudABI.

Obtained from:	https://github.com/NuxiNL/cloudabi
</content>
</entry>
<entry>
<title>Provide the CloudABI vDSO to its executables.</title>
<updated>2016-08-10T21:02:41Z</updated>
<author>
<name>Ed Schouten</name>
<email>ed@FreeBSD.org</email>
</author>
<published>2016-08-10T21:02:41Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=13b4b4df987d8f05c2cd5813cfe05db953c37c9e'/>
<id>urn:sha1:13b4b4df987d8f05c2cd5813cfe05db953c37c9e</id>
<content type='text'>
CloudABI executables already provide support for passing in vDSOs. This
functionality is used by the emulator for OS X to inject system call
handlers. On FreeBSD, we could use it to optimize calls to
gettimeofday(), etc.

Though I don't have any plans to optimize any system calls right now,
let's go ahead and already pass in a vDSO. This will allow us to
simplify the executables, as the traditional "syscall" shims can be
removed entirely. It also means that we gain more flexibility with
regards to adding and removing system calls.

Reviewed by:	kib
Differential Revision:	https://reviews.freebsd.org/D7438
</content>
</entry>
<entry>
<title>Refactoring: move out generic bits from cloudabi64_sysvec.c.</title>
<updated>2015-10-22T09:07:53Z</updated>
<author>
<name>Ed Schouten</name>
<email>ed@FreeBSD.org</email>
</author>
<published>2015-10-22T09:07:53Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=b78ef4bd86f5fbc328996350735aa6586cd1bc35'/>
<id>urn:sha1:b78ef4bd86f5fbc328996350735aa6586cd1bc35</id>
<content type='text'>
In order to make it easier to support CloudABI on ARM64, move out all of
the bits from the AMD64 cloudabi_sysvec.c into a new file
cloudabi_module.c that would otherwise remain identical. This reduces
the AMD64 specific code to just ~160 lines.

Reviewed by:	kib
Differential Revision:	https://reviews.freebsd.org/D3974
</content>
</entry>
<entry>
<title>Use the right variable name.</title>
<updated>2015-10-16T10:26:15Z</updated>
<author>
<name>Ed Schouten</name>
<email>ed@FreeBSD.org</email>
</author>
<published>2015-10-16T10:26:15Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=aa40bd817ccc8fd68ceabcfcf601ad560fc3fcab'/>
<id>urn:sha1:aa40bd817ccc8fd68ceabcfcf601ad560fc3fcab</id>
<content type='text'>
MACHINE_CPUARCH expands to aarch64 for arm64, whereas MACHINE always
corresponds to the directory name under sys/ that contains the sources
for that architecture.
</content>
</entry>
<entry>
<title>Add Makefiles for CloudABI kernel modules.</title>
<updated>2015-07-22T07:32:49Z</updated>
<author>
<name>Ed Schouten</name>
<email>ed@FreeBSD.org</email>
</author>
<published>2015-07-22T07:32:49Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=8bc78518035f687c789ca0c413daca97b701cfd8'/>
<id>urn:sha1:8bc78518035f687c789ca0c413daca97b701cfd8</id>
<content type='text'>
Place all of the machine/pointer size independent code in a kernel
module called 'cloudabi'. All of the 64-bit specific code goes in a
separate module called 'cloudabi64'. The latter is only enabled on
amd64, as it is the only architecture supported.
</content>
</entry>
</feed>
