mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-25 22:40:05 +00:00
Thu Jan 18 00:32:43 1996 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
* Makerules (COMPILE.s): New variable. * sysdeps/unix/Makefile (sysd-syscalls): New target; generate with make-syscalls.sh and include it. [$(subdir)=misc] (sysdep_routines): Append extra syscalls from sysd-syscalls. * sysdeps/unix/make-syscalls.sh: New file. * Makerules (COMPILE.S): New variable.
This commit is contained in:
parent
285a3eee46
commit
aeb72b1622
12
ChangeLog
12
ChangeLog
@ -1,3 +1,15 @@
|
|||||||
|
Thu Jan 18 00:32:43 1996 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
|
||||||
|
|
||||||
|
* Makerules (COMPILE.s): New variable.
|
||||||
|
|
||||||
|
* sysdeps/unix/Makefile (sysd-syscalls): New target; generate with
|
||||||
|
make-syscalls.sh and include it.
|
||||||
|
[$(subdir)=misc] (sysdep_routines): Append extra syscalls from
|
||||||
|
sysd-syscalls.
|
||||||
|
* sysdeps/unix/make-syscalls.sh: New file.
|
||||||
|
|
||||||
|
* Makerules (COMPILE.S): New variable.
|
||||||
|
|
||||||
Wed Jan 17 11:04:58 1996 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
|
Wed Jan 17 11:04:58 1996 Roland McGrath <roland@churchy.gnu.ai.mit.edu>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/statbuf.h (_STAT_VER_LINUX,
|
* sysdeps/unix/sysv/linux/statbuf.h (_STAT_VER_LINUX,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
|
# Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
|
||||||
# This file is part of the GNU C Library.
|
# This file is part of the GNU C Library.
|
||||||
|
|
||||||
# The GNU C Library is free software; you can redistribute it and/or
|
# The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -253,8 +253,10 @@ compile-command.c = $(compile.c) $(OUTPUT_OPTION)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
# GCC can grok options after the file name, and it looks nicer that way.
|
# GCC can grok options after the file name, and it looks nicer that way.
|
||||||
compile.S = $(CC) $< -c $(CPPFLAGS) -DASSEMBLER $(asm-CPPFLAGS)
|
|
||||||
compile.c = $(CC) $< -c $(CFLAGS) $(CPPFLAGS)
|
compile.c = $(CC) $< -c $(CFLAGS) $(CPPFLAGS)
|
||||||
|
compile.S = $(CC) $< -c $(CPPFLAGS) -DASSEMBLER $(asm-CPPFLAGS)
|
||||||
|
COMPILE.S = $(CC) -c $(CPPFLAGS) -DASSEMBLER $(asm-CPPFLAGS)
|
||||||
|
COMPILE.s = $(filter-out -pipe,$(CC)) -c $(ASFLAGS)
|
||||||
|
|
||||||
# We need this for the output to go in the right place. It will default to
|
# We need this for the output to go in the right place. It will default to
|
||||||
# empty if make was configured to work with a cc that can't grok -c and -o
|
# empty if make was configured to work with a cc that can't grok -c and -o
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
|
# Copyright (C) 1991, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
|
||||||
# This file is part of the GNU C Library.
|
# This file is part of the GNU C Library.
|
||||||
|
|
||||||
# The GNU C Library is free software; you can redistribute it and/or
|
# The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -266,3 +266,30 @@ common-generated := $(common-generated) syscall.h
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifndef inhibit-unix-syscalls
|
||||||
|
|
||||||
|
# Sysdep dirs unix/... can contain a file syscalls.list,
|
||||||
|
# which specifies objects to be compiled as simple Unix system calls.
|
||||||
|
|
||||||
|
-include $(objpfx)sysd-syscalls
|
||||||
|
omit-deps += $(unix-syscalls)
|
||||||
|
|
||||||
|
ifeq (misc,$(subdir))
|
||||||
|
sysdep_routines += $(unix-extra-syscalls)
|
||||||
|
endif
|
||||||
|
|
||||||
|
export sysdirs
|
||||||
|
export asm_CPP := $(COMPILE.S) -E -x assembler-with-cpp
|
||||||
|
|
||||||
|
$(objpfx)sysd-syscalls: $(..)sysdeps/unix/make-syscalls.sh \
|
||||||
|
$(wildcard $(+sysdep_dirs:%=%/syscalls.list))
|
||||||
|
for dir in $$sysdirs; do \
|
||||||
|
test -f $(..)sysdeps/$$dir/syscalls.list && \
|
||||||
|
{ $(SHELL) $(dir $<)$(notdir $<) \
|
||||||
|
$(..)sysdeps $$dir $(object-suffixes) || exit 1; }; \
|
||||||
|
test $$dir = unix && break; \
|
||||||
|
done > $@T
|
||||||
|
mv -f $@T $@
|
||||||
|
|
||||||
|
endif
|
||||||
|
76
sysdeps/unix/make-syscalls.sh
Normal file
76
sysdeps/unix/make-syscalls.sh
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
|
||||||
|
# Usage: make-syscalls.sh ../sysdeps unix/common
|
||||||
|
# Expects $sysdirs in environment.
|
||||||
|
|
||||||
|
sysbase=$1; shift
|
||||||
|
thisdir=$1; shift
|
||||||
|
|
||||||
|
# Get the list of system calls for this directory.
|
||||||
|
calls=`sed 's/#.*$//
|
||||||
|
/^[ ]*$/d' $sysbase/$thisdir/syscalls.list`
|
||||||
|
|
||||||
|
# Check each sysdep dir with higher priority than this one,
|
||||||
|
# and remove from $calls all the functions found in other dirs.
|
||||||
|
for dir in $sysdirs; do
|
||||||
|
|
||||||
|
# Punt when we reach the directory defining these syscalls.
|
||||||
|
test $dir = $thisdir && break
|
||||||
|
|
||||||
|
# Remove each syscall that is implemented by a file in $dir.
|
||||||
|
# If a syscall specified a "caller", then only compile that syscall
|
||||||
|
# if the caller function is also implemented in this directory.
|
||||||
|
calls=`echo "$calls" | while read file caller rest; do
|
||||||
|
test -f $sysbase/$dir/$file.c && continue
|
||||||
|
test -f $sysbase/$dir/$file.S && continue
|
||||||
|
test -f $sysbase/$dir/$file.s && continue
|
||||||
|
if test x$caller != x-; then
|
||||||
|
test -f $sysbase/$dir/$caller.c && continue
|
||||||
|
test -f $sysbase/$dir/$caller.S && continue
|
||||||
|
test -f $sysbase/$dir/$caller.s && continue
|
||||||
|
fi
|
||||||
|
echo $file $caller $rest
|
||||||
|
done`
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
# Any calls left?
|
||||||
|
test -n "$calls" || exit 0
|
||||||
|
|
||||||
|
files=
|
||||||
|
|
||||||
|
# Emit rules to compile the syscalls remaining in $calls.
|
||||||
|
echo "$calls" | while read file caller syscall nargs strong weak; do
|
||||||
|
|
||||||
|
# Figure out if $syscall is defined with a number in syscall.h.
|
||||||
|
$asm_CPP - << EOF | grep "^@@@ .*$syscall" >/dev/null && continue
|
||||||
|
#include <sysdep.h>
|
||||||
|
@@@ SYS_ify ($syscall)
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Make sure only the first syscall rule is used, if multiple dirs
|
||||||
|
# define the same syscall.
|
||||||
|
echo "ifeq (,\$(filter $file,\$(unix-syscalls)))"
|
||||||
|
|
||||||
|
# Accumulate the list of syscall files for this directory.
|
||||||
|
echo "unix-syscalls += $file"
|
||||||
|
test x$caller = x- || echo "unix-extra-syscalls += $file"
|
||||||
|
|
||||||
|
# Emit a compilation rule for this syscall.
|
||||||
|
echo "\
|
||||||
|
\$(foreach o,\$(object-suffixes),\$(objpfx)$file\$o): \$(objpfx)s-proto.d
|
||||||
|
(echo '#include <sysdep.h>'; \\
|
||||||
|
echo 'PSEUDO ($strong, $syscall, $nargs)'; \\
|
||||||
|
echo ' ret'; \\"
|
||||||
|
|
||||||
|
# Append any weak aliases defined for this syscall function.
|
||||||
|
for name in $weak; do
|
||||||
|
echo " echo 'weak_alias ($strong, $name)'; \\"
|
||||||
|
done
|
||||||
|
|
||||||
|
# And finally, pipe this all into the compiler.
|
||||||
|
echo ' ) | $(COMPILE.S) -x assembler-with-cpp -o $@ -'
|
||||||
|
|
||||||
|
echo endif
|
||||||
|
|
||||||
|
done
|
Loading…
Reference in New Issue
Block a user