yann@1: [pread changes deleted, since those seem to be specific to glibc-2.3.2] yann@1: yann@1: Date: Thu, 19 Jun 2003 20:02:07 -0400 yann@1: From: Daniel Jacobowitz yann@1: Subject: [linux-sh:02808] Patch needed for CVS glibc on SH yann@1: To: linux-sh@m17n.org, libc-alpha@sources.redhat.com yann@1: Message-Id: <20030620000207.GA19907@nevyn.them.org> yann@1: X-ML-Name: linux-sh yann@1: X-Mail-Count: 02808 yann@1: X-MLServer: fml [fml 4.0.1]; post only (only members can post) yann@1: X-ML-Info: If you have a question, send e-mail with the body yann@1: "help" (without quotes) to the address linux-sh-ctl@m17n.org; yann@1: help= yann@1: Mail-Followup-To: linux-sh@m17n.org, libc-alpha@sources.redhat.com yann@1: Content-Disposition: inline yann@1: User-Agent: Mutt/1.5.1i yann@1: Mime-Version: 1.0 yann@1: Content-Type: text/plain; charset=us-ascii yann@1: Precedence: bulk yann@1: Lines: 74 yann@1: List-Software: fml [fml 4.0.1] yann@1: List-Post: yann@1: List-Owner: yann@1: List-Help: yann@1: List-Unsubscribe: yann@1: List-Id: linux-sh.m17n.org yann@1: yann@1: I believe this flushes my current patches to make glibc work on SH. Issues: yann@1: - MIPS pread functions have some wackiness in them for the MIPS calling yann@1: conventions, which align long longs to even register pairs; it appears yann@1: that SH does not do this. This fixes pread64/pwrite64. yann@1: - st_ino is _NOT_ 64-bit in the latest SH kernel trees, or at least it yann@1: wasn't when I checked in April. --enable-kernel=2.4.x breaks terribly yann@1: without this patch; the errors are along the lines of "version GLIBC_2.3 yann@1: not found", because that's the first consequence of a messed up inode yann@1: field - ld.so compares by inodes at some point. yann@1: yann@1: -- yann@1: Daniel Jacobowitz yann@1: MontaVista Software Debian GNU/Linux Developer yann@1: yann@1: 2003-06-19 Daniel Jacobowitz yann@1: yann@1: * sysdeps/unix/sysv/linux/kernel-features.h: Update kernel features yann@1: for the SH architecture. yann@1: * sysdeps/unix/sysv/linux/sh/pread.c: Use generic Linux version yann@1: instead of the MIPS version. yann@1: * sysdeps/unix/sysv/linux/sh/pread64.c: Likewise. yann@1: * sysdeps/unix/sysv/linux/sh/pwrite.c: Likewise. yann@1: * sysdeps/unix/sysv/linux/sh/pwrite64.c: Likewise. yann@1: yann@1: --- glibc-2.3.2/sysdeps/unix/sysv/linux/kernel-features.h.org 2003-04-21 10:57:55.000000000 -0400 yann@1: +++ glibc-2.3.2/sysdeps/unix/sysv/linux/kernel-features.h 2003-04-21 11:16:47.000000000 -0400 yann@1: @@ -151,11 +151,20 @@ yann@1: yann@1: /* The changed st_ino field appeared in 2.4.0-test6. But we cannot yann@1: distinguish this version from other 2.4.0 releases. Therefore play yann@1: - save and assume it available is for 2.4.1 and up. */ yann@1: -#if __LINUX_KERNEL_VERSION >= 132097 yann@1: + save and assume it available is for 2.4.1 and up. However, SH is lame, yann@1: + and still does not have a 64-bit inode field. */ yann@1: +#if __LINUX_KERNEL_VERSION >= 132097 \ yann@1: + && !defined __sh__ yann@1: # define __ASSUME_ST_INO_64_BIT 1 yann@1: #endif yann@1: yann@1: +/* SH kernels got stat64, mmap2, and truncate64 during 2.4.0-test. */ yann@1: +#if __LINUX_KERNEL_VERSION >= 132096 && defined __sh__ yann@1: +# define __ASSUME_TRUNCATE64_SYSCALL 1 yann@1: +# define __ASSUME_MMAP2_SYSCALL 1 yann@1: +# define __ASSUME_STAT64_SYSCALL 1 yann@1: +#endif yann@1: + yann@1: /* To support locking of large files a new fcntl() syscall was introduced yann@1: in 2.4.0-test7. We test for 2.4.1 for the earliest version we know yann@1: the syscall is available. */ yann@1: