Re: [PATCH] Git.pm: Support for perl/ being built by a different compiler
From: Dennis Stosberg <hidden>
Date: 2016-06-15 22:42:31
Subsystem:
the rest · Maintainer:
Linus Torvalds
Sun CC 5.8 fails with a strange error compiling diff-delta.c that
looks like an error in Sun's compiler to me:
$ cc -V
cc: Sun C 5.8 Patch 121015-02 2006/03/29
$ cc -o diff-delta.o -c -I/opt/gnu/include -D__EXTENSIONS__ \
-DSHA1_HEADER='<openssl/sha.h>' -DNO_STRCASESTR -DNO_STRLCPY \
-DNO_SETENV -DNO_UNSETENV diff-delta.c
"diff-delta.c", line 251: identifier redeclared: create_delta
current : function(pointer to const struct delta_index \
{pointer to const void src_buf, unsigned long src_size, \
unsigned int hash_mask, array[-1] of pointer to struct index_entry {..} hash},\
pointer to const void, unsigned long, pointer to unsigned long, \
unsigned long) returning pointer to void
previous: function(pointer to const struct delta_index \
{pointer to const void src_buf, unsigned long src_size, \
unsigned int hash_mask, array[-1] of pointer to struct index_entry {..} hash},\
pointer to const void, unsigned long, pointer to unsigned long, \
unsigned long) returning pointer to void : "delta.h", line 37
cc: acomp failed for diff-delta.c
make: *** [diff-delta.o] Error 2
Yes, the two prototypes are identical. Seems like the compiler has
problems with the opaque struct. When I played around with it, I
was surprised when I found that Sun CC actually compiled this file
after I removed the const qualifier from the first parameter of the
create_delta() function. Does anybody have a better explanation
than an error in the compiler?
Regards,
Dennis
diff --git a/delta.h b/delta.h
index 7b3f86d..ec9147c 100644
--- a/delta.h
+++ b/delta.h@@ -34,11 +34,12 @@ extern void free_delta_index(struct delt * must be freed by the caller. */ extern void * -create_delta(const struct delta_index *index, +create_delta(struct delta_index *index, const void *buf, unsigned long bufsize, unsigned long *delta_size, unsigned long max_delta_size); -/* +/*l + * diff_delta: create a delta from source buffer to target buffer * * If max_delta_size is non-zero and the resulting delta is to be larger
diff --git a/diff-delta.c b/diff-delta.c
index 8b9172a..802be76 100644
--- a/diff-delta.c
+++ b/diff-delta.c@@ -245,7 +245,7 @@ void free_delta_index(struct delta_index #define MAX_OP_SIZE (5 + 5 + 1 + RABIN_WINDOW + 7) void * -create_delta(const struct delta_index *index, +create_delta(struct delta_index *index, const void *trg_buf, unsigned long trg_size, unsigned long *delta_size, unsigned long max_size) {