GNU logs - #10197, boring messages


Message sent to bug-libtool@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#10197: compilation failure with no message caused by libtool
Resent-From: Eric Blake <eblake@HIDDEN>
Original-Sender: debbugs-submit-bounces <at> debbugs.gnu.org
Resent-CC: bug-libtool@HIDDEN
Resent-Date: Fri, 02 Dec 2011 18:42:01 +0000
Resent-Message-ID: <handler.10197.B.132285131220708 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: report 10197
X-GNU-PR-Package: libtool
X-GNU-PR-Keywords: 
To: 10197 <at> debbugs.gnu.org
X-Debbugs-Original-To: bug-libtool@HIDDEN
Received: via spool by submit <at> debbugs.gnu.org id=B.132285131220708
          (code B ref -1); Fri, 02 Dec 2011 18:42:01 +0000
Received: (at submit) by debbugs.gnu.org; 2 Dec 2011 18:41:52 +0000
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.69)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1RWY3T-0005Nw-CC
	for submit <at> debbugs.gnu.org; Fri, 02 Dec 2011 13:41:51 -0500
Received: from eggs.gnu.org ([140.186.70.92])
	by debbugs.gnu.org with esmtp (Exim 4.69)
	(envelope-from <eblake@HIDDEN>) id 1RWY3O-0005Ni-70
	for submit <at> debbugs.gnu.org; Fri, 02 Dec 2011 13:41:49 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
	(envelope-from <eblake@HIDDEN>) id 1RWY36-00052H-BF
	for submit <at> debbugs.gnu.org; Fri, 02 Dec 2011 13:41:30 -0500
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=-8.1 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI,
	RP_MATCHES_RCVD autolearn=unavailable version=3.3.1
Received: from lists.gnu.org ([140.186.70.17]:53255)
	by eggs.gnu.org with esmtp (Exim 4.71)
	(envelope-from <eblake@HIDDEN>) id 1RWY36-00052D-7x
	for submit <at> debbugs.gnu.org; Fri, 02 Dec 2011 13:41:28 -0500
Received: from eggs.gnu.org ([140.186.70.92]:41522)
	by lists.gnu.org with esmtp (Exim 4.71)
	(envelope-from <eblake@HIDDEN>) id 1RWY34-00054b-U8
	for bug-libtool@HIDDEN; Fri, 02 Dec 2011 13:41:28 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
	(envelope-from <eblake@HIDDEN>) id 1RWY33-00050P-47
	for bug-libtool@HIDDEN; Fri, 02 Dec 2011 13:41:26 -0500
Received: from mx1.redhat.com ([209.132.183.28]:31771)
	by eggs.gnu.org with esmtp (Exim 4.71)
	(envelope-from <eblake@HIDDEN>) id 1RWY32-00050J-Tb
	for bug-libtool@HIDDEN; Fri, 02 Dec 2011 13:41:25 -0500
Received: from int-mx12.intmail.prod.int.phx2.redhat.com
	(int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25])
	by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id pB2IfNPJ024095
	(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK)
	for <bug-libtool@HIDDEN>; Fri, 2 Dec 2011 13:41:24 -0500
Received: from [10.3.113.136] (ovpn-113-136.phx2.redhat.com [10.3.113.136])
	by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP
	id pB2IfNgN008900; Fri, 2 Dec 2011 13:41:23 -0500
Message-ID: <4ED91BD2.2050706@HIDDEN>
Date: Fri, 02 Dec 2011 11:41:22 -0700
From: Eric Blake <eblake@HIDDEN>
Organization: Red Hat
User-Agent: Mozilla/5.0 (X11; Linux x86_64;
	rv:8.0) Gecko/20111115 Thunderbird/8.0
MIME-Version: 1.0
X-Enigmail-Version: 1.3.3
OpenPGP: url=http://people.redhat.com/eblake/eblake.gpg
Content-Type: multipart/signed; micalg=pgp-sha256;
	protocol="application/pgp-signature";
	boundary="------------enig997CE80334FC3FD9B13BBB29"
