[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: ia64 2.3/CVS compile problems
From: |
Ian Wienand |
Subject: |
Re: ia64 2.3/CVS compile problems |
Date: |
Thu, 24 Oct 2002 15:29:49 +1000 |
User-agent: |
Mutt/1.3.28i |
On Tue, Oct 15, 2002 at 08:37:33AM +0200, Andreas Jaeger wrote:
> Ian Wienand <address@hidden> writes:
>
> > Hi,
> >
> > I'm having problems compiling both glibc 2.3 and CVS on ia64 (2.5.40
> > kernel).
>
> > When trying the 2.3 release, when it gets to the point where it
> > compiles iconvconfig I get
> >
> > libc.so.6.1: undefined reference to `__GI___pwrite64'
> > libc.so.6.1: undefined reference to `__syscall_exit_group'
> >
> > I fixed the __syscall_exit_group problem by adding the sycall into
> > syscalls.list in /sysdeps/unix/sysv/linux/ia64 (it is implemented on
> > ia64 since 2.5.31), but I'm not sure what to do with the pwrite64
> > error, as __pwrite64 is aliased in the syscalls.list file, and I read
> > somewhere that the __GI_ prefix should not be aliased in this file.
> >
> > When I try with CVS, I get an additional problem at the same point
> >
> > libc.so.6.1: undefined reference to `__syscall_execve'
>
> This is a known problem and I expect that it will be fixed for glibc
> 2.3.2. I would advise to wait a bit longer.
Thanks, the execve problem appears fixed.
I am a bit stuck with the pwrite problem though, and I've investigated
it a bit more. This appears to come from the /include/unistd.h file,
where there is a definition for pwrite64
---
extern ssize_t __pwrite64 (int __fd, __const void *__buf, size_t __n,
__off64_t __offset);
libc_hidden_proto (__pwrite64)
---
however, __pread64 is not hidden like this. if you remove the
libc_hidden_proto for pwrite, it still doesn't work but libc has an
undefined reference to __pwrite64 rather than __GI___pwrite64.
My libc.so.6.1 ends up looking like this ...
address@hidden:/usr/src/ianw/libc-obj$ nm libc.so.6.1 | grep pread
000000000018a7b0 T __libc_pread
000000000018a7b0 t __pread
000000000018a7b0 W pread
address@hidden:/usr/src/ianw/libc-obj$ nm libc.so.6.1 | grep pwrite
U __GI___pwrite64
000000000018a800 T __libc_pwrite
000000000018a800 t __pwrite
000000000018a800 W pwrite
which has me very confused as to how I can get rid of this symbol.
by the way, i found a minor typo when investigating this.
--- sysdeps/unix/sysv/linux/pwrite64.c.orig 2002-10-24 15:13:46.000000000
+1000
+++ sysdeps/unix/sysv/linux/pwrite64.c 2002-10-24 15:14:00.000000000 +1000
@@ -31,7 +31,7 @@
# ifdef __NR_pwrite
# error "__NR_pwrite and __NR_pwrite64 both defined???"
# endif
-# define __NR_pwrite __NR_pread64
+# define __NR_pwrite __NR_pwrite64
#endif
#if defined __NR_pwrite || __ASSUME_PWRITE_SYSCALL > 0
-i
address@hidden