public inbox for libc-hacker@sourceware.org
 help / color / mirror / Atom feed
* utmp.h & utmpx.h for s390.
@ 2002-10-09  6:15 Martin Schwidefsky
  2002-10-09  7:05 ` [PATCH] */lib64 for s390x Jakub Jelinek
  0 siblings, 1 reply; 6+ messages in thread
From: Martin Schwidefsky @ 2002-10-09  6:15 UTC (permalink / raw)
  To: libc-hacker; +Cc: bk, aj

Hi folks,

Jakub Jelinek writes:
> I haven't changed s390x, but IMHO it is better to recompile the affected
> apps now in the /usr/lib -> /usr/lib64 transition which changes most
> of the things anyway, than to suffer forever.

All I can say is: he is right. I wanted to look into versioned symbols for
the glibc functions that are affected by the utmp.h/utmpx.h change but I
am too busy with other stuff right now (and I know that extreme caution
is required for anything to do with versioning).
I just copied the utmp.h/utmpx.h headers from powerpc/x86_64 to the s390
folder so credits go to Steven and Jakub.

blue skies,
  Martin.

2002-10-09  Steven Munroe  <sjmunroe@us.ibm.com>
	    Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/s390/s390-32/bits/wordsize.h (__WORDSIZE_COMPAT32): Define.
	* sysdeps/s390/s390-64/bits/wordsize.h (__WORDSIZE_COMPAT32): Define.
	* sysdeps/unix/sysv/linux/s390/bits/utmp.h: New file.
	* sysdeps/unix/sysv/linux/s390/bits/utmpx.h: New file.

diff -urN libc-head/sysdeps/s390/s390-32/bits/wordsize.h libc-s390/sysdeps/s390/s390-32/bits/wordsize.h
--- libc-head/sysdeps/s390/s390-32/bits/wordsize.h	Wed Oct  2 22:52:30 2002
+++ libc-s390/sysdeps/s390/s390-32/bits/wordsize.h	Wed Oct  9 14:50:44 2002
@@ -2,6 +2,7 @@
 
 #if defined __s390x__
 # define __WORDSIZE	64
+# define __WORDSIZE_COMPAT32	1
 #else
 # define __WORDSIZE	32
 #endif
diff -urN libc-head/sysdeps/s390/s390-64/bits/wordsize.h libc-s390/sysdeps/s390/s390-64/bits/wordsize.h
--- libc-head/sysdeps/s390/s390-64/bits/wordsize.h	Wed Oct  2 22:57:48 2002
+++ libc-s390/sysdeps/s390/s390-64/bits/wordsize.h	Wed Oct  9 14:51:03 2002
@@ -2,6 +2,7 @@
 
 #if defined __s390x__
 # define __WORDSIZE	64
+# define __WORDSIZE_COMPAT32	1
 #else
 # define __WORDSIZE	32
 #endif
diff -urN libc-head/sysdeps/unix/sysv/linux/s390/bits/utmp.h libc-s390/sysdeps/unix/sysv/linux/s390/bits/utmp.h
--- libc-head/sysdeps/unix/sysv/linux/s390/bits/utmp.h	Thu Jan  1 01:00:00 1970
+++ libc-s390/sysdeps/unix/sysv/linux/s390/bits/utmp.h	Wed Oct  9 14:44:48 2002
@@ -0,0 +1,126 @@
+/* The `struct utmp' type, describing entries in the utmp file.  GNU version.
+   Copyright (C) 1993, 1996, 1997, 1998, 1999, 2002 
+   Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef _UTMP_H
+# error "Never include <bits/utmp.h> directly; use <utmp.h> instead."
+#endif
+
+#include <paths.h>
+#include <sys/time.h>
+#include <sys/types.h>
+#include <bits/wordsize.h>
+
+
+#define UT_LINESIZE	32
+#define UT_NAMESIZE	32
+#define UT_HOSTSIZE	256
+
+
+/* The structure describing an entry in the database of
+   previous logins.  */
+struct lastlog
+  {
+#if __WORDSIZE == 64 && defined __WORDSIZE_COMPAT32
+    int32_t ll_time;
+#else
+    __time_t ll_time;
+#endif
+    char ll_line[UT_LINESIZE];
+    char ll_host[UT_HOSTSIZE];
+  };
+
+
+/* The structure describing the status of a terminated process.  This
+   type is used in `struct utmp' below.  */
+struct exit_status
+  {
+    short int e_termination;	/* Process termination status.  */
+    short int e_exit;		/* Process exit status.  */
+  };
+
+
+/* The structure describing an entry in the user accounting database.  */
+struct utmp
+{
+  short int ut_type;		/* Type of login.  */
+  pid_t ut_pid;			/* Process ID of login process.  */
+  char ut_line[UT_LINESIZE];	/* Devicename.  */
+  char ut_id[4];		/* Inittab ID.  */
+  char ut_user[UT_NAMESIZE];	/* Username.  */
+  char ut_host[UT_HOSTSIZE];	/* Hostname for remote login.  */
+  struct exit_status ut_exit;	/* Exit status of a process marked
+				   as DEAD_PROCESS.  */
+
+/* The fields ut_session and ut_tv must be the same size when compiled 
+   32- and 64-bit.  This allows files and shared memory to be shared 
+   between 32/64bit applications.  For example /var/run/utmp.  */
+#if __WORDSIZE == 64 && defined __WORDSIZE_COMPAT32
+  int32_t ut_session;		/* Session ID, used for windowing.  */
+  struct
+  {
+    int32_t tv_sec;		/* Seconds.  */
+    int32_t tv_usec;		/* Microseconds.  */
+  } ut_tv;			/* Time entry was made.  */
+#else
+  long int ut_session;		/* Session ID, used for windowing.  */
+  struct timeval ut_tv;		/* Time entry was made.  */
+#endif
+
+  int32_t ut_addr_v6[4];	/* Internet address of remote host.  */
+  char __unused[20];		/* Reserved for future use.  */
+};
+
+/* Backwards compatibility hacks.  */
+#define ut_name		ut_user
+#ifndef _NO_UT_TIME
+/* We have a problem here: `ut_time' is also used otherwise.  Define
+   _NO_UT_TIME if the compiler complains.  */
+# define ut_time	ut_tv.tv_sec
+#endif
+#define ut_xtime	ut_tv.tv_sec
+#define ut_addr		ut_addr_v6[0]
+
+
+/* Values for the `ut_type' field of a `struct utmp'.  */
+#define EMPTY		0	/* No valid user accounting information.  */
+
+#define RUN_LVL		1	/* The system's runlevel.  */
+#define BOOT_TIME	2	/* Time of system boot.  */
+#define NEW_TIME	3	/* Time after system clock changed.  */
+#define OLD_TIME	4	/* Time when system clock changed.  */
+
+#define INIT_PROCESS	5	/* Process spawned by the init process.  */
+#define LOGIN_PROCESS	6	/* Session leader of a logged in user.  */
+#define USER_PROCESS	7	/* Normal process.  */
+#define DEAD_PROCESS	8	/* Terminated process.  */
+
+#define ACCOUNTING	9
+
+/* Old Linux name for the EMPTY type.  */
+#define UT_UNKNOWN	EMPTY
+
+
+/* Tell the user that we have a modern system with UT_HOST, UT_PID,
+   UT_TYPE, UT_ID and UT_TV fields.  */
+#define _HAVE_UT_TYPE	1
+#define _HAVE_UT_PID	1
+#define _HAVE_UT_ID	1
+#define _HAVE_UT_TV	1
+#define _HAVE_UT_HOST	1
diff -urN libc-head/sysdeps/unix/sysv/linux/s390/bits/utmpx.h libc-s390/sysdeps/unix/sysv/linux/s390/bits/utmpx.h
--- libc-head/sysdeps/unix/sysv/linux/s390/bits/utmpx.h	Thu Jan  1 01:00:00 1970
+++ libc-s390/sysdeps/unix/sysv/linux/s390/bits/utmpx.h	Wed Oct  9 14:44:52 2002
@@ -0,0 +1,102 @@
+/* Structures and definitions for the user accounting database.  GNU version.
+   Copyright (C) 1997, 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef _UTMPX_H
+# error "Never include <bits/utmpx.h> directly; use <utmpx.h> instead."
+#endif
+
+#include <bits/types.h>
+#include <sys/time.h>
+
+
+#ifdef __USE_GNU
+# include <paths.h>
+# define _PATH_UTMPX	_PATH_UTMP
+# define _PATH_WTMPX	_PATH_WTMP
+#endif
+
+
+#define __UT_LINESIZE	32
+#define __UT_NAMESIZE	32
+#define __UT_HOSTSIZE	256
+
+
+/* The structure describing the status of a terminated process.  This
+   type is used in `struct utmpx' below.  */
+struct __exit_status
+  {
+#ifdef __USE_GNU
+    short int e_termination;	/* Process termination status.  */
+    short int e_exit;		/* Process exit status.  */
+#else
+    short int __e_termination;	/* Process termination status.  */
+    short int __e_exit;		/* Process exit status.  */
+#endif
+  };
+
+
+/* The structure describing an entry in the user accounting database.  */
+struct utmpx
+{
+  short int ut_type;		/* Type of login.  */
+  __pid_t ut_pid;		/* Process ID of login process.  */
+  char ut_line[__UT_LINESIZE];	/* Devicename.  */
+  char ut_id[4];		/* Inittab ID. */
+  char ut_user[__UT_NAMESIZE];	/* Username.  */
+  char ut_host[__UT_HOSTSIZE];	/* Hostname for remote login.  */
+  struct __exit_status ut_exit;	/* Exit status of a process marked
+				   as DEAD_PROCESS.  */
+
+/* The fields ut_session and ut_tv must be the same size when compiled
+   32- and 64-bit.  This allows files and shared memory to be shared
+   between 32/64bit applications.  */
+#if __WORDSIZE == 64 && defined __WORDSIZE_COMPAT32
+  __int32_t ut_session;		/* Session ID, used for windowing.  */
+  struct
+  {
+    __int32_t tv_sec;		/* Seconds.  */
+    __int32_t tv_usec;		/* Microseconds.  */
+  } ut_tv;			/* Time entry was made.  */
+#else
+  long int ut_session;		/* Session ID, used for windowing.  */
+  struct timeval ut_tv;		/* Time entry was made.  */
+#endif
+  __int32_t ut_addr_v6[4];	/* Internet address of remote host.  */
+  char __unused[20];		/* Reserved for future use.  */
+};
+
+
+/* Values for the `ut_type' field of a `struct utmpx'.  */
+#define EMPTY		0	/* No valid user accounting information.  */
+
+#ifdef __USE_GNU
+# define RUN_LVL	1	/* The system's runlevel.  */
+#endif
+#define BOOT_TIME	2	/* Time of system boot.  */
+#define NEW_TIME	3	/* Time after system clock changed.  */
+#define OLD_TIME	4	/* Time when system clock changed.  */
+
+#define INIT_PROCESS	5	/* Process spawned by the init process.  */
+#define LOGIN_PROCESS	6	/* Session leader of a logged in user.  */
+#define USER_PROCESS	7	/* Normal process.  */
+#define DEAD_PROCESS	8	/* Terminated process.  */
+
+#ifdef __USE_GNU
+# define ACCOUNTING	9	/* System accounting.  */
+#endif

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH] */lib64 for s390x
  2002-10-09  6:15 utmp.h & utmpx.h for s390 Martin Schwidefsky
