Hello, this a known bug in glibc. For all biarch targets the utmp/utmpx/wtmp files are shared between 32 and 64 applications. Since these files simply consist of struct utmp size records struct utmp must be the same in both cases. Unfortunately a struct utmp usually contains long type value which have a different size on 32 and 64 bit. That's why those fields are wrapped into a __WORDSIZE_COMPAT32 macro definition which is set in the wordsize.h header file. This defines the long type fields to always be 32 bit (using int32_t).
Quite some time ago Martin tried to define this macro also for s390/s390x: http://sources.redhat.com/ml/libc-hacker/2002-10/msg00040.html Unfortunately that patch never made it into glibc. Fixing it afterwards is a bit more difficult since there already is a lot of 64bit code passing a 64bit struct utmp to glibc functions. I'm working on a glibc patch which makes glibc to use the 64 bit utmp format for both 32 and 64 bit. Besides switching the utmp format this patch has to make sure that existing 32 bit applications accessing utmp keep working. This is achieved by providing a set of wrapper functions accepting the 32 bit struct utmp as parameter. The 64 bit struct utmp functions will get a new version symbol and will be used by default when building new applications. Existing code will be redirected to the wrapper functions providing a 32 bit struct utmp interface to the underlying 64 bit utmp files. I hope to come up with a final patch soon. Bye, -Andreas- ---------------------------------------------------------------------- For LINUX-390 subscribe / signoff / archive access instructions, send email to [EMAIL PROTECTED] with the message: INFO LINUX-390 or visit http://www.marist.edu/htbin/wlvindex?LINUX-390
