bug-glibc
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]