about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--FAQ.in44
-rw-r--r--sysdeps/unix/sysv/linux/bits/stat.h6
-rw-r--r--sysdeps/unix/sysv/linux/bits/types.h4
-rw-r--r--sysdeps/unix/sysv/linux/kernel_stat.h1
-rw-r--r--sysdeps/unix/sysv/linux/mips/bits/types.h4
-rw-r--r--sysdeps/unix/sysv/linux/xstatconv.c4
7 files changed, 54 insertions, 19 deletions
diff --git a/ChangeLog b/ChangeLog
index 6781b1ea7b..d07bf3b3e5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,13 +1,3 @@
-1999-02-10  Ulrich Drepper  <drepper@cygnus.com>
-
-	* sysdeps/unix/sysv/linux/kernel_stat.h: Define _NO_LFS___PAD1.
-	* sysdeps/unix/sysv/linux/xstatconv.c (xstat64_conv): Don't initialize
-	__pad1 if _NO_LFS___PAD1 is defined.
-	* sysdeps/unix/sysv/linux/bits/stat.h: Remove __pad1 from stat64
-	definition.
-	* sysdeps/unix/sysv/linux/bits/types.h: Change __ino64_t to 64 bits.
-	* sysdeps/unix/sysv/linux/mips/bits/types.h: Likewise.
-
 1999-02-09  Ulrich Drepper  <drepper@cygnus.com>
 
 	* po/el.po: Update from translation team.
diff --git a/FAQ.in b/FAQ.in
index 56df024fc9..bac2e65f82 100644
--- a/FAQ.in
+++ b/FAQ.in
@@ -1215,6 +1215,50 @@ ignore the warnings.
 compiles after converting an old program to standard C.
 
 