X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3)
X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3)
X-Received-From: 140.186.70.17
X-Spam-Score: -8.0 (--------)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <http://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
	<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <http://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <http://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
	<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Sender: debbugs-submit-bounces <at> debbugs.gnu.org
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
X-Spam-Score: -8.0 (--------)

This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
--------------enig997CE80334FC3FD9B13BBB29
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

I ran into a weird case today - trying to compile libvirt with CFLAGS
including -Wsuggest-attribute=3Dpure -fipa-pure-const produced a compile
failure, but no message.  It turns out that for the file in question,
libtool ended up compiling things twice, but gcc only warns when -fPIC
is not in effect (for some reason, the combination of fPIC and
-fipa-pure-const appears to not catch the warning, unless -O is also
present).

$ gcc -std=3Dgnu99 -DHAVE_CONFIG_H -I. -I.. -I../gnulib/lib
-I../gnulib/lib -I../include -I../src/util -I../include -DIN_LIBVIRT
-I/usr/include/libxml2 -Wsuggest-attribute=3Dpure -fipa-pure-const -c
util/buf.c -fPIC -DPIC -o a.o

$ gcc -std=3Dgnu99 -DHAVE_CONFIG_H -I. -I.. -I../gnulib/lib
-I../gnulib/lib -I../include -I../src/util -I../include -DIN_LIBVIRT
-I/usr/include/libxml2 -Wsuggest-attribute=3Dpure -fipa-pure-const -c
util/buf.c -o b.o
util/buf.c:86:1: warning: function might be candidate for attribute
=E2=80=98pure=E2=80=99 [-Wsuggest-attribute=3Dpure]
util/buf.c:227:1: warning: function might be candidate for attribute
=E2=80=98pure=E2=80=99 [-Wsuggest-attribute=3Dpure]
util/buf.c:242:1: warning: function might be candidate for attribute
=E2=80=98pure=E2=80=99 [-Wsuggest-attribute=3Dpure]

But because the warning only occurs during the second compilation, I end
up with no warning message:

$ make
make  all-am
make[1]: Entering directory `/home/remote/eblake/libvirt/src'
  CC     libvirt_util_la-buf.lo
make[1]: *** [libvirt_util_la-buf.lo] Error 1
make[1]: Leaving directory `/home/remote/eblake/libvirt/src'
make: *** [all] Error 2

Proof that -O makes a difference:

$ gcc -std=3Dgnu99 -DHAVE_CONFIG_H -I. -I.. -I../gnulib/lib
-I../gnulib/lib -I../include -I../src/util -I../include -DIN_LIBVIRT
-I/usr/include/libxml2 -Wsuggest-attribute=3Dpure -fipa-pure-const -c
util/buf.c -fPIC -DPIC -o a.o -O
util/buf.c: In function =E2=80=98virBufferGetIndent=E2=80=99:
util/buf.c:86:1: warning: function might be candidate for attribute
=E2=80=98pure=E2=80=99 [-Wsuggest-attribute=3Dpure]
util/buf.c: In function =E2=80=98virBufferError=E2=80=99:
util/buf.c:227:1: warning: function might be candidate for attribute
=E2=80=98pure=E2=80=99 [-Wsuggest-attribute=3Dpure]
util/buf.c: In function =E2=80=98virBufferUse=E2=80=99:
util/buf.c:242:1: warning: function might be candidate for attribute
=E2=80=98pure=E2=80=99 [-Wsuggest-attribute=3Dpure]

The full libtool invocation in question:

