Re: How are syscall functions defined?

From: Pat Maddox <pat_at_patmaddox.com>
Date: Sat, 01 Jul 2023 11:22:35 UTC
On Sat, Jul 1, 2023, at 3:11 AM, Pat Maddox wrote:
> jail_attach is defined in syscalls.master [1] which generates a 
> declaration in jail.h [2]. Try as I might, I can’t find any definition 
> of that specific syscall function (or any other).  I think the closest 
> I’ve found is sys_jail_attach in kern_jail.c [3]. I suspect there’s 
> some generation going on that defines jail_attach - but if that’s the 
> case, I haven’t been able to track it down.
>
> Can someone point me to how the C function gets defined?
>
> Thanks,
> Pat
>
> [1] 
> https://github.com/freebsd/freebsd-src/blob/releng/13.2/sys/kern/syscalls.master#L2307
> [2] 
> https://github.com/freebsd/freebsd-src/blob/releng/13.2/sys/sys/jail.h#L119
> [3] 
> https://github.com/freebsd/freebsd-src/blob/releng/13.2/sys/kern/kern_jail.c#L2340

Symbol.map [1] is used to produce a version map [2] which is then fed to the linker [3], which I assume maps the symbols in the resulting binary. I intend to experiment with that a bit, but I think that makes sense.

Pat

[1] https://github.com/freebsd/freebsd-src/blob/releng/13.2/lib/libc/sys/Symbol.map#L672
[2] https://github.com/freebsd/freebsd-src/blob/releng/13.2/share/mk/bsd.symver.mk#L43
[3] https://github.com/freebsd/freebsd-src/blob/releng/13.2/share/mk/bsd.lib.mk#L253