linux-mips
[Top] [All Lists]

[PATCH] MIPS/Linux: Kernel vs libc struct siginfo discrepancy

To: Ralf Baechle <ralf@linux-mips.org>, linux-mips@linux-mips.org, libc-alpha@sources.redhat.com
Subject: [PATCH] MIPS/Linux: Kernel vs libc struct siginfo discrepancy
From: "Maciej W. Rozycki" <macro@mips.com>
Date: Wed, 10 Nov 2004 17:18:02 +0000 (GMT)
Cc: Nigel Stephens <nigel@mips.com>, "Maciej W. Rozycki" <macro@linux-mips.org>
Original-recipient: rfc822;linux-mips@linux-mips.org
Sender: linux-mips-bounce@linux-mips.org
Hello,

 Since the following change:

http://www.linux-mips.org/cvsweb/linux/include/asm-mips/siginfo.h.diff?r1=1.4&r2=1.5&only_with_tag=MAIN

dated back to Aug 1999 (!), the definitions of struct siginfo in Linux and 
GNU libc differ to each other.  While it's the kernel that is at fault by 
changing its ABI, at this stage it may be more acceptable to update glibc 
as it's not the only program interfacing to Linux (uClibc?).  It doesn't 
seem to be a heavily used feature as otherwise someone else would have 
noticed the problem during these five years.  As I don't really have a 
preference, hereby I provide two patches to choose from and ask for 
voting.  The ChangeLog entry is for glibc, of course.

2004-11-10  Maciej W. Rozycki  <macro@linux-mips.org>

        * sysdeps/unix/sysv/linux/mips/bits/siginfo.h [struct siginfo] 
        (_sigchld): Update to match the kernel.

  Maciej

glibc-2.3.3-20041018-mips-siginfo_sigchld-1.patch
diff -up --recursive --new-file 
glibc-2.3.3-20041018.macro/sysdeps/unix/sysv/linux/bits/siginfo.h 
glibc-2.3.3-20041018/sysdeps/unix/sysv/linux/bits/siginfo.h
--- glibc-2.3.3-20041018.macro/sysdeps/unix/sysv/linux/bits/siginfo.h   Tue Apr 
22 02:26:04 2003
+++ glibc-2.3.3-20041018/sysdeps/unix/sysv/linux/bits/siginfo.h Wed Nov 10 
16:52:24 2004
@@ -1,5 +1,5 @@
 /* siginfo_t, sigevent and constants.  Linux version.
-   Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 1997-2002, 2003, 2004 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
@@ -87,8 +87,8 @@ typedef struct siginfo
          {
            __pid_t si_pid;     /* Which child.  */
            __uid_t si_uid;     /* Real user ID of sending process.  */
-           int si_status;      /* Exit value or signal.  */
            __clock_t si_utime;
+           int si_status;      /* Exit value or signal.  */
            __clock_t si_stime;
          } _sigchld;
 

patch-malta-2.6.9-rc1-20041020-mips-siginfo_sigchld-0
diff -up --recursive --new-file 
linux-malta-2.6.9-rc1-20041020.macro/include/asm-mips/siginfo.h 
linux-malta-2.6.9-rc1-20041020/include/asm-mips/siginfo.h
--- linux-malta-2.6.9-rc1-20041020.macro/include/asm-mips/siginfo.h     
2004-10-01 14:49:33.000000000 +0000
+++ linux-malta-2.6.9-rc1-20041020/include/asm-mips/siginfo.h   2004-11-10 
16:53:42.000000000 +0000
@@ -47,8 +47,8 @@ typedef struct siginfo {
                struct {
                        pid_t _pid;             /* which child */
                        uid_t _uid;             /* sender's uid */
-                       clock_t _utime;
                        int _status;            /* exit code */
+                       clock_t _utime;
                        clock_t _stime;
                } _sigchld;
 

<Prev in Thread] Current Thread [Next in Thread>