$ make V=3D1
make  all-am
make[1]: Entering directory `/home/remote/eblake/libvirt/src'
/bin/sh ../libtool  --tag=3DCC   --mode=3Dcompile ccache gcc -std=3Dgnu99=

-DHAVE_CONFIG_H -I. -I.. -I../gnulib/lib -I../gnulib/lib -I../include
-I../src/util -I../include -DIN_LIBVIRT        -I/usr/include/libxml2
-Wall -W -Wformat-y2k -Wformat-security -Winit-self
-Wmissing-include-dirs -Wunused -Wunknown-pragmas -Wstrict-aliasing
-Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-align
-Wwrite-strings -Wlogical-op -Waggregate-return -Wstrict-prototypes
-Wold-style-definition -Wmissing-prototypes -Wmissing-declarations
-Wmissing-noreturn -Wmissing-format-attribute -Wredundant-decls
-Wnested-externs -Winline -Winvalid-pch -Wvolatile-register-var
-Wdisabled-optimization -Wbuiltin-macro-redefined -Wmudflap
-Wpacked-bitfield-compat -Wsync-nand -Wattributes -Wcoverage-mismatch
-Wmultichar -Wabi -Wcpp -Wdeprecated -Wdeprecated-declarations
-Wdiv-by-zero -Wdouble-promotion -Wendif-labels -Wextra
-Wformat-contains-nul -Wformat-extra-args -Wformat-zero-length
-Wformat=3D2 -Wmultichar -Wnormalized=3Dnfc -Woverflow -Wpointer-to-int-c=
ast
-Wpragmas -Wsuggest-attribute=3Dconst -Wsuggest-attribute=3Dnoreturn
-Wsuggest-attribute=3Dpure -Wtrampolines -Wno-missing-field-initializers
-Wno-sign-compare -Wjump-misses-init -Wno-format-nonliteral
-Wframe-larger-than=3D4096 -Wp,-D_FORTIFY_SOURCE=3D2 -fstack-protector-al=
l
--param=3Dssp-buffer-size=3D4 -fexceptions -fasynchronous-unwind-tables
-fdiagnostics-show-option -funit-at-a-time -fipa-pure-const -Werror
 -g -MT libvirt_util_la-buf.lo -MD -MP -MF .deps/libvirt_util_la-buf.Tpo
-c -o libvirt_util_la-buf.lo `test -f 'util/buf.c' || echo './'`util/buf.=
c
libtool: compile:  ccache gcc -std=3Dgnu99 -DHAVE_CONFIG_H -I. -I..
-I../gnulib/lib -I../gnulib/lib -I../include -I../src/util -I../include
-DIN_LIBVIRT -I/usr/include/libxml2 -Wall -W -Wformat-y2k
-Wformat-security -Winit-self -Wmissing-include-dirs -Wunused
-Wunknown-pragmas -Wstrict-aliasing -Wshadow -Wpointer-arith
-Wbad-function-cast -Wcast-align -Wwrite-strings -Wlogical-op
-Waggregate-return -Wstrict-prototypes -Wold-style-definition
-Wmissing-prototypes -Wmissing-declarations -Wmissing-noreturn
-Wmissing-format-attribute -Wredundant-decls -Wnested-externs -Winline
-Winvalid-pch -Wvolatile-register-var -Wdisabled-optimization
-Wbuiltin-macro-redefined -Wmudflap -Wpacked-bitfield-compat -Wsync-nand
-Wattributes -Wcoverage-mismatch -Wmultichar -Wabi -Wcpp -Wdeprecated
-Wdeprecated-declarations -Wdiv-by-zero -Wdouble-promotion
-Wendif-labels -Wextra -Wformat-contains-nul -Wformat-extra-args
-Wformat-zero-length -Wformat=3D2 -Wmultichar -Wnormalized=3Dnfc -Woverfl=
ow
-Wpointer-to-int-cast -Wpragmas -Wsuggest-attribute=3Dconst
-Wsuggest-attribute=3Dnoreturn -Wsuggest-attribute=3Dpure -Wtrampolines
-Wno-missing-field-initializers -Wno-sign-compare -Wjump-misses-init
-Wno-format-nonliteral -Wframe-larger-than=3D4096 -Wp,-D_FORTIFY_SOURCE=3D=
2
-fstack-protector-all --param=3Dssp-buffer-size=3D4 -fexceptions
-fasynchronous-unwind-tables -fdiagnostics-show-option -funit-at-a-time
-fipa-pure-const -Werror -g -MT libvirt_util_la-buf.lo -MD -MP -MF
=2Edeps/libvirt_util_la-buf.Tpo -c util/buf.c  -fPIC -DPIC -o
=2Elibs/libvirt_util_la-buf.o
libtool: compile:  ccache gcc -std=3Dgnu99 -DHAVE_CONFIG_H -I. -I..
-I../gnulib/lib -I../gnulib/lib -I../include -I../src/util -I../include
-DIN_LIBVIRT -I/usr/include/libxml2 -Wall -W -Wformat-y2k
-Wformat-security -Winit-self -Wmissing-include-dirs -Wunused
-Wunknown-pragmas -Wstrict-aliasing -Wshadow -Wpointer-arith
-Wbad-function-cast -Wcast-align -Wwrite-strings -Wlogical-op
-Waggregate-return -Wstrict-prototypes -Wold-style-definition
-Wmissing-prototypes -Wmissing-declarations -Wmissing-noreturn
-Wmissing-format-attribute -Wredundant-decls -Wnested-externs -Winline
-Winvalid-pch -Wvolatile-register-var -Wdisabled-optimization
-Wbuiltin-macro-redefined -Wmudflap -Wpacked-bitfield-compat -Wsync-nand
-Wattributes -Wcoverage-mismatch -Wmultichar -Wabi -Wcpp -Wdeprecated
-Wdeprecated-declarations -Wdiv-by-zero -Wdouble-promotion
-Wendif-labels -Wextra -Wformat-contains-nul -Wformat-extra-args
-Wformat-zero-length -Wformat=3D2 -Wmultichar -Wnormalized=3Dnfc -Woverfl=
ow
-Wpointer-to-int-cast -Wpragmas -Wsuggest-attribute=3Dconst
-Wsuggest-attribute=3Dnoreturn -Wsuggest-attribute=3Dpure -Wtrampolines
-Wno-missing-field-initializers -Wno-sign-compare -Wjump-misses-init
-Wno-format-nonliteral -Wframe-larger-than=3D4096 -Wp,-D_FORTIFY_SOURCE=3D=
2
-fstack-protector-all --param=3Dssp-buffer-size=3D4 -fexceptions
-fasynchronous-unwind-tables -fdiagnostics-show-option -funit-at-a-time
-fipa-pure-const -Werror -g -MT libvirt_util_la-buf.lo -MD -MP -MF
=2Edeps/libvirt_util_la-buf.Tpo -c util/buf.c -o libvirt_util_la-buf.o
>/dev/null 2>&1
make[1]: *** [libvirt_util_la-buf.lo] Error 1
make[1]: Leaving directory `/home/remote/eblake/libvirt/src'
make: *** [all] Error 2

