All of lore.kernel.org
 help / color / mirror / Atom feed
* nfsim on amd64: va_list incompatible type error
@ 2005-01-06 23:57 Max Kellermann
  2005-01-07  0:30 ` Patrick McHardy
  0 siblings, 1 reply; 2+ messages in thread
From: Max Kellermann @ 2005-01-06 23:57 UTC (permalink / raw)
  To: netfilter-devel

Hi,

I'm trying to get nfsim running on my Athlon 64.. (nfsim is definitely
cool stuff! I'll use it to test my H.323 ct helper module)

The easiest thing first: the README should mention that you need the
libreadline headers to compile (libreadline4-dev on Debian).

I applied Patrick's 4 patches to my svn/trunk working copy, they fixed
a lot of error messages concerning 64 bit portability. Plus, I had to
add 24 dummy bytes to pad cmdline_option (also Patrick's idea).

gcc -Wmissing-prototypes -Wstrict-prototypes -Wunused -Wall -g -Wa,-W
-I. -I/home/max/svn/nfsim/core -I/home/max/svn/nfsim/kernelenv/include
-I/home/max/svn/nfsim/netfilter/include  -c -o core/talloc.o
core/talloc.c
core/talloc.c: In function `talloc_vasprintf':
core/talloc.c:862: error: incompatible types in assignment
core/talloc.c:868: error: incompatible types in assignment
core/talloc.c: In function `talloc_vasprintf_append':
core/talloc.c:906: error: incompatible types in assignment
core/talloc.c:918: error: incompatible types in assignment

both gcc 1:3.3.5-5 and 3.4.3-6 (Debian) are affected. I found several
references to this behaviour on the net, one is a gcc bug report:

 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8262

.. but I fail to understand how to go around this limitation. When I
defined HAVE_VA_COPY as a workaround, the error went away. Where is
HAVE_VA_COPY meant to be defined?

nfsim works now, although most tests from nfsim-testsuite fail, is
that correct?  (on my P4 @work, nfsim segfaults, I'll analyze that
tomorrow).

Max

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: nfsim on amd64: va_list incompatible type error
  2005-01-06 23:57 nfsim on amd64: va_list incompatible type error Max Kellermann
@ 2005-01-07  0:30 ` Patrick McHardy
  0 siblings, 0 replies; 2+ messages in thread
From: Patrick McHardy @ 2005-01-07  0:30 UTC (permalink / raw)
  To: Max Kellermann; +Cc: Rusty Russell, netfilter-devel

[-- Attachment #1: Type: text/plain, Size: 1123 bytes --]

Max Kellermann wrote:

>gcc -Wmissing-prototypes -Wstrict-prototypes -Wunused -Wall -g -Wa,-W
>-I. -I/home/max/svn/nfsim/core -I/home/max/svn/nfsim/kernelenv/include
>-I/home/max/svn/nfsim/netfilter/include  -c -o core/talloc.o
>core/talloc.c
>core/talloc.c: In function `talloc_vasprintf':
>core/talloc.c:862: error: incompatible types in assignment
>core/talloc.c:868: error: incompatible types in assignment
>core/talloc.c: In function `talloc_vasprintf_append':
>core/talloc.c:906: error: incompatible types in assignment
>core/talloc.c:918: error: incompatible types in assignment
>
>both gcc 1:3.3.5-5 and 3.4.3-6 (Debian) are affected. I found several
>references to this behaviour on the net, one is a gcc bug report:
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=8262
>
>.. but I fail to understand how to go around this limitation. When I
>defined HAVE_VA_COPY as a workaround, the error went away. Where is
>HAVE_VA_COPY meant to be defined?
>
I used the same workaround, but this patch should be better. In
samba HAVE_VA_COPY is probably defined by autoconf, but nfsim
doesn't use autoconf.

Regards
Patrick


[-- Attachment #2: 05.diff --]
[-- Type: text/x-patch, Size: 1462 bytes --]

Index: Makefile.in
===================================================================
--- Makefile.in	(revision 3579)
+++ Makefile.in	(working copy)
@@ -5,8 +5,9 @@
 BINDIR=%BINDIR%
 LIBDIR=%LIBDIR%
 BASEDIR=%BASEDIR%
+VA_COPY=%VA_COPY%
 
-CFLAGS   = -Wmissing-prototypes -Wstrict-prototypes -Wunused -Wall -g -Wa,-W
+CFLAGS   = -Wmissing-prototypes -Wstrict-prototypes -Wunused -Wall -g -Wa,-W $(VA_COPY)
 CPPFLAGS = -I. -I$(shell pwd)/core -I$(shell pwd)/kernelenv/include \
 	   -I$(shell pwd)/netfilter/include
 
Index: configure
===================================================================
--- configure	(revision 3579)
+++ configure	(working copy)
@@ -38,8 +38,19 @@
 [ -n "$BINDIR" ] || BINDIR="$PREFIX"/bin/
 [ -n "$LIBDIR" ] || LIBDIR="$PREFIX"/lib/
 
-SUB='s@%GCOVFLAGS%@'$GCOVFLAGS'@;s@%TYPE%@'$TYPE'@;s@%VERSION%@'$VERSION'@;s@%GCOV%@'$GCOV'@;s@%CC%@'$CC'@;s@%LIBDIR%@'$LIBDIR'@;s@%BINDIR%@'$BINDIR'@;s@%BASEDIR%@'$BASEDIR'@'
+echo "
+#include <stdarg.h>
+int main(int argc, char **argv)
+{
+	va_list ap1, ap2;
+	va_copy(ap1, ap2);
+	exit(0);
+}" >.va_copy.c
+gcc .va_copy.c -o /dev/null 2>/dev/null && VA_COPY="-DHAVE_VA_COPY"
+rm .va_copy.c
 
+SUB='s@%GCOVFLAGS%@'$GCOVFLAGS'@;s@%TYPE%@'$TYPE'@;s@%VERSION%@'$VERSION'@;s@%GCOV%@'$GCOV'@;s@%CC%@'$CC'@;s@%LIBDIR%@'$LIBDIR'@;s@%BINDIR%@'$BINDIR'@;s@%BASEDIR%@'$BASEDIR'@;s@%VA_COPY%@'$VA_COPY'@'
+
 [ -d $KERNELDIR/net/$TYPE/netfilter ] ||
 	barf No netfilter directory found in $KERNELDIR
 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2005-01-07  0:30 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-01-06 23:57 nfsim on amd64: va_list incompatible type error Max Kellermann
2005-01-07  0:30 ` Patrick McHardy

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.