Coda File System

Re: coda 6.0.2 compile failure

From: Jan Harkes <jaharkes_at_cs.cmu.edu>
Date: Tue, 7 Oct 2003 14:05:58 -0400
On Tue, Oct 07, 2003 at 10:00:57AM -0700, Eric Sandall wrote:
> When compiling coda 6.0.2 I receive the following error:
> 
> g++ -fno-exceptions -fcheck-new -x c++ -Wall -MD -DHAVE_CONFIG_H -I.
> -I/usr/src/coda-6.0.2/include -I/usr/src/coda-6.0.2 -march=athlon-mp -mmmx
> -mfpmath=sse -msse -m3dnow  -c resolver_parser.c
> y.tab.c: In function `int yyparse()':
> y.tab.c:1331: error: parse error before `goto'
> y.tab.c:1322: warning: label `yyerrlab1' defined but not used
> make[3]: *** [resolver_parser.o] Error 1
> make[3]: Leaving directory `/usr/src/coda-6.0.2/coda-src/asr'

Broken bison release (or gcc-overoptimization), you need to upgrade to
the fixed version (1.875a?) or edit the template code in
/usr/share/bison/yacc.c.

The fix is something trivial like adding a semicolon right after the
yyerrlab1: label so that the compiler doesn't optimize it away.

> For coda 5.3.20, I used the following patch to fix this:
> --- BEGIN PATCH ---
> --- coda-src/asr/resolver_parser.c.old       2003-03-10 11:36:57.000000000
> -0800
> +++ coda-src/asr/resolver_parser.c   2003-03-10 11:37:20.000000000 -0800
> @@ -1324,9 +1324,11 @@
>  
>    /* Suppress GCC warning that yyerrlab1 is unused when no action
>       invokes YYERROR.  */
> +/*
>  #if defined (__GNUC_MINOR__) && 2093 <= (__GNUC__ * 1000 + __GNUC_MINOR__)
>    __attribute__ ((__unused__))
>  #endif
> +*/

That probably works as well, but resolver_parser.c is generated from
resolver_parser.y and the bison template code (where the actual problem
is). So this patch would have to be reapplied whenever bison rebuilds
the .c file.

> I then receive this error:
> 
> gcc -fno-exceptions -Wall -MD -DHAVE_CONFIG_H -I. -I/usr/src/coda-6.0.2/...
> ../util/libutil.a(getsecret.o)(.text+0x10): In function `HashSecret':
> : undefined reference to `MD5_Init'

This depends on whether you have the openssl development headers
installed. If openssl-dev exists it should try to use their
implementation, otherwise it should use the 'reference C implementation'
which is built and included in lib-src/base/libbase.a.

Jan
Received on 2003-10-07 14:07:27