Any suggestions on how to make libtool display the compiler errors that
occur only when -fPIC is missing?  Or am I stuck not using
-fipa-pure-const without also passing -O?

--=20
Eric Blake   eblake@HIDDEN    +1-919-301-3266
Libvirt virtualization library http://libvirt.org


--------------enig997CE80334FC3FD9B13BBB29
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Public key at http://people.redhat.com/eblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iQEcBAEBCAAGBQJO2RvSAAoJEKeha0olJ0NqdYgH/0PIOVFZD8dVnvJLjbrcnJvj
ealntTOjrnd+aMz2IjQaladfs5aXfl8D3YLbSEf9Ux2iTA0SvgQ67wp5w0Anks1U
SPA5MqXfgatAAVLeQCF8o+vY1FbkpD1OzykvpGOkdI/chMxyH8S5vGOsK8zyN3T2
x/RWo8T0Uvnj5FATFMwS3koOF1bf/SH8fnVWKTwmSywEgu/7ziDIDArHiemKjbkn
kfLZuczUcWE140w4iSVJdA/ItmnPJ/yqv9rQWf8R9mmF2Tn1PnLGSy4tgL8DJS43
oul8ztR89AgP6H6/7+p6uKCCFM6C/3W4FxOLsA0ztWKFSt8ybiCzgVecYGV66mM=
=xbEk
-----END PGP SIGNATURE-----

--------------enig997CE80334FC3FD9B13BBB29--




Message sent:


Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Mailer: MIME-tools 5.427 (Entity 5.427)
Content-Type: text/plain; charset=utf-8
X-Loop: help-debbugs@HIDDEN
From: help-debbugs@HIDDEN (GNU bug Tracking System)
To: Eric Blake <eblake@HIDDEN>
Subject: bug#10197: Acknowledgement (compilation failure with no message
 caused by libtool)
