Re: [PATCH 1/4] exec: Change uselib(2) IS_SREG() failure to EACCES
From: Christian Brauner
Date: Tue May 19 2020 - 09:29:54 EST
On Tue, May 19, 2020 at 07:28:46AM -0500, Eric W. Biederman wrote:
> Andreas Schwab <schwab@xxxxxxxxxxxxxx> writes:
>
> > On Mai 19 2020, Eric W. Biederman wrote:
> >
> >> I am wondering if there are source trees for libc4 or libc5 around
> >> anywhere that we can look at to see how usage of uselib evolved.
> >
> > libc5 is available from archive.debian.org.
> >
> > http://archive.debian.org/debian-archive/debian/pool/main/libc/libc/libc_5.4.46.orig.tar.gz
>
> Interesting.
>
> It appears that the old a.out code to make use of uselib remained in
> the libc5 sources but it was all conditional on the being compiled not
> to use ELF.
>
> libc5 did provide a wrapper for the uselib system call.
>
> It appears glibc also provides a wrapper for the uselib system call
> named: uselib@xxxxxxxxxxxx
>
> I don't see a glibc header file that provides a declaration for uselib
> though.
>
> So the question becomes did anyone use those glibc wrappers.
The only software I could find was ski, the ia64 instruction set
emulator, which apparently used to make use of this and when glibc
removed they did:
#define uselib(libname) syscall(__NR_uselib, libname)
but they only define it for the sake of the internal syscall list they
maintain so not actively using it. I just checked, ski is available on
Fedora 31 and Fedora has USELIB disabled.
Codesearch on Debian yields no users that actively use the syscall for
anything.
Christian