diff mbox series

package/ndisc6: fix for codesourcery compilation

Message ID 20200509170503.346103-1-vadim4j@gmail.com
State Changes Requested
Headers show
Series package/ndisc6: fix for codesourcery compilation | expand

Commit Message

Vadym Kochan May 9, 2020, 5:05 p.m. UTC
trace-{udp,tcp}.c uses BSD-style headers, it builds ok on some
latest libc compilation because they use:

    __extension__ union

but for example on codesourcery toolchain 4.x version it requires that
__FAVOR_BSD is defined. So fix it by defining this define only for
tcp/udp headers.

Fixes: http://autobuild.buildroot.net/results/d05d5471d10a2b6634711ccad75d7f86d222cc31

Signed-off-by: Vadym Kochan <vadim4j@gmail.com>
---
 ...x-compilation-for-codesourcery-toolc.patch | 46 +++++++++++++++++++
 1 file changed, 46 insertions(+)
 create mode 100644 package/ndisc6/0002-trace-udp-tcp-fix-compilation-for-codesourcery-toolc.patch

Comments

Thomas Petazzoni May 9, 2020, 4:39 p.m. UTC | #1
On Sat,  9 May 2020 20:05:03 +0300
Vadym Kochan <vadim4j@gmail.com> wrote:

> trace-{udp,tcp}.c uses BSD-style headers, it builds ok on some
> latest libc compilation because they use:
> 
>     __extension__ union
> 
> but for example on codesourcery toolchain 4.x version it requires that
> __FAVOR_BSD is defined. So fix it by defining this define only for
> tcp/udp headers.
> 
> Fixes: http://autobuild.buildroot.net/results/d05d5471d10a2b6634711ccad75d7f86d222cc31
> 
> Signed-off-by: Vadym Kochan <vadim4j@gmail.com>

Fixing issues for "codesourcery compilation" is wrong. What is being
fixed is either a glibc-version related issue, or a gcc-version related
issue. But we don't fix things for one specific toolchain.

Could you investigate a bit more, and reword the patch and commit log
accordingly ?

Thanks a lot,

Thomas
Vadym Kochan May 9, 2020, 6:24 p.m. UTC | #2
On Sat, May 09, 2020 at 06:39:43PM +0200, Thomas Petazzoni wrote:
> On Sat,  9 May 2020 20:05:03 +0300
> Vadym Kochan <vadim4j@gmail.com> wrote:
> 
> > trace-{udp,tcp}.c uses BSD-style headers, it builds ok on some
> > latest libc compilation because they use:
> > 
> >     __extension__ union
> > 
> > but for example on codesourcery toolchain 4.x version it requires that
> > __FAVOR_BSD is defined. So fix it by defining this define only for
> > tcp/udp headers.
> > 
> > Fixes: http://autobuild.buildroot.net/results/d05d5471d10a2b6634711ccad75d7f86d222cc31
> > 
> > Signed-off-by: Vadym Kochan <vadim4j@gmail.com>
> 
> Fixing issues for "codesourcery compilation" is wrong. What is being
> fixed is either a glibc-version related issue, or a gcc-version related
> issue. But we don't fix things for one specific toolchain.
> 
> Could you investigate a bit more, and reword the patch and commit log
> accordingly ?
> 

You are right, actually it was easier refer to codesourcery toolchain,
but yes the issue is related to glibc implementation in this case.
Will try to re-do the description.
Vadym Kochan May 9, 2020, 7:12 p.m. UTC | #3
On Sat, May 09, 2020 at 09:24:52PM +0300, vadim4j@gmail.com wrote:
> On Sat, May 09, 2020 at 06:39:43PM +0200, Thomas Petazzoni wrote:
> > On Sat,  9 May 2020 20:05:03 +0300
> > Vadym Kochan <vadim4j@gmail.com> wrote:
> > 
> > > trace-{udp,tcp}.c uses BSD-style headers, it builds ok on some
> > > latest libc compilation because they use:
> > > 
> > >     __extension__ union
> > > 
> > > but for example on codesourcery toolchain 4.x version it requires that
> > > __FAVOR_BSD is defined. So fix it by defining this define only for
> > > tcp/udp headers.
> > > 
> > > Fixes: http://autobuild.buildroot.net/results/d05d5471d10a2b6634711ccad75d7f86d222cc31
> > > 
> > > Signed-off-by: Vadym Kochan <vadim4j@gmail.com>
> > 
> > Fixing issues for "codesourcery compilation" is wrong. What is being
> > fixed is either a glibc-version related issue, or a gcc-version related
> > issue. But we don't fix things for one specific toolchain.
> > 
> > Could you investigate a bit more, and reword the patch and commit log
> > accordingly ?
> > 
> 
> You are right, actually it was easier refer to codesourcery toolchain,
> but yes the issue is related to glibc implementation in this case.
> Will try to re-do the description.

I sent v2, and updated status in patchwork.

Regards,
Vadym Kochan
diff mbox series

Patch

diff --git a/package/ndisc6/0002-trace-udp-tcp-fix-compilation-for-codesourcery-toolc.patch b/package/ndisc6/0002-trace-udp-tcp-fix-compilation-for-codesourcery-toolc.patch
new file mode 100644
index 0000000000..58b7584b4f
--- /dev/null
+++ b/package/ndisc6/0002-trace-udp-tcp-fix-compilation-for-codesourcery-toolc.patch
@@ -0,0 +1,46 @@ 
+From f654332ff631bf31e12c65685fd504166c93ef7f Mon Sep 17 00:00:00 2001
+From: Vadym Kochan <vadim4j@gmail.com>
+Date: Sat, 9 May 2020 19:29:24 +0300
+Subject: [PATCH] trace-{udp,tcp}: fix compilation for codesourcery toolchain
+
+Use __FAVOR_BSD define to enable BSD-like tcp/udp headers only
+for this particular case. Looks like this is needed for some old
+gcc versions (4.x?) because modern libc implementations uses:
+
+    __extension__ union
+
+to use both headers variants.
+
+Signed-off-by: Vadym Kochan <vadim4j@gmail.com>
+---
+ src/trace-tcp.c | 1 +
+ src/trace-udp.c | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/src/trace-tcp.c b/src/trace-tcp.c
+index 1b367ae..5d6ab8f 100644
+--- a/src/trace-tcp.c
++++ b/src/trace-tcp.c
+@@ -33,6 +33,7 @@
+ #include <unistd.h> // getpid()
+ #include <sys/socket.h> // SOCK_STREAM
+ #include <netinet/in.h>
++#define __FAVOR_BSD
+ #include <netinet/tcp.h>
+ 
+ #include "traceroute.h"
+diff --git a/src/trace-udp.c b/src/trace-udp.c
+index aa9364e..6b287ec 100644
+--- a/src/trace-udp.c
++++ b/src/trace-udp.c
+@@ -32,6 +32,7 @@
+ #include <sys/types.h>
+ #include <sys/socket.h> // SOCK_DGRAM
+ #include <netinet/in.h>
++#define __FAVOR_BSD
+ #include <netinet/udp.h>
+ 
+ #include "traceroute.h"
+-- 
+2.26.2
+