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; 3+ 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] 3+ 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; 3+ 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] 3+ 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; 3+ 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] 3+ messages in thread

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

Thread overview: 3+ 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

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).