delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2001/11/17/16:48:27

Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT sources DOT redhat DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT sources DOT redhat DOT com>
List-Help: <mailto:cygwin-help AT sources DOT redhat DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT sources DOT redhat DOT com
Delivered-To: mailing list cygwin AT sources DOT redhat DOT com
From: swamp-dog AT ntlworld DOT com (Guy Harrison)
To: <cygwin AT cygwin DOT com>
Subject: Re: gcc-2.95.3-5 on cygwin compilation problem
Date: Sat, 17 Nov 2001 21:41:48 GMT
Reply-To: swamp-dog AT ntlworld DOT com
Message-ID: <3bfad34b.1447511@smtp.swampdog>
References: <DDENLHEIANHJBHNBDPBCMEFKCKAA DOT joe AT aiobjects DOT com>
In-Reply-To: <DDENLHEIANHJBHNBDPBCMEFKCKAA.joe@aiobjects.com>
X-Mailer: Forte Agent 1.5/32.451
MIME-Version: 1.0
X-MIME-Autoconverted: from quoted-printable to 8bit by delorie.com id fAHLmQO04174

On Thu, 15 Nov 2001 12:15:36 -0700, "Joe Graham" <joe AT aiobjects DOT com>
wrote:

FWIW here's my stab at it...

There should be only one sys_errlist.

>Hello
>I ran into the following 2 problems when trying to build gcc-2.95.3-5 on
>cygwin and gcc-3.0.  Both gave me the same problems in the same file.  Below
>is how i got it to compile but I sure my implementation is probably wrong.
>Here goes.
>********
>error 1:
>********
>in file:
><gcc_source_directory>/libiberty/strerror.c
>../../gcc-2.95.3-5/libiberty/strerror.c:464: conflicting types for
>`sys_errlist
>/usr/include/sys/errno.h:23: previous declaration of `sys_errlist'
>make[1]: *** [strerror.o] Error 1

extern __IMPORT const char * const sys_errlist[];

Just about as 'const' as you can get.

>original:
>static const char **sys_errlist;
>fix:
>//static const char **sys_errlist;
>(commenting out the declaration fixes this)

Declaration here allows you to declare a "creatable" sys_errlist. The
system one above is effectively saying there already is one.

>********
>error 2:
>********
>in file:
><gcc_source_directory>/libiberty/strerror.c
>../../gcc-2.95.3-5/libiberty/strerror.c
>../../gcc-2.95.3-5/libiberty/strerror.c: In function `init_error_tables':
>../../gcc-2.95.3-5/libiberty/strerror.c:546: `sys_errlist' has an incomplete
>typ
>e
>original:
>     if ((sys_errlist = (const char **) malloc (nbytes)) != NULL)
>fix:
>     if ((sys_errlist[eip->value] = (const char **) malloc (nbytes)) !=
>NULL)
>(does this need to be eip->name ?)

I suspect there's nothing wrong and your fix is horribly broken.

>here's the diff
>464c464
>< //static const char **sys_errlist;
>---
>> static const char **sys_errlist;
>546c546
><       if ((sys_errlist[eip->value] = (const char **) malloc (nbytes)) !=
>NULL)
>
>---
>>       if ((sys_errlist = (const char **) malloc (nbytes)) != NULL)

I've not compiled gcc but methinks there's two effective choices.

1) Compile against already existing 'sys_errlist'.
2) gcc creates its own 'sys_errlist'.

This is only a guess: you want option (1). Option (2) probably exists
for "bootstrapping" gcc.

I took a look at strerror.c and the problem code is conditional on
HAVE_SYSERRLIST - that must be undefined, at least at that point,
otherwise the problem would not have arisen. You need to discover why
(config.h - configure).


-- 
swamp-dog AT ntlworld DOT com

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019