Message-ID: <handler.10197.B.132285131220708.ack <at> debbugs.gnu.org>
References: <4ED91BD2.2050706@HIDDEN>
X-Gnu-PR-Message: ack 10197
X-Gnu-PR-Package: libtool
Reply-To: 10197 <at> debbugs.gnu.org
Date: Fri, 02 Dec 2011 18:42:02 +0000

Thank you for filing a new bug report with debbugs.gnu.org.

This is an automatically generated reply to let you know your message
has been received.

Your message is being forwarded to the package maintainers and other
interested parties for their attention; they will reply in due course.

Your message has been sent to the package maintainer(s):
 bug-libtool@HIDDEN

If you wish to submit further information on this problem, please
send it to 10197 <at> debbugs.gnu.org.

Please do not send mail to help-debbugs@HIDDEN unless you wish
to report a problem with the Bug-tracking system.

--=20
10197: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D10197
GNU Bug Tracking System
Contact help-debbugs@HIDDEN with problems


Message sent to bug-libtool@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#10197: compilation failure with no message caused by libtool
Resent-From: Peter O'Gorman <peter@HIDDEN>
Original-Sender: debbugs-submit-bounces <at> debbugs.gnu.org
Resent-CC: bug-libtool@HIDDEN
Resent-Date: Fri, 02 Dec 2011 19:50:02 +0000
Resent-Message-ID: <handler.10197.B10197.132285536626937 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 10197
X-GNU-PR-Package: libtool
X-GNU-PR-Keywords: 
To: Eric Blake <eblake@HIDDEN>
Cc: 10197 <at> debbugs.gnu.org
Received: via spool by 10197-submit <at> debbugs.gnu.org id=B10197.132285536626937
          (code B ref 10197); Fri, 02 Dec 2011 19:50:02 +0000
Received: (at 10197) by debbugs.gnu.org; 2 Dec 2011 19:49:26 +0000
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.69)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1RWZ6q-00070P-Vi
	for submit <at> debbugs.gnu.org; Fri, 02 Dec 2011 14:49:25 -0500
Received: from pogma.xen.prgmr.com ([68.68.97.8])
	by debbugs.gnu.org with esmtp (Exim 4.69)
	(envelope-from <peter@HIDDEN>) id 1RWZ6n-00070G-Ja
	for 10197 <at> debbugs.gnu.org; Fri, 02 Dec 2011 14:49:23 -0500
Message-ID: <4ED92BAF.9030207@HIDDEN>
X-DKIM: Sendmail DKIM Filter v2.8.3 pogma.xen.prgmr.com C6A8ABF5F6
DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=pogma.com; s=pogmail;
	t=1322855344; bh=SSqDhNskY25mHz6s3r+sbDoYbNFK9EcbBpIkUbjPxNE=;
	h=Date:From:MIME-Version:To:CC:Subject:References:In-Reply-To:
	Content-Type:Content-Transfer-Encoding;
	b=ezNmlaCnkStKGn0/cXYghv5+xzTQLjOvKB/px0+iDwRA4/lrx4sk4RGXS1loQjt4r
	s3aETpnZu/BjOTatDzn1/KvqRckWYcy2z/2pCkUbDXYZyU8CpiRTMHDoWl3ily4Sll
	JUUEfd08qSgMkirniKKgvSVxHleARS7tmZXhQEKo=
Date: Fri, 02 Dec 2011 13:49:03 -0600
From: Peter O'Gorman <peter@HIDDEN>
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US;
	rv:1.9.2.22) Gecko/20110906 Fedora/3.1.14-1.fc14 Thunderbird/3.1.14
MIME-Version: 1.0
References: <4ED91BD2.2050706@HIDDEN>
In-Reply-To: <4ED91BD2.2050706@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: -3.2 (---)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <http://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
	<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <http://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <http://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
	<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Sender: debbugs-submit-bounces <at> debbugs.gnu.org
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
X-Spam-Score: -3.2 (---)

On 12/02/2011 12:41 PM, Eric Blake wrote:

>
> Any suggestions on how to make libtool display the compiler errors that
> occur only when -fPIC is missing?  Or am I stuck not using
> -fipa-pure-const without also passing -O?

Does -no-suppress do this?

Peter





Last modified: Mon, 25 Nov 2019 12:00:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.