[email protected] wrote: > Full_Name: Mark > Version: 2.4.33 > OS: Solaris 10 & 11 > URL: ftp://ftp.openldap.org/incoming/ > Submission from: (NULL) (203.63.89.15) > > > The stock 2.4.33 fails to compile mdb with this error: > > cc -I/usr/local/include -L/usr/local/lib -I../../../include > -I../../../include > -I.. -I./.. -I./../../../libraries/libmdb -I/usr/local/include > -L/usr/local/lib > -c ./../../../libraries/libmdb/mdb.c -o mdb.o > "./../../../libraries/libmdb/mdb.c", line 3514: undefined symbol: top > "./../../../libraries/libmdb/mdb.c", line 3514: left operand of "->" must be > pointer to struct/union > cc: acomp failed for ./../../../libraries/libmdb/mdb.c > > The problem is top is defined inside #if MDB_DEBUG but used without the same > #if > qualifier.
Normally the DPRINTF macro would just expand to ((void) 0) if MDB_DEBUG is not defined, so no, top is not being used without MDB_DEBUG. But looking closer, I see this requires a C preprocessor that supports vararg macros. Don't you have a C99-compatible toolchain on Solaris? > The fix is: > /bin/perl -pe '($. == 3514) && s%^%#if MDB_DEBUG\n%' -i > libraries/libmdb/mdb.c > /bin/perl -pe '($. == 3517) && s%^%#endif\n%' -i libraries/libmdb/mdb.c In the future, please use unified diff format. Preferably just use "git format-patch" like it says on http://www.openldap.org/devel/contributing.html We don't make changes in already released code, and line numbers alone are a poor reference in development code. -- -- Howard Chu CTO, Symas Corp. http://www.symas.com Director, Highland Sun http://highlandsun.com/hyc/ Chief Architect, OpenLDAP http://www.openldap.org/project/