@ 2002-10-09  7:05 ` Jakub Jelinek
  2002-10-15 15:26   ` Andreas Jaeger
  0 siblings, 1 reply; 6+ messages in thread
From: Jakub Jelinek @ 2002-10-09  7:05 UTC (permalink / raw)
  To: Martin Schwidefsky; +Cc: libc-hacker

On Wed, Oct 09, 2002 at 03:05:11PM +0200, Martin Schwidefsky wrote:
> All I can say is: he is right. I wanted to look into versioned symbols for
> the glibc functions that are affected by the utmp.h/utmpx.h change but I
> am too busy with other stuff right now (and I know that extreme caution
> is required for anything to do with versioning).

Don't you need following too?

2002-10-09  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/unix/sysv/linux/configure.in: Use */lib64 for s390x too.
	* sysdeps/unix/sysv/linux/configure: Rebuilt.

--- libc/sysdeps/unix/sysv/linux/configure.in	28 Sep 2002 20:39:35 -0000	1.1.1.17
+++ libc/sysdeps/unix/sysv/linux/configure.in	9 Oct 2002 11:14:45 -0000	1.14
@@ -185,7 +185,8 @@ fi
 if test "$prefix" = "/usr" -o "$prefix" = "/usr/"; then
   # 64bit libraries on sparc go to /lib64 and not /lib
   if test "$machine" = "sparc/sparc64" -o "$machine" = "x86_64" \
