[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#320240: ucontext.h bug also breaks libgc build

On Wed, Aug 03, 2005 at 09:58:32PM -0400, Nathanael Nerode wrote:
> If glibc in unstable doesn't require significant fixes to build with gcc-4.0,
> it really would be a good idea to backport the fix for this bug and the
> rpc/xdr.h one.

I started to try this but gave up quite quickly; the problem seems to
be more related to new versions of binutils than the newer gcc.  I
forward ported about 5 changes before I gave up.

The ucontext change is quite trivial ... see attached.  I just applied
it straight to my sys/ucontext.h and I'm up and running :) If I built
libc in a stable chroot (i.e. the older toolchain) with this patch
would that help anyone?

> If it does require significant fixes, perhaps you could suggest to the 
> release team that ia64 be dropped from consideration for packages migrating
> to "testing".  That's the only other way I can see to avoid tying most
> of the C++ transition to the glibc transition (which is clearly a bad idea).

It seems that the modern toolchain has left the old glibc versions too
far behind to bother with updating.  Maybe having the glibc
transistion go hand in hand with the C++ transision is just something
we'll have to put up with.

#! /bin/sh -e

# All lines beginning with `# DP:' are a description of the patch.
# DP: Description: fix ucontext.h for IA64 with later gcc versions
# DP: Related bugs: #284449
# DP: Dpatch author: Ian Wienand <ianw@gelato.unsw.edu.au>
# DP: Patch author: Andreas Schwab  <schwab@suse.de>
# DP: Upstream status: In upstream

if [ $# -ne 2 ]; then
    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
    exit 1
case "$1" in
    -patch) patch -d "$2" -f --no-backup-if-mismatch -p4 < $0;;
    -unpatch) patch -d "$2" -f --no-backup-if-mismatch -R -p4 < $0;;
	echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
	exit 1
exit 0

Index: ucontext.h
RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- /cvs/glibc/libc/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h	19 Jun 2002 07:22:14 -0000	1.7
+++ /cvs/glibc/libc/sysdeps/unix/sysv/linux/ia64/sys/ucontext.h	2 Sep 2004 03:40:06 -0000	1.8
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1998, 2000, 2001, 2002, 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
@@ -32,7 +32,10 @@
 typedef struct sigcontext mcontext_t;
-#ifdef __GNUC__
+#if defined __cplusplus && __GNUC_PREREQ (3, 5)
+# define _SC_GR0_OFFSET	\
+	__builtin_offsetof (struct sigcontext, sc_gr[0])
+#elif defined __GNUC__
 # define _SC_GR0_OFFSET	\
 	(((char *) &((struct sigcontext *) 0)->sc_gr[0]) - (char *) 0)

Attachment: signature.asc
Description: Digital signature

Reply to: