mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
2003-03-26 Roland McGrath <roland@redhat.com>
* sysdeps/unix/make-syscalls.sh: When an undefined syscall has SOURCE=-, append its symbol names to make variable unix-stub-syscalls. * sysdeps/unix/Makefile [$(subdir) = misc] [unix-stub-syscalls] (sysdep_routines): Add stub-syscalls. ($(objpfx)stub-syscalls.c): New target. (generated): Add stub-syscalls.c.
This commit is contained in:
parent
da058e4542
commit
d8e94af60b
@ -282,6 +282,36 @@ omit-deps += $(unix-syscalls)
|
||||
|
||||
ifeq (misc,$(subdir))
|
||||
sysdep_routines += $(unix-extra-syscalls)
|
||||
|
||||
ifdef unix-stub-syscalls
|
||||
# The system call entry points in this list are supposed to be additional
|
||||
# functions not overriding any other sysdeps/.../call.c implementation, but
|
||||
# their system call numbers are unavailable in the kernel headers we're
|
||||
# using. Instead of a system call stub, these get a function that fails
|
||||
# with ENOSYS. We just generate a single module defining one function and
|
||||
# making all these entry point names aliases for it.
|
||||
sysdep_routines += stub-syscalls
|
||||
$(objpfx)stub-syscalls.c: $(common-objpfx)sysd-syscalls \
|
||||
$(..)sysdeps/unix/Makefile
|
||||
(echo '#include <errno.h>'; \
|
||||
echo 'long int _no_syscall (void)'; \
|
||||
echo '{ __set_errno (ENOSYS); return -1L; }'; \
|
||||
for call in $(unix-stub-syscalls); do \
|
||||
case $$call in \
|
||||
*@@*) ver=$${call##*@}; call=$${call%%*@}; \
|
||||
echo "strong_alias (_no_syscall, $${call}_$${ver})"; \
|
||||
echo "default_symbol_version \
|
||||
($${call}_$${ver}, $$call, $$ver);" ;; \
|
||||
*@@*) ver=$${call##*@}; call=$${call%%*@}; \
|
||||
echo "strong_alias (_no_syscall, $${call}_$${ver})"; \
|
||||
echo "symbol_version ($${call}_$${ver}, $$call, $$ver);" ;; \
|
||||
*) echo "weak_alias (_no_syscall, $$call)"; \
|
||||
echo "weak_alias (_no_syscall, __GI_$$call)" ;; \
|
||||
esac; \
|
||||
done) > $@T
|
||||
mv -f $@T $@
|
||||
generated += stub-syscalls.c
|
||||
endif
|
||||
endif
|
||||
|
||||
export sysdirs
|
||||
|
@ -111,6 +111,16 @@ while read file srcfile caller syscall args strong weak; do
|
||||
echo "#### CALL=$file NUMBER=$callnum ARGS=$args SOURCE=$srcfile"
|
||||
|
||||
case x$srcfile"$callnum" in
|
||||
x--)
|
||||
# Undefined callnum for an extra syscall.
|
||||
if [ x$caller != x- ]; then
|
||||
if [ x$noerrno != x ]; then
|
||||
echo >&2 "$0: no number for $fileno, no-error syscall ($strong $weak)"
|
||||
exit 2
|
||||
fi
|
||||
echo "unix-stub-syscalls += $strong $weak"
|
||||
fi
|
||||
;;
|
||||
x*-) ;; ### Do nothing for undefined callnum
|
||||
x-*)
|
||||
echo "ifeq (,\$(filter $file,\$(unix-syscalls)))"
|
||||
|
Loading…
Reference in New Issue
Block a user