+Mon Aug 12 03:31:58 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ * nss/nsswitch.c (__nss_configure_lookup): New function.
+ Allows to specify services.
+ * nss/XXX-lookup.h: Rename database variable and make global.
+ * nss/databases.def: New file. Real names of all databases.
+
+ * nss/nss.h: New file. Contains declaration useful for users
+ and service developers.
+ * nss/nsswitch.h: Move some declarations to nss/nss.h.
+ * nss.h: New file. Wrapper around nss/nss.h.
+
+ * nss/Makefile (headers): Add nss.h.
+ (distributes): Add databases.h.
+
+Sun Aug 11 16:19:42 1996 Ulrich Drepper <drepper@cygnus.com>
+
+ Help the poor people with fast machines by making sure only
+ one `ar' commands works on the library.
+ * autolock.sh: New file. Written by Tom Tromey.
+ * Makerules (do-ar): Call autolock.sh shell script instead of
+ directly using `ar'.
+ * config.make.in: Make configuration variable AUTOLOCK which
+ gets initialized by configure.
+ * configure.in: Define variable AUTOLOCK to point to autolock.sh
+ script and mark it to substitute.
+
+ * string/Makefile: Add -fno-builtin for tst-strlen.c, too.
+
+ * elf/dl-lookup.c (_dl_lookup_symbol): Allow self-referencing.
+ Patch by David Mosberger-Tang.
+
+Sun Aug 11 01:12:38 1996 Richard Henderson <rth@tamu.edu>
+
+ * sysdeps/alpha/dl-machine.h (elf_alpha_fix_plt): Optimize LD_BIND_NOW
+ startup by moving Icache flush from here ...
+ (ELF_MACHINE_RUNTIME_TRAMPOLINE): ... to here.
+ (ELF_MACHINE_USER_ADDRESS_MASK): Delete; it is unused.
+
+ * sysdeps/alpha/divrem.h: Update comment to reflect the actual
+ calling conventions. The code is already correct.
+
+Sun Aug 11 01:06:42 1996 Richard Henderson <rth@tamu.edu>
+
+ * string/Makefile: Compile tester with -fno-builtin as we want to
+ test our implementations, not gcc's.
+
Sat Aug 10 13:17:27 1996 David Mosberger-Tang <davidm@azstarnet.com>
* shadow.h: New file.
Usenix Winter '92, pp. 419--428
or just ask. Currently mostly i?86 optimized versions exist.
+ Alpha versions are on their way, so please ask before working
+ on this.
[ 8] Write nftw() function. Perhaps it might be good to reimplement the
implementation
c) will be extended with the current hooks and additional functions
+ Please contact bug-glibc@prep.ai.mit.edu before starting to avoid
+ duplicated work.
-[12] Implement shadow password handling. There exist some but I don't
- know of any falling under LGPL and where the author is willing to
- contribute it to the FSF.
-
-
-[13] Write access function for shadow, netmasks, bootparams, netgroup,
- publickey, automount, aliases databases for nss_files and nss_db
- module.
+[12] Write access function for netmasks, bootparams, netgroup, publickey,
+ automount, aliases databases for nss_files and nss_db module.
The functions should be embedded in the nss scheme. This is not
hard and not all services must be supported at once.
fi
fi
+AUTOLOCK="`(cd $srcdir; pwd)`/autolock.sh"
+
echo $ac_n "checking for signed size_t type""... $ac_c" 1>&6
if eval "test \"`echo '$''{'libc_cv_signed_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1306 "configure"
+#line 1308 "configure"
#include "confdefs.h"
#define __need_size_t
#define __need_wchar_t
if (&size == NULL || &wchar == NULL) abort ();
; return 0; }
EOF
-if { (eval echo configure:1322: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1324: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
libc_cv_friendly_stddef=yes
else
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1429 "configure"
+#line 1431 "configure"
#include "confdefs.h"
int main() { return 0; }
asm (".text");
; return 0; }
EOF
-if { (eval echo configure:1439: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1441: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
libc_cv_have_initfini=yes
else
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1467 "configure"
+#line 1469 "configure"
#include "confdefs.h"
asm ("_glibc_foobar:");
int main() { return 0; }
glibc_foobar ();
; return 0; }
EOF
-if { (eval echo configure:1475: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
+if { (eval echo configure:1477: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
libc_cv_asm_underscores=yes
else
EOF
if { ac_try='${CC-cc} $CFLAGS
-nostdlib -nostartfiles -Wl,--no-whole-archive
- -o conftest conftest.c'; { (eval echo configure:1567: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
+ -o conftest conftest.c'; { (eval echo configure:1569: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; }; then
libc_cv_ld_no_whole_archive=yes
else
libc_cv_ld_no_whole_archive=no
s%@CPP@%$CPP%g
s%@AR@%$AR%g
s%@RANLIB@%$RANLIB%g
+s%@AUTOLOCK@%$AUTOLOCK%g
s%@libc_cv_have_initfini@%$libc_cv_have_initfini%g
s%@libc_cv_ld_no_whole_archive@%$libc_cv_ld_no_whole_archive%g
s%@uname_sysname@%$uname_sysname%g
extern int execlp __P ((__const char *__file, ...));
+#ifdef __USE_MISC
+/* Add INC to priority of the current process. */
+extern int nice __P ((int __inc));
+#endif
+
+
/* Terminate program execution with the low-order 8 bits of STATUS. */
extern void _exit __P ((int __status)) __attribute__ ((__noreturn__));
--- /dev/null
+#include <shadow/shadow.h>
/* This is the type we use for generic socket address arguments.
- With GCC 2.7 and later, the funky union causes redeclarations or uses with
- any of the listed types to be allowed without complaint. */
-#if (!defined (__GNUC__) || __GNUC__ < 2 || \
+ With GCC 2.7 and later, the funky union causes redeclarations or
+ uses with any of the listed types to be allowed without complaint.
+ G++ 2.7 does not support transparent unions so there we want the
+ old-style declaration, too. */
+#if (!defined (__GNUC__) || __GNUC__ < 2 || defined(__cplusplus) || \
(__GNUC__ == 2 && __GNUC_MINOR__ < 7))
#define __SOCKADDR_ARG struct sockaddr *
#define __CONST_SOCKADDR_ARG __const struct sockaddr *
#include <sysdep.h>
.text
- .globl __start
+ .globl _start /* what ELF wants */
+ .globl __start /* for backwards (ECOFF) comatibility */
.align 3
.ent __start, 0
+_start:
__start:
.frame fp, 0, zero
mov zero, fp
struct dirent *d;
int save = errno;
+ if (!__isatty (fd))
+ return NULL;
+
if (fstat (fd, &st) < 0)
return NULL;
mydev = st.st_dev;
return -1;
}
+ if (!__isatty (fd))
+ return -1;
+
if (fstat (fd, &st) < 0)
return -1;
mydev = st.st_dev;
char tty_pathname[2 + 2 * NAME_MAX];
char *real_tty_path = tty_pathname;
char *result = NULL;
- static struct utmp_data utmp_data = { ut_fd: -1 };
+ struct utmp_data utmp_data = { ut_fd: -1 };
+ static char name[UT_NAMESIZE + 1];
struct utmp *ut, line;
- {
- int err = 0;
- int d = __open ("/dev/tty", 0);
- if (d < 0)
- return NULL;
-
- if (__ttyname_r (d, real_tty_path, sizeof (tty_pathname)) < 0)
- err = errno;
- (void) close (d);
-
- if (err != 0)
- {
- errno = err;
- return NULL;
- }
- }
+ /* Get name of tty connected to fd 0. Return NULL if not a tty or
+ if fd 0 isn't open. Note that a lot of documentation says that
+ getlogin() is based on the controlling terminal---what they
+ really mean is "the terminal connected to standard input". The
+ getlogin() implementation of DEC Unix, SunOS, Solaris, HP-UX all
+ return NULL if fd 0 has been closed, so this is the compatible
+ thing to do. Note that ttyname(open("/dev/tty")) on those
+ systems returns /dev/tty, so that is not a possible solution for
+ getlogin(). */
+ if (__ttyname_r (0, real_tty_path, sizeof (tty_pathname)) < 0)
+ return NULL;
real_tty_path += 5; /* Remove "/dev/". */
result = NULL;
}
else
- result = ut->ut_line;
+ {
+ strncpy (name, ut->ut_user, UT_NAMESIZE);
+ name[UT_NAMESIZE] = '\0';
+ result = name;
+ }
__endutent_r (&utmp_data);
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/sysmacros.h
+ sys/user.h syscall-list.h sys/sysmacros.h sys/procfs.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
* so the following defines apply to LCA as well.
*/
#define APECS_IO_BASE (0xfffffc01c0000000UL)
+#define APECS_SPARSE_MEM (0xfffffc0200000000UL)
#define APECS_DENSE_MEM (0xfffffc0300000000UL)
-#define ALCOR_IO_BASE (0xfffffc8580000000UL)
-#define ALCOR_DENSE_MEM (0xfffffc8600000000UL)
+#define CIA_IO_BASE (0xfffffc8580000000UL)
+#define CIA_SPARSE_MEM (0xfffffc8000000000UL)
+#define CIA_DENSE_MEM (0xfffffc8600000000UL)
enum {
- IOSYS_JENSEN = 0, IOSYS_APECS = 1, IOSYS_ALCOR = 2
+ IOSYS_JENSEN = 0, IOSYS_APECS = 1, IOSYS_CIA = 2
} iosys_t;
struct ioswtch {
const char *name;
int io_sys;
unsigned long bus_memory_base;
+ unsigned long sparse_bus_memory_base;
} platform[] = {
- {"Alcor", IOSYS_ALCOR, ALCOR_DENSE_MEM},
- {"Avanti", IOSYS_APECS, APECS_DENSE_MEM},
- {"Cabriolet", IOSYS_APECS, APECS_DENSE_MEM},
- {"EB164", IOSYS_ALCOR, ALCOR_DENSE_MEM},
- {"EB64+", IOSYS_APECS, APECS_DENSE_MEM},
- {"EB66", IOSYS_APECS, APECS_DENSE_MEM}, /* LCA same as APECS */
- {"EB66P", IOSYS_APECS, APECS_DENSE_MEM}, /* LCA same as APECS */
- {"Jensen", IOSYS_JENSEN, JENSEN_MEM},
- {"Mikasa", IOSYS_APECS, APECS_DENSE_MEM},
- {"Mustang", IOSYS_APECS, APECS_DENSE_MEM},
- {"Noname", IOSYS_APECS, APECS_DENSE_MEM}, /* LCA same as APECS */
+ {"Alcor", IOSYS_CIA, CIA_DENSE_MEM, CIA_SPARSE_MEM},
+ {"Avanti", IOSYS_APECS, APECS_DENSE_MEM, APECS_SPARSE_MEM},
+ {"Cabriolet", IOSYS_APECS, APECS_DENSE_MEM, APECS_SPARSE_MEM},
+ {"EB164", IOSYS_CIA, CIA_DENSE_MEM, CIA_SPARSE_MEM},
+ {"EB64+", IOSYS_APECS, APECS_DENSE_MEM, APECS_SPARSE_MEM},
+ {"EB66", IOSYS_APECS, APECS_DENSE_MEM, APECS_SPARSE_MEM},
+ {"EB66P", IOSYS_APECS, APECS_DENSE_MEM, APECS_SPARSE_MEM},
+ {"Jensen", IOSYS_JENSEN, JENSEN_MEM, JENSEN_MEM},
+ {"Mikasa", IOSYS_APECS, APECS_DENSE_MEM, APECS_SPARSE_MEM},
+ {"Mustang", IOSYS_APECS, APECS_DENSE_MEM, APECS_SPARSE_MEM},
+ {"Noname", IOSYS_APECS, APECS_DENSE_MEM, APECS_SPARSE_MEM},
};
} io;
static unsigned long bus_memory_base = -1;
+static unsigned long sparse_bus_memory_base = -1;
extern void __sethae (unsigned long); /* we can't use asm/io.h */
DCL_IN(jensen, inw, JENSEN)
DCL_IN(jensen, inl, JENSEN)
-/* The APECS functions are also used for ALCOR since they are
+/* The APECS functions are also used for CIA since they are
identical. */
DCL_SETHAE(apecs, APECS)
if (strcmp (platform[i].name, systype) == 0)
{
bus_memory_base = platform[i].bus_memory_base;
+ sparse_bus_memory_base = platform[i].sparse_bus_memory_base;
io.sys = platform[i].io_sys;
if (io.sys == IOSYS_JENSEN)
io.swp = &ioswtch[0];
{
case IOSYS_JENSEN: base = JENSEN_IO_BASE; break;
case IOSYS_APECS: base = APECS_IO_BASE; break;
- case IOSYS_ALCOR: base = ALCOR_IO_BASE; break;
+ case IOSYS_CIA: base = CIA_IO_BASE; break;
default:
errno = ENODEV;
return -1;
return bus_memory_base;
}
+unsigned long
+_bus_base_sparse(void)
+{
+ if (!io.swp && init_iosys () < 0)
+ return -1;
+ return sparse_bus_memory_base;
+}
+
weak_alias (_sethae, sethae);
weak_alias (_ioperm, ioperm);
weak_alias (_iopl, iopl);
weak_alias (_outw, outw);
weak_alias (_outl, outl);
weak_alias (_bus_base, bus_base);
+weak_alias (_bus_base_sparse, bus_base_sparse);
char ip_opts[40]; /* Actually variable in size. */
};
+__BEGIN_DECLS
+
/* Functions to convert between host and network byte order. */
extern unsigned long int ntohl __P ((unsigned long int));
extern unsigned long int htonl __P ((unsigned long int));
extern unsigned short int htons __P ((unsigned short int));
+/* Bind socket FD to a privileged IP address SIN. */
+extern int bindresvport __P ((int __fd, struct sockaddr_in * __sin));
+
+__END_DECLS
+
#include <endian.h>
#if __BYTE_ORDER == __BIG_ENDIAN
#define htons(x) (x)
#endif
-__BEGIN_DECLS
-
-/* Bind socket FD to a privileged IP address SIN. */
-extern int bindresvport __P((int __fd, struct sockaddr_in * __sin));
-
-__END_DECLS
-
#endif /* netinet/in.h */
--- /dev/null
+#include <linux/elfcore.h>