I still want dynamic linking, but only a few trusted library files would be allowed to make system calls. Like libc. Sorry but golang would have to change to use libc.
This breaks the ABI, but it breaks it for naughty programs the most.
This breaks the ABI, but it breaks it for naughty programs the most.
They're referring to Control Flow Integrity [1]
As to restricting syscalls from certain calling libraries, macOS has this via entitlements, and I believe OpenBSD and/or NetBSD has this in some form as well.
EDIT: oh. but not limited to the caller from a specific system library.
This is impossible (without having to do libc.so.7) on Linux, as:
$ nm -D /lib/x86_64-linux-gnu/libc.so.6 | grep syscall
000000000011b520 T syscall
https://elixir.bootlin.com/glibc/glibc-2.39/source/sysdeps/u...