Your message dated Mon, 12 Feb 2007 15:50:54 +0100 with message-id <20070212145054.GA6637@mad.intersec.eu> and subject line Bug#377416: libc6-dev: __THROW defined in <sys/cdefs.h> is broken with GCC 3.3 has caused the attached Bug report to be marked as done. This means that you claim that the problem has been dealt with. If this is not the case it is now your responsibility to reopen the Bug report if necessary, and/or fix the problem forthwith. (NB: If you are a system administrator and have no idea what I am talking about this indicates a serious mail system misconfiguration somewhere. Please contact me immediately.) Debian bug tracking system administrator (administrator, Debian Bugs database)
--- Begin Message ---
- To: Debian Bug Tracking System <submit@bugs.debian.org>
- Subject: libc6-dev: __THROW defined in <sys/cdefs.h> is broken with GCC 3.3
- From: Roger Leigh <rleigh@debian.org>
- Date: Sat, 08 Jul 2006 20:14:35 +0100
- Message-id: <20060708191434.9589.4280.reportbug@hardknott.home.whinlatter.ukfsn.org>
Package: libc6-dev Version: 2.3.6-15 Severity: important # if !defined __cplusplus && __GNUC_PREREQ (3, 3) # define __THROW __attribute__ ((__nothrow__)) XXXX # define __NTH(fct) __attribute__ ((__nothrow__)) fct # else # if defined __cplusplus && __GNUC_PREREQ (2,8) # define __THROW throw () # define __NTH(fct) fct throw () # else # define __THROW # define __NTH(fct) fct # endif # endif The line marked with XXXX expands incorrectly: void f() __THROW ==> void f() __attribute__ ((__nothrow__)) instead of void __attribute__ ((__nothrow__)) f() The __NTH macro is OK. It's OK for later compilers, but I'm not sure this special case for GCC 3.3 is necessary, unless there's a reason why the more general throw() doesn't work with GCC 3.3? throw() is standard C++ syntax, so this looks rather broken, IMO. I suggest changing it to: # if defined __cplusplus && __GNUC_PREREQ (2,8) # define __THROW throw () # define __NTH(fct) fct throw () # else # define __THROW # define __NTH(fct) fct # endif as is the case in e.g. <malloc.h>. The version check in <malloc.h> also looks broken, though probably is OK in practice, due to GCC 1.x not being used: # ifndef __THROW # if defined __cplusplus && (__GNUC__ >= 3 || __GNUC_MINOR__ >= 8) # define __THROW throw () # else # define __THROW # endif # endif This should probably be using the __GNUC_PREREQ macro like everyone else. Regards, Roger -- System Information: Debian Release: testing/unstable APT prefers unstable APT policy: (990, 'unstable') Architecture: powerpc (ppc) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.16.17 Locale: LANG=en_GB.UTF8, LC_CTYPE=en_GB.UTF8 (charmap=UTF-8) Versions of packages libc6-dev depends on: ii libc6 2.3.6-15 GNU C Library: Shared libraries ii linux-kernel-headers 2.6.17.3-1 Linux Kernel Headers for developme Versions of packages libc6-dev recommends: ii bcc [c-compiler] 0.16.14-1.4 16-bit x86 C compiler ii gcc [c-compiler] 4:4.1.1-3 The GNU C compiler ii gcc-3.3 [c-compiler] 1:3.3.6-13 The GNU C compiler ii gcc-3.4 [c-compiler] 3.4.6-2 The GNU C compiler ii gcc-4.0 [c-compiler] 4.0.3-4 The GNU C compiler ii gcc-4.1 [c-compiler] 4.1.1-7 The GNU C compiler -- no debconf information
--- End Message ---
--- Begin Message ---
- To: Roger Leigh <rleigh@whinlatter.ukfsn.org>, 377416-done@bugs.debian.org
- Subject: Re: Bug#377416: libc6-dev: __THROW defined in <sys/cdefs.h> is broken with GCC 3.3
- From: Pierre HABOUZIT <madcoder@debian.org>
- Date: Mon, 12 Feb 2007 15:50:54 +0100
- Message-id: <20070212145054.GA6637@mad.intersec.eu>
- Mail-followup-to: Roger Leigh <rleigh@whinlatter.ukfsn.org>, 377416-done@bugs.debian.org
- In-reply-to: <[🔎] 20070207010833.GA30584@hades.madism.org>
- References: <20060708191434.9589.4280.reportbug@hardknott.home.whinlatter.ukfsn.org> <[🔎] 20070205230023.GA15767@hades.madism.org> <[🔎] 87zm7qddih.fsf@hardknott.home> <[🔎] 20070207010833.GA30584@hades.madism.org>
On Wed, Feb 07, 2007 at 02:08:33AM +0100, Pierre HABOUZIT wrote: > Summarry: > > Sorry if I'm being dense, but I really think that the m68k patch is > wrong (I'll fix it as soon as I got an access to the pkg-glibc repo on > alioth) __and__ the real problem lies in argp.h __NTH implementation. > Not with __THROW that indeed has the drawbacks you mention, but is > really not meant to be used for anything else than a prototype > declaration. See upstream reaction here[0], the sole way to have __NTH and __THROW definitions is indeed through sys/cdefs.h, the ones in argp.h cannot be used from libc6-dev, and is only intended for the gnulib. Hence there is no bug, and I definitely agree with this conclusion. Closing. [0] http://sourceware.org/bugzilla/show_bug.cgi?id=4000 -- ·O· Pierre Habouzit ··O madcoder@debian.org OOO http://www.madism.orgAttachment: pgp3WQny7bstk.pgp
Description: PGP signature
--- End Message ---