From e75154a665018d5756196275634704c95476ea6b Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Fri, 2 Aug 1996 05:27:50 +0000 Subject: [PATCH] Remade for alpha-1.93 --- Makeconfig | 16 +++-- Makerules | 1 + README | 4 +- catgets/gencat.c | 1 + configure.in | 4 +- elf/dl-cache.c | 1 + elf/dl-runtime.c | 1 + elf/dynamic-link.h | 2 +- elf/rtld.c | 3 +- login/login.c | 2 + login/logwtmp.c | 4 +- manual/Makefile | 2 +- stdio-common/_itoa.h | 5 +- sunrpc/Makefile | 7 ++ sysdeps/generic/ioctl-types.h | 6 ++ sysdeps/generic/sysdep.h | 37 ++++++++++ sysdeps/gnu/utmpbits.h | 5 +- sysdeps/i386/dl-machine.h | 8 +-- sysdeps/i386/sysdep.h | 91 +++++++++++++++++++++++++ sysdeps/stub/_exit.c | 8 +-- sysdeps/stub/socket.c | 4 +- sysdeps/stub/socketpair.c | 4 +- sysdeps/stub/stdio_lim.h | 2 - sysdeps/unix/i386/sysdep.h | 68 +----------------- sysdeps/unix/mk-local_lim.c | 9 ++- sysdeps/unix/sysdep.h | 19 +----- sysdeps/unix/sysv/linux/Makefile | 2 +- sysdeps/unix/sysv/linux/sys/sysmacros.h | 31 +++++++++ 28 files changed, 229 insertions(+), 118 deletions(-) create mode 100644 sysdeps/generic/sysdep.h create mode 100644 sysdeps/i386/sysdep.h create mode 100644 sysdeps/unix/sysv/linux/sys/sysmacros.h diff --git a/Makeconfig b/Makeconfig index 23dca2cc4c..de883ccea5 100644 --- a/Makeconfig +++ b/Makeconfig @@ -298,9 +298,9 @@ endif ifndef +link +link = $(CC) -nostdlib -nostartfiles -o $@ \ $(sysdep-LDFLAGS) $(config-LDFLAGS) $(LDFLAGS) \ - $(addprefix $(csu-objpfx),start.o $(+preinit)) \ + $(+preinit) \ $(filter-out $(common-objpfx)libc%,$^) $(link-libc) \ - $(addprefix $(csu-objpfx),$(+postinit)) + $(+postinit) endif ifndef config-LDFLAGS ifeq (yes,$(build-shared)) @@ -334,8 +334,8 @@ ifndef gnulib gnulib := -lgcc endif ifeq ($(elf),yes) -+preinit = crti.o -+postinit = crtn.o ++preinit = $(addprefix $(csu-objpfx),crti.o) ++postinit = $(addprefix $(csu-objpfx),crtn.o) endif ifdef objpfx csu-objpfx = $(objpfx) @@ -521,10 +521,12 @@ $(common-objpfx)soversions.mk: $(..)shlib-versions $(..)Makeconfig \ test -n "$$versions" || continue; \ case '$(config-machine)-$(config-vendor)-$(config-os)' in $$conf)\ for v in $$versions; do \ - lib="$${v%%=*}"; if eval "test -z \"\$$vers_lib$$lib\""; then \ + lib=`echo $$v | sed 's/=.*$$//'`; \ + if eval "test -z \"\$$vers_lib$$lib\""; then \ eval vers_lib$${lib}=yes; \ - echo $$lib.so-version=.$${v##$$lib=}; fi; \ - done ;; esac; done > $@T + echo $$v | sed "s/^.*=/$$lib.so-version=./"; \ + fi; \ + done ;; esac; done > $@T; exit 0 mv -f $@T $@ # Get $(version) defined with the release version number. diff --git a/Makerules b/Makerules index 3eabcb453e..f2d190a57a 100644 --- a/Makerules +++ b/Makerules @@ -305,6 +305,7 @@ endif define build-shlib $(LINK.o) -shared -o $@ $(sysdep-LDFLAGS) $(config-LDFLAGS) \ + -B$(csu-objpfx) \ -Wl,-soname=lib$(libprefix)$(@F:lib%.so=%).so$($(@F)-version) \ $(LDFLAGS.so) $(LDFLAGS-$(@F:lib%.so=%).so) \ -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link) \ diff --git a/README b/README index 6c4ab90d6b..8f2c548dd1 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -This directory contains the version 1.92 test release of the GNU C Library. +This directory contains the version 1.93 test release of the GNU C Library. Many bugs have been fixed since the last release. Some bugs surely remain. @@ -38,7 +38,7 @@ provides the Unix `crypt' function, plus some other entry points. Because of the United States export restriction on DES implementations, we are distributing this code separately from the rest of the C library. There is an extra distribution tar file just for crypt; it is -called `glibc-1.92-crypt.tar.gz'. You can just unpack the crypt +called `glibc-1.93-crypt.tar.gz'. You can just unpack the crypt distribution along with the rest of the C library and build; you can also build the library without getting crypt. Users outside the USA can get the crypt distribution via anonymous FTP from ftp.uni-c.dk diff --git a/catgets/gencat.c b/catgets/gencat.c index a193606027..e78fb0ace0 100644 --- a/catgets/gencat.c +++ b/catgets/gencat.c @@ -27,6 +27,7 @@ Boston, MA 02111-1307, USA. */ #include #include #include +#include #include #include #include diff --git a/configure.in b/configure.in index f1d3d9b0ca..93c2c0926a 100644 --- a/configure.in +++ b/configure.in @@ -74,8 +74,8 @@ AC_ARG_ENABLE(omitfp, dnl dnl Generic infrastructure for drop-in additions to libc. AC_ARG_ENABLE(add-ons, dnl [ --enable-add-ons=DIR... configure and build named extra directories], - add_ons=`echo "$enableval" | sed 's/,/ /g'`, - add_ons=) + [add_ons=`echo "$enableval" | sed 's/,/ /g'`], + [add_ons=]) AC_CONFIG_SUBDIRS($add_ons) AC_CANONICAL_HOST diff --git a/elf/dl-cache.c b/elf/dl-cache.c index a282d313cf..6cd454c7ac 100644 --- a/elf/dl-cache.c +++ b/elf/dl-cache.c @@ -18,6 +18,7 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include +#include #include /* System-dependent function to read a file's whole contents diff --git a/elf/dl-runtime.c b/elf/dl-runtime.c index 2785592c44..16e037914b 100644 --- a/elf/dl-runtime.c +++ b/elf/dl-runtime.c @@ -18,6 +18,7 @@ not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include +#include /* The global scope we will use for symbol lookups. diff --git a/elf/dynamic-link.h b/elf/dynamic-link.h index 45b6b2dcde..e4bb022dcf 100644 --- a/elf/dynamic-link.h +++ b/elf/dynamic-link.h @@ -24,7 +24,7 @@ Cambridge, MA 02139, USA. */ /* Read the dynamic section at DYN and fill in INFO with indices DT_*. */ -static inline void +static inline void __attribute__ ((unused)) elf_get_dynamic_info (ElfW(Dyn) *dyn, ElfW(Dyn) *info[DT_NUM + DT_PROCNUM]) { unsigned int i; diff --git a/elf/rtld.c b/elf/rtld.c index 3657efdc61..fe5d269de2 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -245,7 +245,8 @@ of this helper program; chances are you did not intend to run this program.\n", if (mode == verify) /* We were called just to verify that this is a dynamic executable using us as the program interpreter. */ - _exit (strcmp (_dl_rtld_map.l_libname, _dl_rtld_map.l_name) + _exit ((strcmp (_dl_rtld_map.l_libname, _dl_rtld_map.l_name) || + l->l_ld == NULL) ? EXIT_FAILURE : EXIT_SUCCESS); /* Extract the contents of the dynamic section for easy access. */ diff --git a/login/login.c b/login/login.c index 76f27a0875..a53613f238 100644 --- a/login/login.c +++ b/login/login.c @@ -93,7 +93,9 @@ login (const struct utmp *ut) #if _HAVE_UT_TYPE - 0 copy.ut_type = USER_PROCESS; #endif +#if _HAVE_UT_PID - 0 copy.ut_pid = getpid (); +#endif /* Seek tty. */ found_tty = tty_name (STDIN_FILENO, &tty, sizeof (_tty)); diff --git a/login/logwtmp.c b/login/logwtmp.c index 2ae6a68dca..17c900181f 100644 --- a/login/logwtmp.c +++ b/login/logwtmp.c @@ -39,7 +39,9 @@ logwtmp (const char *line, const char *name, const char *host) /* Set information in new entry. */ memset (&ut, 0, sizeof (ut)); +#if _HAVE_UT_PID - 0 ut.ut_pid = getpid (); +#endif #if _HAVE_UT_TYPE - 0 ut.ut_type = name[0] ? USER_PROCESS : DEAD_PROCESS; #endif @@ -52,7 +54,7 @@ logwtmp (const char *line, const char *name, const char *host) #if _HAVE_UT_TV - 0 __gettimeofday (&ut.ut_tv, NULL); #else - __time (&ut.ut_time); + time (&ut.ut_time); #endif /* Try to lock the file. */ diff --git a/manual/Makefile b/manual/Makefile index 54d0b06448..cc85d4c8bf 100644 --- a/manual/Makefile +++ b/manual/Makefile @@ -32,7 +32,7 @@ include ../Makeconfig endif # Set chapters and chapters-incl. -include chapters +-include chapters chapters: libc.texinfo $(find-includes) ifdef chapters diff --git a/stdio-common/_itoa.h b/stdio-common/_itoa.h index 75f5f85892..97457823f4 100644 --- a/stdio-common/_itoa.h +++ b/stdio-common/_itoa.h @@ -29,8 +29,9 @@ Cambridge, MA 02139, USA. */ extern char *_itoa __P ((unsigned long long int value, char *buflim, unsigned int base, int upper_case)); -static inline char *_itoa_word (unsigned long value, char *buflim, - unsigned int base, int upper_case) +static inline char * __attribute__ ((unused)) +_itoa_word (unsigned long value, char *buflim, + unsigned int base, int upper_case) { extern const char _itoa_upper_digits[], _itoa_lower_digits[]; const char *digits = upper_case ? _itoa_upper_digits : _itoa_lower_digits; diff --git a/sunrpc/Makefile b/sunrpc/Makefile index 428e6a1ad1..11f5541542 100644 --- a/sunrpc/Makefile +++ b/sunrpc/Makefile @@ -73,11 +73,18 @@ rpcgen-objs = rpc_main.o rpc_hout.o rpc_cout.o rpc_parse.o \ distribute := rpc_util.h rpc_parse.h rpc_scan.h $(rpcgen-objs:.o=.c) etc.rpc extra-objs = $(rpcgen-objs) +all: # Make this the default target; it will be defined in Rules. + +include ../Makeconfig + +ifeq (no,$(cross-compile)) +# We can only build this library if we can run the rpcgen we build. extra-libs := librpcsvc extra-libs-others := librpcsvc # Make it in `others' pass, not `lib' pass. librpcsvc-routines = $(rpcsvc:%.x=x%) librpcsvc-inhibit-o = .so # Build no shared rpcsvc library. omit-deps = $(librpcsvc-routines) +endif # Sun's code is not too clean. override +gccwarn := -w diff --git a/sysdeps/generic/ioctl-types.h b/sysdeps/generic/ioctl-types.h index 0fc0cd40e1..1116d52e33 100644 --- a/sysdeps/generic/ioctl-types.h +++ b/sysdeps/generic/ioctl-types.h @@ -83,6 +83,11 @@ struct winsize #endif #if defined (TIOCGSIZE) || defined (TIOCSSIZE) +/* The BSD-style ioctl constructor macros use `sizeof', which can't be used + in a preprocessor conditional. Since the commands are always unique + regardless of the size bits, we can safely define away `sizeof' for the + purpose of the conditional. */ +# define sizeof(type) 0 # if defined (TIOCGWINSZ) && TIOCGSIZE == TIOCGWINSZ /* Many systems that have TIOCGWINSZ define TIOCGSIZE for source compatibility with Sun; they define `struct ttysize' to have identical @@ -105,6 +110,7 @@ struct ttysize int ts_lines, ts_cols; /* Lines and columns, in characters. */ }; # endif +# undef sizeof /* See above. */ #endif diff --git a/sysdeps/generic/sysdep.h b/sysdeps/generic/sysdep.h new file mode 100644 index 0000000000..def2d18dc2 --- /dev/null +++ b/sysdeps/generic/sysdep.h @@ -0,0 +1,37 @@ +/* Generic asm macros used on many machines. +Copyright (C) 1991, 92, 93, 96 Free Software Foundation, Inc. +This file is part of the GNU C Library. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU C Library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +#ifndef C_LABEL + +/* Define a macro we can use to construct the asm name for a C symbol. */ +#ifdef NO_UNDERSCORES +#ifdef __STDC__ +#define C_LABEL(name) name##: +#else +#define C_LABEL(name) name/**/: +#endif +#else +#ifdef __STDC__ +#define C_LABEL(name) _##name##: +#else +#define C_LABEL(name) _/**/name/**/: +#endif +#endif + +#endif diff --git a/sysdeps/gnu/utmpbits.h b/sysdeps/gnu/utmpbits.h index 4749fdd3fe..0dd55b59fa 100644 --- a/sysdeps/gnu/utmpbits.h +++ b/sysdeps/gnu/utmpbits.h @@ -71,9 +71,10 @@ struct utmp #define ut_time ut_tv.tv_sec /* Backwards compatibility. */ -/* Tell the user that we have a modern system with UT_HOST, UT_TYPE, UT_ID - and UT_TV fields. */ +/* Tell the user that we have a modern system with UT_HOST, UT_PID, + UT_TYPE, UT_ID and UT_TV fields. */ #define _HAVE_UT_TYPE 1 +#define _HAVE_UT_PID 1 #define _HAVE_UT_ID 1 #define _HAVE_UT_TV 1 #define _HAVE_UT_HOST 1 diff --git a/sysdeps/i386/dl-machine.h b/sysdeps/i386/dl-machine.h index dc88b043ea..111122e437 100644 --- a/sysdeps/i386/dl-machine.h +++ b/sysdeps/i386/dl-machine.h @@ -25,7 +25,7 @@ Cambridge, MA 02139, USA. */ #include /* Return nonzero iff E_MACHINE is compatible with the running host. */ -static inline int +static inline int __attribute__ ((unused)) elf_machine_matches_host (Elf32_Half e_machine) { switch (e_machine) @@ -41,7 +41,7 @@ elf_machine_matches_host (Elf32_Half e_machine) /* Return the run-time address of the _GLOBAL_OFFSET_TABLE_. Must be inlined in a function which uses global data. */ -static inline Elf32_Addr * +static inline Elf32_Addr * __attribute__ ((unused)) elf_machine_got (void) { register Elf32_Addr *got asm ("%ebx"); @@ -50,7 +50,7 @@ elf_machine_got (void) /* Return the run-time load address of the shared object. */ -static inline Elf32_Addr +static inline Elf32_Addr __attribute__ ((unused)) elf_machine_load_address (void) { Elf32_Addr addr; @@ -72,7 +72,7 @@ elf_machine_load_address (void) /* Set up the loaded object described by L so its unrelocated PLT entries will jump to the on-demand fixup code in dl-runtime.c. */ -static inline void +static inline void __attribute__ ((unused)) elf_machine_runtime_setup (struct link_map *l, int lazy) { Elf32_Addr *got; diff --git a/sysdeps/i386/sysdep.h b/sysdeps/i386/sysdep.h new file mode 100644 index 0000000000..9c312b0d0c --- /dev/null +++ b/sysdeps/i386/sysdep.h @@ -0,0 +1,91 @@ +/* Assembler macros for i386. +Copyright (C) 1991, 92, 93, 95, 96 Free Software Foundation, Inc. +This file is part of the GNU C Library. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU C Library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +#include + +#ifdef ASSEMBLER + +/* Syntactic details of assembler. */ + +#ifdef HAVE_ELF + +/* ELF uses byte-counts for .align, most others use log2 of count of bytes. */ +#define ALIGNARG(log2) 1< +#include #ifdef ASSEMBLER -/* Syntactic details of assembler. */ - -#ifdef HAVE_ELF - -/* ELF uses byte-counts for .align, most others use log2 of count of bytes. */ -#define ALIGNARG(log2) 1< + #include #define HAVE_SYSCALLS @@ -34,21 +36,6 @@ Cambridge, MA 02139, USA. */ an instruction such that "MOVE(r1, r0)" works. ret should be defined as the return instruction. */ -/* Define a macro we can use to construct the asm name for a C symbol. */ -#ifdef NO_UNDERSCORES -#ifdef __STDC__ -#define C_LABEL(name) name##: -#else -#define C_LABEL(name) name/**/: -#endif -#else -#ifdef __STDC__ -#define C_LABEL(name) _##name##: -#else -#define C_LABEL(name) _/**/name/**/: -#endif -#endif - #ifdef __STDC__ #define SYS_ify(syscall_name) SYS_##syscall_name #else diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index 8c7f26dc81..85bab92635 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -3,7 +3,7 @@ sysdep_routines += sysctl sysdep_headers += sys/mount.h sys/sysinfo.h sys/acct.h sys/sysctl.h \ sys/module.h sys/io.h sys/klog.h sys/kdaemon.h \ - sys/user.h syscall-list.h + sys/user.h syscall-list.h sys/sysmacros.h # Generate the list of SYS_* macros for the system calls (__NR_* macros). $(objpfx)syscall-%.h $(objpfx)syscall-%.d: ../sysdeps/unix/sysv/linux/syscall.h diff --git a/sysdeps/unix/sysv/linux/sys/sysmacros.h b/sysdeps/unix/sysv/linux/sys/sysmacros.h new file mode 100644 index 0000000000..61e55e3a8c --- /dev/null +++ b/sysdeps/unix/sysv/linux/sys/sysmacros.h @@ -0,0 +1,31 @@ +/* Definitions of macros to access `dev_t' values. +Copyright (C) 1996 Free Software Foundation, Inc. +This file is part of the GNU C Library. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU C Library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +#ifndef _SYS_SYSMACROS_H +#define _SYS_SYSMACROS_H 1 + +/* Get definition from kernel header. */ +#include + +/* For compatibility we provide alternative names. */ +#define major(dev) MAJOR ((unsigned int) (dev)) +#define minor(dev) MINOR ((unsigned int) (dev)) +#define makedev(major, minor) MKDEV (major, minor) + +#endif /* sys/sysmacros.h */