-	  -o "$machine" = "powerpc/powerpc64"; then
+	  -o "$machine" = "powerpc/powerpc64" \
+	  -o "$machine" = "s390/s390-64"; then
     libc_cv_slibdir="/lib64"
     if test "$libdir" = '${exec_prefix}/lib'; then
       libdir='${exec_prefix}/lib64';
--- libc/sysdeps/unix/sysv/linux/configure	28 Sep 2002 20:39:35 -0000	1.1.1.17
+++ libc/sysdeps/unix/sysv/linux/configure	9 Oct 2002 11:14:45 -0000	1.14
@@ -185,7 +185,8 @@ fi
 if test "$prefix" = "/usr" -o "$prefix" = "/usr/"; then
   # 64bit libraries on sparc go to /lib64 and not /lib
   if test "$machine" = "sparc/sparc64" -o "$machine" = "x86_64" \
-	  -o "$machine" = "powerpc/powerpc64"; then
+	  -o "$machine" = "powerpc/powerpc64" \
+	  -o "$machine" = "s390/s390-64"; then
     libc_cv_slibdir="/lib64"
     if test "$libdir" = '${exec_prefix}/lib'; then
       libdir='${exec_prefix}/lib64';

	Jakub

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] */lib64 for s390x
  2002-10-09  7:05 ` [PATCH] */lib64 for s390x Jakub Jelinek
@ 2002-10-15 15:26   ` Andreas Jaeger
  0 siblings, 0 replies; 6+ messages in thread
