Thread (7 messages) flat view 7 messages, 5 authors, 2016-06-15

Re: obstack fails to compile on OS X 10.7

From: David Aguilar <hidden>
Date: 2016-06-15 22:51:56

On Sun, Aug 28, 2011 at 10:08:46PM +0200, Fredrik Kuivinen wrote:
On Sat, Aug 27, 2011 at 03:14:43AM -0700, David Aguilar wrote:
quoted
On Sat, Aug 27, 2011 at 02:21:40AM -0400, Brian Gernhardt wrote:
quoted
Some of the errors look like things I could track down, but some just confuse me.  If anyone else could take a look into this, it would be much appreciated.

~~ Brian G.

gcc -o compat/obstack.o -c -MF compat/.depend/obstack.o.d -MMD -MP  -Wall -Wdeclaration-after-statement -Werror -Wno-deprecated-declarations -I. -DUSE_ST_TIMESPEC  -DSHA1_HEADER='"block-sha1/sha1.h"'  -DNO_MEMMEM  compat/obstack.c
In file included from compat/obstack.c:30:
compat/obstack.h:190: error: __block attribute can be specified on variables only
compat/obstack.c:70: error: expected specifier-qualifier-list before ‘uintmax_t’
compat/obstack.c:111:24: error: exitfail.h: No such file or directory
cc1: warnings being treated as errors
compat/obstack.c: In function ‘print_and_abort’:
compat/obstack.c:436: warning: implicit declaration of function ‘gettext’
compat/obstack.c:436: warning: incompatible implicit declaration of built-in function ‘gettext’
compat/obstack.c:438: error: ‘exit_failure’ undeclared (first use in this function)
compat/obstack.c:438: error: (Each undeclared identifier is reported only once
compat/obstack.c:438: error: for each function it appears in.)
compat/obstack.c:439: warning: ‘noreturn’ function does return
make: *** [compat/obstack.o] Error 1

$ gcc --version
i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)
I ran into the same thing.

This fixes it for me, but we might want to rearrange the
#includes a bit.  I think this needs more work.. including
compat/obstack.h from kwset.c seems wrong.
Should we just include obstack.h in git-compat-util instead?

I suspect that more exotic platforms may have problems
with obstack.h as well.  This probably needs some testing
on SunOS, AIX, IRIX, etc.

How about doing something a bit simpler instead and changing obstack.c
to not make use of exit.h and exitfail.h? Then we don't have to update
Makefile for all platforms needing NEEDS_OBSTACK and NEEDS_EXITFAIL.
I like this much better.  Less code is better code.
I don't understand why the ELIDE_CODE check is not sufficient. Care to
explain?
I can't say I know.  The intention of the check is to avoid
pulling in that section of code when it is already built-in to
the C library.  Maybe that check doesn't quite mean the same
thing when the file is used alone outside of its original
context?
-void obstack_free (struct obstack *__obstack, void *__block);
+void obstack_free (struct obstack *obstack, void *block);
Tiny nit: I know it's just a declaration but would it be
advisable to drop the variable names altogether here?
Having a pointer and a structure with the same "obstack"
name could be confusing.

This looks good otherwise.  I was a bit iffy about my patch
when I had to bring in the extra headers.
Doing without them is much better.

I tried your patch on top of my recent
"Improve compiler header dependency check" and it worked fine.

So...
Tested-by: David Aguilar <redacted>
-- 
					David
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help