Discussion:
[ast-developers] compilation problem w/ 'cmd/proto/proto.c'
David A.D. Morano, PE, PhD
2015-04-27 00:29:22 UTC
Permalink
I am compiling (continuing to compile) AST-OPEN 2014-12-24.
There is a compilation problem with:

cmd/proto/proto.c

at about line number 397 (or so) there is the code sequence:

#if !PROTO_STANDALONE
#undef error
#endif

This causes a link-time problem when compiling in what appears to be
'not-stand-alone-mode'. That is when the #define 'PROTO_STANDALINE'
is not defined.

The problem is that the #define 'error' is undefined and ends up
not being defined to anything, thus causing a link-time error
with an undefined symbol 'error()'.

It appears that an appropriate 'error()' is defined in 'ast_map.h',
itself included (ultimately) from 'ast.h', itself included in 'proto.c'
above. It seems like for none-stand-alone-mode it should get defined
to something like '_ast_error' (from 'ast_map.h'). But something does
not connect there and the end result is the link-time undefined
symbol.

My temporary fix (which obviously does not look like it should
be ultimately correct -- at least not ashethically) is to change
the above code to something like:

#if !PROTO_STANDALONE
#undef error
#else
#define error _ast_error
#endif

This does what 'ast_map.h" should have done.

Anyway, it (the 'proto' program) seems to compile OK with this fix.

Enjoy,

----

David A. Morano, PE, PhD
***@computer.org

Loading...