From: Andreas Jaeger @ 2002-10-15 15:26 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: Martin Schwidefsky, libc-hacker

Jakub Jelinek <jakub@redhat.com> writes:

> On Wed, Oct 09, 2002 at 03:05:11PM +0200, Martin Schwidefsky wrote:
>> All I can say is: he is right. I wanted to look into versioned symbols for
>> the glibc functions that are affected by the utmp.h/utmpx.h change but I
>> am too busy with other stuff right now (and I know that extreme caution
>> is required for anything to do with versioning).
>
> Don't you need following too?
>
> 2002-10-09  Jakub Jelinek  <jakub@redhat.com>
>
> 	* sysdeps/unix/sysv/linux/configure.in: Use */lib64 for s390x too.
> 	* sysdeps/unix/sysv/linux/configure: Rebuilt.

I'm going to  apply this now,
Andreas

>
> --- libc/sysdeps/unix/sysv/linux/configure.in	28 Sep 2002 20:39:35 -0000	1.1.1.17
> +++ libc/sysdeps/unix/sysv/linux/configure.in	9 Oct 2002 11:14:45 -0000	1.14
> @@ -185,7 +185,8 @@ fi
>  if test "$prefix" = "/usr" -o "$prefix" = "/usr/"; then
>    # 64bit libraries on sparc go to /lib64 and not /lib
>    if test "$machine" = "sparc/sparc64" -o "$machine" = "x86_64" \
> -	  -o "$machine" = "powerpc/powerpc64"; then
> +	  -o "$machine" = "powerpc/powerpc64" \
> +	  -o "$machine" = "s390/s390-64"; then
>      libc_cv_slibdir="/lib64"
>      if test "$libdir" = '${exec_prefix}/lib'; then
>        libdir='${exec_prefix}/lib64';
> --- libc/sysdeps/unix/sysv/linux/configure	28 Sep 2002 20:39:35 -0000	1.1.1.17
> +++ libc/sysdeps/unix/sysv/linux/configure	9 Oct 2002 11:14:45 -0000	1.14
> @@ -185,7 +185,8 @@ fi
>  if test "$prefix" = "/usr" -o "$prefix" = "/usr/"; then
>    # 64bit libraries on sparc go to /lib64 and not /lib
>    if test "$machine" = "sparc/sparc64" -o "$machine" = "x86_64" \
> -	  -o "$machine" = "powerpc/powerpc64"; then
> +	  -o "$machine" = "powerpc/powerpc64" \
> +	  -o "$machine" = "s390/s390-64"; then
>      libc_cv_slibdir="/lib64"
>      if test "$libdir" = '${exec_prefix}/lib'; then
>        libdir='${exec_prefix}/lib64';
>
> 	Jakub
>

