+1998-03-30 12:53 Ulrich Drepper <drepper@cygnus.com>
+
+ * sysdeps/i386/i486/bits/string.h (__strcat_c) [__i686__]: Correct
+ scanning for \0.
+ (__strncat_g): Add i686 specific code.
+
+1998-03-30 Andreas Jaeger <aj@arthur.rhein-neckar.de>
+
+ * manual/install.texi (Reporting Bugs): Ask to include section
+ names in reports.
+
+1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * sysdeps/unix/sysv/linux/Makefile ($(objpfx)syscall-%.h): Emit
+ guard against direct inclusion.
+
+1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ Rework support for libc_nonshared.a:
+ * Makeconfig (object-suffixes-for-libc): New variable.
+ * Rules: Remove handling of static-only and shared-only routines.
+ * Makerules: Handle them here instead. Use
+ object-suffixes-for-libc instead of object-suffixes when dealing
+ with libc objects.
+ (object-suffixes-for-rules): Remove variable.
+ (elide-routines.oS): Elide all routines except static-only
+ routines.
+ ($(objpfx)stamp.oS): Special rule for when static-only-routines is
+ empty.
+ (installed-libcs): Remove special case for .oS.
+ (rmobjs): Likewise.
+
+1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * Makefile (do-collate-test, do-xfrm-test, do-tst-fmon,
+ do-tst-rpmatch): New targets.
+ (test): Use them.
+ (install-locales): Ignore comment lines.
+
+1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * elf/Makefile ($(objpfx)ld.so): Depend on version script.
+ ($(objpfx)trusted-dirs.h): Depend also on $(..)Makeconfig.
+ ($(objpfx)rtldtbl.h): Likewise.
+ (CPPFLAGS-dl-load.c): Fix reference to object directory.
+
+1998-03-30 09:36 Ulrich Drepper <drepper@cygnus.com>
+
+ * manual/string.texi (Finding Tokens in a String): Extend strsep
+ description and correct example.
+
+1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * manual/socket.texi: Remove misguided explicit line breaks and
+ fix the formatting problem instead by reformulating the
+ paragraphs.
+ * manual/filesys.texi: Likewise.
+ * manual/conf.texi: Likewise. Don't typeset table with index
+ fonts, that looks worse than a minimally overfull line.
+
+1998-03-28 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
+
+ * nscd/Makefile (nscd-modules): Move definition outside of
+ conditional.
+
+ * pwd/Makefile: Use have-thread-library to test for thread
+ library.
+
+1998-03-30 Andreas Jaeger <aj@arthur.rhein-neckar.de>
+
+ * nss/getXXent_r.c (INTERNAL): Remove unused variable current_nip.
+
+ * iconvdata/uhc.c (gconv): Remove unused variable idx.
+
+1998-03-30 Ulrich Drepper <drepper@cygnus.com>
+
+ * sysdeps/unix/sysv/linux/Dist: Add lddlibc4.c.
+
1998-03-29 Ulrich Drepper <drepper@cygnus.com>
* nss/getXXent_r.c: Correctly handle failing setXXent function.
# Various things use $(object-suffixes) to know what all to make.
# The compilation rules use $(CPPFLAGS-${SUFFIX}) and $(CFLAGS-${SUFFIX})
# to pass different flags for each flavor.
-libtypes = $(foreach o,$(object-suffixes-for-rules),$(libtype$o))
+libtypes = $(foreach o,$(object-suffixes),$(libtype$o))
all-object-suffixes := .o .os .op .og .ob .oS
object-suffixes :=
ifeq (yes,$(build-static))
libtype.os := lib%_pic.a
# This can be changed by a sysdep makefile
pic-ccflag = -fPIC
-# Special library that contains the static-only routines for libc.
-libtype.oS = lib%_nonshared.a
-# Must build the routines as PIC, though, because they can end up in (users')
-# shared objects. We don't want to use CFLAGS-os because users may, for
-# example, make that processor-specific.
-CFLAGS-.oS = $(CFLAGS-.o) $(pic-ccflag)
-CPPFLAGS-.oS = $(CPPFLAGS-.o) -DPIC
endif
ifeq (yes,$(build-profile))
# Under --enable-profile, we will build a static library of profiled objects.
libtype.ob = lib%_b.a
endif
+object-suffixes-for-libc := $(object-suffixes)
+
+ifeq (yes,$(build-shared))
+# Build special library that contains the static-only routines for libc.
+object-suffixes-for-libc += .oS
+
+# Must build the routines as PIC, though, because they can end up in (users')
+# shared objects. We don't want to use CFLAGS-os because users may, for
+# example, make that processor-specific.
+CFLAGS-.oS = $(CFLAGS-.o) $(pic-ccflag)
+CPPFLAGS-.oS = $(CPPFLAGS-.o)
+libtype.oS = lib%_nonshared.a
+endif
+
+
+gnu-stabs = $(shell echo>&2 '*** BARF ON ME')
ifndef BUILD_CC
$(common-objpfx)dummy.d:
echo '# .s files cannot contain includes, so they need no deps.' > $@
-object-suffixes-for-rules := $(object-suffixes)
-
-ifeq (yes,$(build-shared))
-object-suffixes-for-rules += .oS
-endif
-
# It matters that this set of rules, for compiling from sources in
# the current directory (the $srcdir/$subdir) come before the
# generated sysdep rules in included from sysd-rules below. When
define o-iterator-doit
$(objpfx)%$o: %.S $(before-compile); $$(compile-command.S)
endef
-object-suffixes-left := $(object-suffixes-for-rules)
+object-suffixes-left := $(object-suffixes-for-libc)
include $(o-iterator)
$(objpfx)%.d: %.S $(before-compile); $(+make-deps)
define o-iterator-doit
$(objpfx)%$o: %.s $(before-compile); $$(compile-command.s)
endef
-object-suffixes-left := $(object-suffixes-for-rules)
+object-suffixes-left := $(object-suffixes-for-libc)
include $(o-iterator)
$(objpfx)%.d: %.s $(common-objpfx)dummy.d; $(make-dummy-dep)
define o-iterator-doit
$(objpfx)%$o: %.c $(before-compile); $$(compile-command.c)
endef
-object-suffixes-left := $(object-suffixes-for-rules)
+object-suffixes-left := $(object-suffixes-for-libc)
include $(o-iterator)
$(objpfx)%.d: %.c $(before-compile); $(+make-deps)
define o-iterator-doit
$(objpfx)%$o: $(objpfx)%.S $(before-compile); $$(compile-command.S)
endef
-object-suffixes-left := $(object-suffixes-for-rules)
+object-suffixes-left := $(object-suffixes-for-libc)
include $(o-iterator)
$(objpfx)%.d: $(objpfx)%.S $(before-compile); $(+make-deps)
define o-iterator-doit
$(objpfx)%$o: $(objpfx)%.s $(before-compile); $$(compile-command.s)
endef
-object-suffixes-left := $(object-suffixes-for-rules)
+object-suffixes-left := $(object-suffixes-for-libc)
include $(o-iterator)
$(objpfx)%.d: $(objpfx)%.s $(common-objpfx)dummy.d; $(make-dummy-dep)
define o-iterator-doit
$(objpfx)%$o: $(objpfx)%.c $(before-compile); $$(compile-command.c)
endef
-object-suffixes-left := $(object-suffixes-for-rules)
+object-suffixes-left := $(object-suffixes-for-libc)
include $(o-iterator)
$(objpfx)%.d: $(objpfx)%.c $(before-compile); $(+make-deps)
endif
$(no-whole-archive) $(LDLIBS-$(@F:lib%.so=%).so)
endef
+ifndef libc.so-version
+# Undefine this because it can't work when we libc.so is unversioned.
+static-only-routines =
+endif
+
+elide-routines.oS = $(filter-out $(static-only-routines),\
+ $(routines) $(aux) $(sysdep_routines))
+
+ifdef static-only-routines
+# These routines are to be omitted from the shared library object,
+# so we replace the PIC objects for them with the empty object file.
+$(static-only-routines:%=$(objpfx)%.os): %.os: $(common-objpfx)empty.os
+ rm -f $@
+ ln $< $@
+endif
+
+ifdef shared-only-routines
+# If we have versioned code we don't need the old versions in any of the
+# static libraries.
+define o-iterator-doit
+$(shared-only-routines:%=$(objpfx)%$o): %$o: $(common-objpfx)empty$o;
+ rm -f $$@
+ ln $$< $$@
+endef
+object-suffixes-left := $(filter-out .os,$(object-suffixes))
+include $(o-iterator)
+endif
+
# Don't try to use -lc when making libc.so itself.
# Also omits crti.o and crtn.o, which we do not want
# since we define our own `.init' section specially.
\f
# Make sure that object files are not removed
# when they are intermediates between sources and library members.
-.PRECIOUS: $(addprefix $(objpfx)%,$(object-suffixes))
+.PRECIOUS: $(addprefix $(objpfx)%,$(all-object-suffixes))
# Make sure that the parent library archive is never removed.
.PRECIOUS: $(foreach l,$(libtypes),$(patsubst %,$(common-objpfx)$l,c))
$(elide-routines$o)),\
$(objects)))
-libobjs: $(foreach o,$(object-suffixes),\
+libobjs: $(foreach o,$(object-suffixes-for-libc),\
$(common-objpfx)$(patsubst %,$(libtype$o),c)(\
$(notdir $(o-objects))))
lib-noranlib: libobjs
ifndef objects
# Create the stamp$o files to keep the parent makefile happy.
-subdir_lib: $(foreach o,$(object-suffixes),$(objpfx)stamp$o)
-$(foreach o,$(object-suffixes),$(objpfx)stamp$o):
+subdir_lib: $(foreach o,$(object-suffixes-for-libc),$(objpfx)stamp$o)
+$(foreach o,$(object-suffixes-for-libc),$(objpfx)stamp$o):
$(make-target-directory)
rm -f $@; > $@
else
$(addsuffix .%,$(filter-out $(elide-routines$o),$(notdir $(objects:.o=))))): \
$(objpfx)stamp.% ;
endef
-object-suffixes-left := $(object-suffixes)
+object-suffixes-left := $(object-suffixes-for-libc)
include $(o-iterator)
# The pattern rule tells Make to remake $(objpfx)stamp.% as
define o-iterator-doit
$(objpfx)stamp$o: $(objpfx)stamp%: $(o-objects); $$(do-ar)
endef
+ifdef static-only-routines
+object-suffixes-left := $(object-suffixes-for-libc)
+else
object-suffixes-left := $(object-suffixes)
+endif
include $(o-iterator)
define do-ar
topdir=`cd $(..).; pwd`; \
endif
+ifndef static-only-routines
+subdir_lib: $(objpfx)stamp.oS
+$(objpfx)stamp.oS:
+ $(make-target-directory)
+ rm -f $@; > $@
+endif
+
# Rules to update the $(ar-symtab-name) member with ranlib,
# one for each object flavor.
define o-iterator-doit
subdirs-stamp-o = $(subst %,$o,$(subdirs-stamps))
$(subdirs-stamps): subdir_lib;
endif
-object-suffixes-left = $(object-suffixes)
+object-suffixes-left = $(object-suffixes-for-libc)
include $(o-iterator)
-ifeq (yes,$(build-shared))
-$(common-objpfx)$(patsubst %,$(libtype.oS),c)($(ar-symtab-name)): \
- $(common-objpfx)$(patsubst %,$(libtype.oS),c)(\
- $(patsubst %,%.oS,$(static-only-routines))) \
- $(wildcard $(foreach d,$(subdirs),$(common-objpfx)$d/stamp.oS))
- $(SHELL) $(..)./autolock.sh \
- $(common-objpfx)$(patsubst %,$(libtype.oS),c).lck \
- $(RANLIB) $(common-objpfx)$(patsubst %,$(libtype.oS),c)
-endif
# This makes all the object files.
.PHONY: objects objs
-objects objs: $(foreach o,$(object-suffixes),$(o-objects)) \
+objects objs: $(foreach o,$(object-suffixes-for-libc),$(o-objects)) \
$(addprefix $(objpfx),$(extra-objs))
# Canned sequence for building an extra library archive.
# should install libc.a; this way "make install" in a subdir is guaranteed
# to install everything it changes.
ifdef objects
-installed-libcs := $(foreach o,$(object-suffixes),\
+installed-libcs := $(foreach o,$(filter-out .so,$(object-suffixes-for-libc)),\
$(inst_libdir)/$(patsubst %,$(libtype$o),\
$(libprefix)$(libc-name)))
-installed-libcs := $(filter-out %_pic.a,$(installed-libcs))
-ifdef libc.so-version
-installed-libcs += $(inst_libdir)/$(patsubst %,$(libtype.oS),\
- $(libprefix)$(libc-name))
-endif
install: $(installed-libcs)
$(installed-libcs): $(inst_libdir)/lib$(libprefix)%: lib
$(make-target-directory)
-rm -f core $(common-objpfx)stub-$(subdir)
$(rmobjs)
define rmobjs
-$(foreach o,$(object-suffixes),
+$(foreach o,$(object-suffixes-for-libc),
-rm -f $(objpfx)stamp$o $(o-objects))
--rm -f $(objpfx)stamp.oS $(patsubst %,$(objpfx)%.oS,$(static-only-routines))
endef
# Also remove the dependencies and generated source files.
endef
object-suffixes-left := $(object-suffixes)
include $(o-iterator)
-
-ifndef libc.so-version
-# Undefine this because it can't work when we libc.so is unversioned.
-static-only-routines =
-endif
-
-ifdef static-only-routines
-# These routines are to be omitted from the shared library object,
-# so we replace the PIC objects for them with the empty object file.
-$(static-only-routines:%=$(objpfx)%.os): %.os: $(common-objpfx)empty.os
- rm -f $@
- ln $< $@
- touch $@
-
-subdir_lib: $(objpfx)stamp.oS
-$(objpfx)stamp.oS: $(objpfx)stamp%: $(static-only-routines:%=$(objpfx)%.oS)
- $(do-ar)
-$(common-objpfx)$(patsubst %,$(libtype.oS),c)(\
-$(addsuffix .%,$(static-only-routines))): $(objpfx)stamp.%;
-endif
-
-ifdef shared-only-routines
-# If we have versioned code we don't need the old versions in any of the
-# static libraries.
-define o-iterator-doit
-$(shared-only-routines:%=$(objpfx)%$o): %$o: $(common-objpfx)empty$o;
- rm -f $$@
- ln $$< $$@
- touch $$@
-endef
-object-suffixes-left := $(filter-out .os,$(object-suffixes))
-include $(o-iterator)
-endif
-e 's#@@rtld-base@@#$(rtld-base)#' $< >$@
endif
-$(objpfx)ld.so: $(objpfx)librtld.os $(addprefix $(objpfx),$(rtld-ldscript)) $(load-map-file)
+$(objpfx)ld.so: $(objpfx)librtld.os $(addprefix $(objpfx),$(rtld-ldscript)) \
+ $(ld-map)
$(rtld-link) -Wl,-soname=$(rtld-installed-name)
define rtld-link
# libraries when using LD_LIBRARY_PATH in a setuid program. The user can
# add directories to the list by defining $(user-defined-trusted-dirs)
# before starting make.
-$(objpfx)trusted-dirs.h: Makefile
+$(objpfx)trusted-dirs.h: Makefile $(..)Makeconfig
$(make-target-directory)
(for dir in `echo "$(default-rpath) $(user-defined-trusted-dirs)" | \
sed 's/:/ /g'`; do \
echo " \"$$dir\","; \
done;) > $@T
mv -f $@T $@
-$(objpfx)rtldtbl.h: Makefile genrtldtbl.awk
+$(objpfx)rtldtbl.h: Makefile $(..)Makeconfig genrtldtbl.awk
$(make-target-directory)
echo "$(default-rpath)" | awk -f genrtldtbl.awk > $@T
mv -f $@T $@
-CPPFLAGS-dl-load.c = -I$(objdir)/$(subdir)
+CPPFLAGS-dl-load.c = -I$(objpfx).
CFLAGS-dl-load.c += -Wno-uninitialized
# Specify the dependencies of libdl.so; its commands come from the generic
/* Two-byte character. First test whether the next
character is also available. */
int inchar2;
- int idx;
if (cnt + 1 >= inchars)
{
ifeq (no,$(cross-compiling))
-tests: $(objpfx)collate-test $(objpfx)xfrm-test $(objpfx)tst-fmon \
- $(objpfx)tst-rpmatch
- $(SHELL) -e sort-test.sh $(common-objpfx) $(test-input)
- $(SHELL) -e tst-fmon.sh $(common-objpfx) tst-fmon.data
- $(SHELL) -e tst-locale.sh $(common-objpfx)
- $(SHELL) -e tst-rpmatch.sh $(common-objpfx)
+.PHONY: do-collate-test do-xfrm-test do-tst-fmon do-tst-rpmatch
+tests: do-collate-test do-xfrm-test do-tst-fmon do-tst-rpmatch
+do-collate-test: sort-test.sh $(objpfx)collate-test $(test-input)
+ $(SHELL) -e $< $(common-objpfx) $(test-input)
+do-xfrm-test: tst-fmon.sh $(objpfx)xfrm-test tst-fmon.data
+ $(SHELL) -e $< $(common-objpfx) tst-fmon.data
+do-tst-fmon: tst-locale.sh $(objpfx)tst-fmon $(ld-test-srcs)
+ $(SHELL) -e $< $(common-objpfx)
+do-tst-rpmatch: tst-rpmatch.sh $(objpfx)tst-rpmatch
+ $(SHELL) -e $< $(common-objpfx)
endif
# Sometimes the whole collection of locale files should be installed.
LOCALEDEF=$(common-objpfx)locale/localedef
endif
install-locales:
- (while read locale charset; do \
+ while read locale charset; do \
+ case $$locale in \#*) continue;; esac; \
$(LOCALEDEF) -c -i $$locale -f $$charset $$locale; \
- done) < SUPPORTED
+ done < SUPPORTED
to @code{sysconf}. The values are all integer constants (more
specifically, enumeration type values).
-@c This table runs a bit wide.
-@iftex
-@indexfonts
-@end iftex
@table @code
@comment unistd.h
@comment POSIX.1
@comment POSIX.1
@item _SC_THREAD_DESTRUCTOR_ITERATIONS
Inquire about the parameter corresponding to
-@code{_POSIX_THREAD_DESTRUCTOR_@*ITERATIONS}.
+@code{_POSIX_THREAD_DESTRUCTOR_ITERATIONS}.
@comment unistd.h
@comment POSIX.1
@item _SC_NL_TEXTMAX
Inquire about the parameter corresponding to @code{NL_TEXTMAX}.
@end table
-@iftex
-@textfonts
-@end iftex
@node Examples of Sysconf
@subsection Examples of @code{sysconf}
@end table
@end deftypefun
-Here is an example showing how you could implement the behavior of GNU's@*
-@w{@code{getcwd (NULL, 0)}} using only the standard behavior of
-@code{getcwd}:
+You could implement the behavior of GNU's @w{@code{getcwd (NULL, 0)}}
+using only the standard behavior of @code{getcwd}:
@smallexample
char *
function's behavior disagrees with the manual, then either the library
or the manual has a bug, so report the disagreement. If you find any
errors or omissions in this manual, please report them to the Internet
-address @email{bug-glibc-manual@@gnu.org}.
+address @email{bug-glibc-manual@@gnu.org}. If you refer to specific
+sections when reporting on the manual, please include the section names
+for easier identification.
be better if the usage were made consistent, but it is not hard to extract
the integer from the structure or put the integer into a structure.
-The following basic definitions for Internet addresses appear in the
-header file@*@file{netinet/in.h}:
+The following basic definitions for Internet addresses are declared in
+the header file @file{netinet/in.h}:
@pindex netinet/in.h
@comment netinet/in.h
@pindex arpa/inet.h
@noindent
These additional functions for manipulating Internet addresses are
-declared in@*@file{arpa/inet.h}. They represent Internet addresses in
-network byte order; they represent network numbers and
-local-address-within-network numbers in host byte order.
-@xref{Byte Order}, for an explanation of network and host byte order.
+declared in the header file @file{arpa/inet.h}. They represent Internet
+addresses in network byte order; they represent network numbers and
+local-address-within-network numbers in host byte order. @xref{Byte
+Order}, for an explanation of network and host byte order.
@comment arpa/inet.h
@comment BSD
@pindex sys/socket.h
@noindent
Here is a table of socket-level option names; all are defined in the
-header file@*@file{sys/socket.h}.
+header file @file{sys/socket.h}.
@table @code
@comment sys/socket.h
@var{delimiter}, returning the address of the next token and updating
@var{string_ptr} to point to the beginning of the next token.
+If the input string contains more than one character from
+@var{delimiter} in a row @code{strsep} returns an empty string for each
+pair of characters from @var{delimiter}. This means that a program
+normally should test for @code{strsep} returning an empty string before
+processing it.
+
This function was introduced in 4.3BSD and therefore is widely available.
@end deftypefun
token = strsep (&running, delimiters); /* token => "separated" */
token = strsep (&running, delimiters); /* token => "by" */
token = strsep (&running, delimiters); /* token => "spaces" */
+token = strsep (&running, delimiters); /* token => "" */
+token = strsep (&running, delimiters); /* token => "" */
+token = strsep (&running, delimiters); /* token => "" */
token = strsep (&running, delimiters); /* token => "and" */
+token = strsep (&running, delimiters); /* token => "" */
token = strsep (&running, delimiters); /* token => "punctuation" */
+token = strsep (&running, delimiters); /* token => "" */
token = strsep (&running, delimiters); /* token => NULL */
@end smallexample
include ../Makeconfig
+nscd-modules := nscd connections pwdcache getpwnam_r getpwuid_r grpcache \
+ getgrnam_r getgrgid_r dbg_log nscd_conf nscd_stat
+
ifeq ($(have-thread-library),yes)
others := nscd
install-sbin := nscd
-nscd-modules := nscd connections pwdcache getpwnam_r getpwuid_r grpcache \
- getgrnam_r getgrgid_r dbg_log nscd_conf nscd_stat
extra-objs := $(nscd-modules:=.o)
endif
while (! no_more)
{
int is_last_nip = nip == last_nip;
- service_user *current_nip = nip;
status = (*fct) (resbuf, buffer, buflen, __errno_location ()
H_ERRNO_VAR);
include ../Rules
# We can later add the names of other thread packages here.
-ifneq (,$(findstring linuxthreads,$(add-ons)))
+ifeq ($(have-thread-library),yes)
CFLAGS-getpwuid_r.c = -DUSE_NSCD=1
CFLAGS-getpwnam_r.c = -DUSE_NSCD=1
register unsigned long int __d0;
register char *__tmp;
__asm__ __volatile__
- ("repne; cmpsb"
- : "=S" (__tmp), "=&c" (__d0)
+ ("repne; scasb"
+ : "=D" (__tmp), "=&c" (__d0)
: "0" (__dest), "1" (0xffffffff), "a" (0)
: "cc");
+ --__tmp;
#else
register char *__tmp = __dest - 1;
__asm__ __volatile__
__STRING_INLINE char *
__strncat_g (char *__dest, __const char __src[], size_t __n)
{
- register char *__tmp = __dest - 1;
+ register char *__tmp = __dest;
register char __dummy;
+#ifdef __i686__
+ __asm__ __volatile__
+ ("repne; scasb\n"
+ "decl %1\n\t"
+ "1:\n\t"
+ "decl %3\n\t"
+ "js 2f\n\t"
+ "movb (%2),%b0\n\t"
+ "movsb\n\t"
+ "testb %b0,%b0\n\t"
+ "jne 1b\n\t"
+ "decl %1\n"
+ "2:\n\t"
+ "movb $0,(%1)"
+ : "=&a" (__dummy), "=&D" (__tmp), "=&S" (__src), "=&r" (__n)
+ : "0" (0), "1" (__tmp), "2" (__src), "3" (__n)
+ : "memory", "cc");
+#else
+ --__tmp;
__asm__ __volatile__
("1:\n\t"
"cmpb $0,1(%1)\n\t"
"jne 2b\n\t"
"decl %1\n"
"3:\n\t"
- "movb $0,(%1)\n\t"
+ "movb $0,(%1)"
: "=&q" (__dummy), "=&r" (__tmp), "=&r" (__src), "=&r" (__n)
: "1" (__tmp), "2" (__src), "3" (__n)
: "memory", "cc");
+#endif
return __dest;
}
kernel_sigaction.h
kernel_stat.h
kernel_termios.h
+lddlibc4.c
llseek.c
s_pread64.c
s_pwrite64.c
# Generate the list of SYS_* macros for the system calls (__NR_* macros).
$(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/sys/syscall.h
rm -f $(@:.h=.d)
- echo > $(@:.d=.h).new \
- '/* Generated at libc build time from kernel syscall list. */'
- SUNPRO_DEPENDENCIES='$(@:.h=.d) $(patsubst $(objpfx)%,$$(objpfx)%,\
- $(@:.d=.h) $(@:.h=.d))' \
- $(CC) -E -x c $< -D_LIBC -dM | \
- sed -n >> $(@:.d=.h).new \
- 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p'
+ { \
+ echo '/* Generated at libc build time from kernel syscall list. */';\
+ echo ''; \
+ echo '#ifndef _SYSCALL_H'; \
+ echo '# error "Never use <bits/syscall.h> directly; include <sys/syscall.h> instead."'; \
+ echo '#endif'; \
+ echo ''; \
+ SUNPRO_DEPENDENCIES='$(@:.h=.d) $(patsubst $(objpfx)%,$$(objpfx)%,\
+ $(@:.d=.h) $(@:.h=.d))' \
+ $(CC) -E -x c $< -D_LIBC -dM | \
+ sed -n 's@^#define __NR_\([^ ]*\) .*$$@#define SYS_\1 __NR_\1@p'; \
+ } > $(@:.d=.h).new
mv -f $(@:.d=.h).new $(@:.d=.h)
$(inst_includedir)/bits/syscall.h: $(objpfx)syscall-list.h