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

Reply via email to