tags 703540 + pending patch thanks
On Wednesday 20 March 2013 17:51:54 you wrote:
While building the package using our research compiler infrastructure we noticed conflicting types being used in the linked executable. This is due to _GNU_SOURCE being defined in linux/route.c and posix/unix_socket.c, but not in any other file. As a result, system headers expand to conflicting declarations. (This was at least noticed for the sendto function, but may extend to others.)
Either all or no file should #define _GNU_SOURCE.
Please add information how to reproduce this the next time you are adding such such a bug. Now I can just assume what you are writing is true (even when the man page about sendto says otherwise). Not knowing how to reproduce it in the best possible way just makes it harder for everyone to check the impact of the problem.
I've forwarded it to the upstream maintainer and attached the change for Debian.
Kind regards, Sven
Subject: [PATCH] Either all or no source file should #define _GNU_SOURCE.
Thanks to Sven Eckelmann and Michael Tautschnig for reporting and fixes.
--- Makefile | 1 + linux/route.c | 1 - posix/unix_socket.c | 1 - 3 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/Makefile b/Makefile index fe1f094..ce1e198 100755 --- a/Makefile +++ b/Makefile @@ -27,6 +27,7 @@ LINUX_OBJ = linux/route.o linux/tun.o linux/kernel.o
ifeq ($(UNAME),Linux) OS_OBJ = $(LINUX_OBJ) $(POSIX_OBJ) +CPPFLAGS += -D_GNU_SOURCE endif
OBJ = batman.o originator.o schedule.o list-batman.o allocate.o bitarray.o hash.o profile.o ring_buffer.o hna.o $(OS_OBJ) diff --git a/linux/route.c b/linux/route.c index 119ebb2..bceac95 100644 --- a/linux/route.c +++ b/linux/route.c @@ -21,7 +21,6 @@
-#define _GNU_SOURCE #include <sys/ioctl.h> #include <arpa/inet.h> /* inet_ntop() */ #include <errno.h> diff --git a/posix/unix_socket.c b/posix/unix_socket.c index 5bed217..02a0a3a 100644 --- a/posix/unix_socket.c +++ b/posix/unix_socket.c @@ -21,7 +21,6 @@
-#define _GNU_SOURCE #include <sys/time.h> #include <stdio.h> #include <fcntl.h>
Applied in commit 1e275d939d45ecc1d96957a353dc639d28aefb52 Author: Elektra Wagenrad onelektra@gmx.net Date: Thu Mar 21 15:57:45 2013 +0100
Either all or no source file should #define _GNU_SOURCE.
Thanks to Sven Eckelmann and Michael Tautschnig for reporting and fixing.
Signed-off-by: Elektra Wagenrad onelektra@gmx.net
Thanks, everyone!
Cheers, Elektra
Subject: [PATCH] Either all or no source file should #define _GNU_SOURCE.
Thanks to Sven Eckelmann and Michael Tautschnig for reporting and fixes.
Makefile | 1 + linux/route.c | 1 - posix/unix_socket.c | 1 - 3 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/Makefile b/Makefile index fe1f094..ce1e198 100755 --- a/Makefile +++ b/Makefile @@ -27,6 +27,7 @@ LINUX_OBJ = linux/route.o linux/tun.o linux/kernel.o
ifeq ($(UNAME),Linux) OS_OBJ = $(LINUX_OBJ) $(POSIX_OBJ) +CPPFLAGS += -D_GNU_SOURCE endif
OBJ = batman.o originator.o schedule.o list-batman.o allocate.o bitarray.o hash.o profile.o ring_buffer.o hna.o $(OS_OBJ) diff --git a/linux/route.c b/linux/route.c index 119ebb2..bceac95 100644 --- a/linux/route.c +++ b/linux/route.c @@ -21,7 +21,6 @@
-#define _GNU_SOURCE #include <sys/ioctl.h> #include <arpa/inet.h> /* inet_ntop() */ #include <errno.h> diff --git a/posix/unix_socket.c b/posix/unix_socket.c index 5bed217..02a0a3a 100644 --- a/posix/unix_socket.c +++ b/posix/unix_socket.c @@ -21,7 +21,6 @@
-#define _GNU_SOURCE #include <sys/time.h> #include <stdio.h>
#include <fcntl.h>
1.7.9.5
Hi Sven, hi all,
[...]
Either all or no file should #define _GNU_SOURCE.
Please add information how to reproduce this the next time you are adding such such a bug. Now I can just assume what you are writing is true (even when the man page about sendto says otherwise). Not knowing how to reproduce it in the best possible way just makes it harder for everyone to check the impact of the problem.
Just one question before I elaborate a bit: what information in the man page are you referring to? I can't quite seem to see anything mentioning _GNU_SOURCE?
I fully understand your concerns and indeed it is a problem that I cannot quite provide a concrete counterexample witnessing the problem. It may even be the cast that, at present, this is only a potential problem and not a real one. It's much like a compiler warning: ok to be ignored if you are doing it intentionally and you are 100% sure you know what you are doing. In all other cases, however, it is likely worth fixing, as the problem can only ever be found by link-time type checking, which usual compilers can't do. Even if done, there is some non-trivial effort required to tracing back the type inconsistency to inconsistent order of #include or a missing #define.
The most I can provide right now is all the scripts that suffice to reproduce the build results and error logs, to be found at https://github.com/tautschnig/cprover-debian
I've forwarded it to the upstream maintainer and attached the change for Debian.
[...]
Thanks!
Best, Michael
Hi Michael,
On Fri, Mar 29, 2013 at 11:48:16AM +0000, Michael Tautschnig wrote:
Hi Sven, hi all,
[...]
Either all or no file should #define _GNU_SOURCE.
Please add information how to reproduce this the next time you are adding such such a bug. Now I can just assume what you are writing is true (even when the man page about sendto says otherwise). Not knowing how to reproduce it in the best possible way just makes it harder for everyone to check the impact of the problem.
Just one question before I elaborate a bit: what information in the man page are you referring to? I can't quite seem to see anything mentioning _GNU_SOURCE?
I fully understand your concerns and indeed it is a problem that I cannot quite provide a concrete counterexample witnessing the problem. It may even be the cast that, at present, this is only a potential problem and not a real one. It's much like a compiler warning: ok to be ignored if you are doing it intentionally and you are 100% sure you know what you are doing. In all other cases, however, it is likely worth fixing, as the problem can only ever be found by link-time type checking, which usual compilers can't do. Even if done, there is some non-trivial effort required to tracing back the type inconsistency to inconsistent order of #include or a missing #define.
The most I can provide right now is all the scripts that suffice to reproduce the build results and error logs, to be found at https://github.com/tautschnig/cprover-debian
I've forwarded it to the upstream maintainer and attached the change for Debian.
[...]
Thanks!
Elektra provided a patch to fix this issue and it has been applied already. The patch and the related "Applied!" message have been posted to the batman ml, maybe you are not subscribed and you did not get them?
Cheers,
On Friday 29 March 2013 11:48:16 Michael Tautschnig wrote:
Hi Sven, hi all,
[...]
Either all or no file should #define _GNU_SOURCE.
Please add information how to reproduce this the next time you are adding such such a bug. Now I can just assume what you are writing is true (even when the man page about sendto says otherwise).
[...]
Just one question before I elaborate a bit: what information in the man page are you referring to? I can't quite seem to see anything mentioning _GNU_SOURCE?
Yes, this was exactly the thing I was pointing out:
(This was at least noticed for the sendto function, but may extend to others.)
Kind regards, Sven
b.a.t.m.a.n@lists.open-mesh.org