mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-22 19:00:07 +00: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))
|
ifeq (misc,$(subdir))
|
||||||
sysdep_routines += $(unix-extra-syscalls)
|
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
|
endif
|
||||||
|
|
||||||
export sysdirs
|
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"
|
echo "#### CALL=$file NUMBER=$callnum ARGS=$args SOURCE=$srcfile"
|
||||||
|
|
||||||
case x$srcfile"$callnum" in
|
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*-) ;; ### Do nothing for undefined callnum
|
||||||
x-*)
|
x-*)
|
||||||
echo "ifeq (,\$(filter $file,\$(unix-syscalls)))"
|
echo "ifeq (,\$(filter $file,\$(unix-syscalls)))"
|
||||||
|
Loading…
Reference in New Issue
Block a user