+??	After upgrading to glibc 2.1, I receive errors about
+	unresolved symbols, like `_dl_initial_searchlist' and can not
+	execute any binaries.  What went wrong?
+
+{AJ} This normally happens if your libc and ld (dynamic linker) are from
+different releases of glibc.  For example, the dynamic linker
+/lib/ld-linux.so.2 comes from glibc 2.0.x, but the version of libc.so.6 is
+from glibc 2.1.
+
+The path /lib/ld-linux.so.2 is hardcoded in every glibc2 binary but
+libc.so.6 is searched via /etc/ld.so.cache and in some special directories
+like /lib and /usr/lib.  If you run configure with another prefix than /usr
+and put this prefix before /lib in /etc/ld.so.conf, your system will break.
+
+So what can you do?  Either of the following should work:
+
+* Run `configure' with the same prefix argument you've used for glibc 2.0.x
+  so that the same paths are used.
+* Replace /lib/ld-linux.so.2 with a link to the dynamic linker from glibc
+  2.1.
+
+You can even call the dynamic linker by hand if everything fails.  You've
+got to set LD_LIBRARY_PATH so that the corresponding libc is found and also
+need to provide an absolute path to your binary:
+
+	LD_LIBRARY_PATH=<path-where-libc.so.6-lives> \
+	<path-where-corresponding-dynamic-linker-lives>/ld-linux.so.2 \
+	<path-to-binary>/binary
+
+For example `LD_LIBRARY_PATH=/libold /libold/ld-linux.so.2 /bin/mv ...'
+might be useful in fixing a broken system (if /libold contains dynamic
+linker and corresponding libc).
+
+With that command line no path is used.  To further debug problems with the
+dynamic linker, use the LD_DEBUG environment variable, e.g.
+`LD_DEBUG=help echo' for the help text.
+
+If you just want to test this release, don't put the lib directory in
+/etc/ld.so.conf.  You can call programs directly with full paths (as above).
+When compiling new programs against glibc 2.1, you've got to specify the
+correct paths to the compiler (option -I with gcc) and linker (options
+--dynamic-linker, -L and --rpath).
+
+
 ? Miscellaneous
 
 ??	After I changed configure.in I get `Autoconf version X.Y.
diff --git a/sysdeps/unix/sysv/linux/bits/stat.h b/sysdeps/unix/sysv/linux/bits/stat.h
index ff7ffcf2ee..c175668a06 100644
--- a/sysdeps/unix/sysv/linux/bits/stat.h
+++ b/sysdeps/unix/sysv/linux/bits/stat.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1995, 1996, 1997, 1998 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
@@ -36,8 +36,8 @@
 struct stat
   {
     __dev_t st_dev;			/* Device.  */
-#ifndef __USE_FILE_OFFSET64
     unsigned short int __pad1;
+#ifndef __USE_FILE_OFFSET64
     __ino_t st_ino;			/* File serial number.	*/
 #else
     __ino64_t st_ino;			/* File serial number.	*/
@@ -74,6 +74,8 @@ struct stat
 struct stat64
   {
     __dev_t st_dev;			/* Device.  */
+    unsigned short int __pad1;
+
     __ino64_t st_ino;			/* File serial number.	*/
     __mode_t st_mode;			/* File mode.  */
     __nlink_t st_nlink;			/* Link count.  */
diff --git a/sysdeps/unix/sysv/linux/bits/types.h b/sysdeps/unix/sysv/linux/bits/types.h
index 3ec74becbc..046e7f7d5d 100644
--- a/sysdeps/unix/sysv/linux/bits/types.h
+++ b/sysdeps/unix/sysv/linux/bits/types.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,94,95,96,97,98,99 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 94, 95, 96, 97, 98 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
@@ -132,7 +132,7 @@ typedef __u_long __fsfilcnt_t;
 typedef __u_quad_t __fsfilcnt64_t;
 
 /* Type of file serial numbers.  */
-typedef __u_quad_t __ino64_t;
+typedef __u_long __ino64_t;
 
 /* Type of file sizes and offsets.  */
 typedef __loff_t __off64_t;
diff --git a/sysdeps/unix/sysv/linux/kernel_stat.h b/sysdeps/unix/sysv/linux/kernel_stat.h
index 9db15616cc..bd7ddcc9bc 100644
--- a/sysdeps/unix/sysv/linux/kernel_stat.h
+++ b/sysdeps/unix/sysv/linux/kernel_stat.h
@@ -4,7 +4,6 @@ struct kernel_stat
     unsigned short int st_dev;
     unsigned short int __pad1;
 #define _HAVE___PAD1
-#define _NO_LFS___PAD1
     unsigned long int st_ino;
     unsigned short int st_mode;
     unsigned short int st_nlink;
diff --git a/sysdeps/unix/sysv/linux/mips/bits/types.h b/sysdeps/unix/sysv/linux/mips/bits/types.h
index 9828066178..36a1e0e0e3 100644
--- a/sysdeps/unix/sysv/linux/mips/bits/types.h
+++ b/sysdeps/unix/sysv/linux/mips/bits/types.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991,92,94,95,96,97,98,99 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 94, 95, 96, 97, 98 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
@@ -132,7 +132,7 @@ typedef __u_long __fsfilcnt_t;
 typedef __u_quad_t __fsfilcnt64_t;
 
 /* Type of file serial numbers.  */
-typedef __u_quad_t __ino64_t;
+typedef __u_long __ino64_t;
 
 /* Type of file sizes and offsets.  */
 typedef __loff_t __off64_t;
diff --git a/sysdeps/unix/sysv/linux/xstatconv.c b/sysdeps/unix/sysv/linux/xstatconv.c
index 0f841edcd6..0a8e0c47f9 100644
--- a/sysdeps/unix/sysv/linux/xstatconv.c
+++ b/sysdeps/unix/sysv/linux/xstatconv.c
@@ -1,5 +1,5 @@
 /* Convert between the kernel's `struct stat' format, and libc's.
-   Copyright (C) 1991, 1995, 1996, 1997, 1999 Free Software Foundation, Inc.
+   Copyright (C) 1991, 1995, 1996, 1997 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
@@ -96,7 +96,7 @@ xstat64_conv (int vers, struct kernel_stat *kbuf, void *ubuf)
 
 	/* Convert to current kernel version of `struct stat64'.  */
 	buf->st_dev = kbuf->st_dev;
-#if defined _HAVE___PAD1 && !defined _NO_LFS___PAD1
+#ifdef _HAVE___PAD1
 	buf->__pad1 = 0;
 #endif
 	buf->st_ino = kbuf->st_ino;