Andreas
-- 
 Andreas Jaeger
  SuSE Labs aj@suse.de
   private aj@arthur.inka.de
    http://www.suse.de/~aj

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] */lib64 for s390x
@ 2002-10-09 10:00 Martin Schwidefsky
  0 siblings, 0 replies; 6+ messages in thread
From: Martin Schwidefsky @ 2002-10-09 10:00 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: libc-hacker


> I personally think this is the right way to go too.

Ok then. Ulrich: would you please apply Jakubs configure patch as well?

blue skies,
   Martin

Linux/390 Design & Development, IBM Deutschland Entwicklung GmbH
Schönaicherstr. 220, D-71032 Böblingen, Telefon: 49 - (0)7031 - 16-2247
E-Mail: schwidefsky@de.ibm.com


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] */lib64 for s390x
  2002-10-09  7:35 Martin Schwidefsky
@ 2002-10-09  7:48 ` Jakub Jelinek
  0 siblings, 0 replies; 6+ messages in thread
From: Jakub Jelinek @ 2002-10-09  7:48 UTC (permalink / raw)
  To: Martin Schwidefsky; +Cc: libc-hacker

On Wed, Oct 09, 2002 at 04:29:55PM +0200, Martin Schwidefsky wrote:
> 
> >Don't you need following too?
> >
> >2002-10-09  Jakub Jelinek  <jakub@redhat.com>
> >
>  >* sysdeps/unix/sysv/linux/configure.in: Use */lib64 for s390x too.
>  >* sysdeps/unix/sysv/linux/configure: Rebuilt.
> 
> We need this one IF we want to switch to the */lib64 scheme of doing
> things. The SuSE distribution goes this way, RedHat has not implemented
> it yet. Did this make it to the LSB? Or do we simply decide that this
> is the way to go? I personally think it is the right thing to do but
> how "official" is this?

I personally think this is the right way to go too.

	Jakub

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] */lib64 for s390x
@ 2002-10-09  7:35 Martin Schwidefsky
  2002-10-09  7:48 ` Jakub Jelinek
  0 siblings, 1 reply; 6+ messages in thread
From: Martin Schwidefsky @ 2002-10-09  7:35 UTC (permalink / raw)
  To: Jakub Jelinek; +Cc: libc-hacker


>Don't you need following too?
>
>2002-10-09  Jakub Jelinek  <jakub@redhat.com>
>
 >* sysdeps/unix/sysv/linux/configure.in: Use */lib64 for s390x too.
 >* sysdeps/unix/sysv/linux/configure: Rebuilt.

We need this one IF we want to switch to the */lib64 scheme of doing
things. The SuSE distribution goes this way, RedHat has not implemented
it yet. Did this make it to the LSB? Or do we simply decide that this
is the way to go? I personally think it is the right thing to do but
how "official" is this?

blue skies,
   Martin

Linux/390 Design & Development, IBM Deutschland Entwicklung GmbH
Schönaicherstr. 220, D-71032 Böblingen, Telefon: 49 - (0)7031 - 16-2247
E-Mail: schwidefsky@de.ibm.com


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2002-10-15  7:36 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-10-09  6:15 utmp.h & utmpx.h for s390 Martin Schwidefsky
2002-10-09  7:05 ` [PATCH] */lib64 for s390x Jakub Jelinek
2002-10-15 15:26   ` Andreas Jaeger
2002-10-09  7:35 Martin Schwidefsky
2002-10-09  7:48 ` Jakub Jelinek
2002-10-09 10:00 Martin Schwidefsky

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).