struct siginfo vs. siginfo_t (was: GNU C Library master sources branch, master, updated. glibc-2.15-229-g4efeffc)
Thomas Schwinge
thomas@codesourcery.com
Thu Mar 15 15:06:00 GMT 2012
Hi!
On 26 Feb 2012 18:17:52 -0000, drepper@sourceware.org wrote:
> http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=4efeffc1d583597e4f52985b9747269e47b754e2
>
> commit 4efeffc1d583597e4f52985b9747269e47b754e2
> Author: Ulrich Drepper <drepper@gmail.com>
> Date: Sun Feb 26 13:17:27 2012 -0500
>
> Fix up POSIX testing in conformtest
> [...]
> + * sysdeps/unix/sysv/linux/bits/siginfo.h: Don't name siginfo_t
> + struct. [...]
> [...]
> diff --git a/sysdeps/unix/sysv/linux/bits/siginfo.h b/sysdeps/unix/sysv/linux/bits/siginfo.h
> index ecef39d..0635e2f 100644
> --- a/sysdeps/unix/sysv/linux/bits/siginfo.h
> +++ b/sysdeps/unix/sysv/linux/bits/siginfo.h
> [...]
> @@ -47,7 +47,7 @@ typedef union sigval
> # define __SI_PAD_SIZE ((__SI_MAX_SIZE / sizeof (int)) - 3)
> # endif
>
> -typedef struct siginfo
> +typedef struct
> {
> int si_signo; /* Signal number. */
> int si_errno; /* If non-zero, an errno value associated with
> [...]
This change breaks GCC:
In file included from /scratch/tschwing/FM_sh-linux-gnu-mk2/src/gcc-mainline/libgcc/unwind-dw2.c:377:0:
./md-unwind-support.h: In function 'sh_fallback_frame_state':
./md-unwind-support.h:182:17: error: field 'info' has incomplete type
In my case, this is really libgcc/config/sh/linux-unwind.h:
[...]
181 struct rt_sigframe {
182 struct siginfo info;
183 struct ucontext uc;
184 } *rt_ = context->cfa;
[...]
There are more such cases:
boehm-gc/os_dep.c:# define SIGINFO_T struct siginfo
libgcc/config/alpha/linux-unwind.h: struct siginfo info;
libgcc/config/bfin/linux-unwind.h: struct siginfo *pinfo;
libgcc/config/bfin/linux-unwind.h: struct siginfo info;
libgcc/config/i386/linux-unwind.h: struct siginfo *pinfo;
libgcc/config/i386/linux-unwind.h: struct siginfo info;
libgcc/config/ia64/linux-unwind.h: struct siginfo *info;
libgcc/config/ia64/linux-unwind.h: struct siginfo *info;
libgcc/config/mips/linux-unwind.h: struct siginfo info;
libgcc/config/pa/linux-unwind.h: struct siginfo info;
libgcc/config/sh/linux-unwind.h: struct siginfo *pinfo;
libgcc/config/sh/linux-unwind.h: struct siginfo info;
libgcc/config/sh/linux-unwind.h: struct siginfo info;
libgcc/config/tilepro/linux-unwind.h: struct siginfo info;
libgcc/config/xtensa/linux-unwind.h: struct siginfo info;
(Is there really nobody doing nightly testing of GCC against glibc master
branch on x86, which would have shown this earlier?)
Replacing struct siginfo with siginfo_t in sh/linux-unwind.h makes the
build pass. Is this the desired approach; shall we apply this for all
cases listed above (and submit to Boehm GC upstream)? I wonder -- if GCC
breaks, how much software out in the wild is going to break once this
glibc change ripples through?
Grüße,
Thomas
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 489 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20120315/269bab44/attachment.sig>
More information about the Gcc-patches
mailing list