iputils: Use member based initialization for mrghdr struct

Fix build with musl

uclibc and glibc dont agree on structure of the struct, musl rightly
adds padding elements, so when doing anonymous initialization struct
elements gets wrongly mapped on 64bit arches

(From OE-Core rev: 3c54b18797eb26d2045fd506d2b0c8b996a0396c)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Khem Raj 2016-01-06 14:18:00 -08:00 committed by Richard Purdie
parent b207868cdd
commit ea9dc990a9
3 changed files with 146 additions and 0 deletions

View File

@ -0,0 +1,92 @@
From be0bb81d72fea4d20da74f4f2236aa145684f332 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 6 Jan 2016 14:14:22 -0800
Subject: [PATCH] Fix header inclusion for musl
Fix errors e.g.
In file included from tracepath.c:17:0:
/usr/include/linux/errqueue.h:33:18:
error: array type has incomplete element type 'struct timespec'
struct timespec ts[3];
^
tracepath.c: In function 'main':
tracepath.c:329:16: error: 'INT_MAX' undeclared (first use in this
function)
overhead, INT_MAX);
^
tracepath.c:329:16: note: each undeclared identifier is reported only
once for each function it appears in
Makefile:131: recipe for target 'tracepath.o' failed
make: *** [tracepath.o] Error 1
ping_common.c: In function 'main_loop':
ping_common.c:756:15: error: 'HZ' undeclared (first use in this
function)
if (1000 % HZ == 0 ? next <= 1000 / HZ : (next < INT_MAX / HZ &&
next * HZ <= 1000)) {
protocols/timed.h is not needed and is absent in musl
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
Upstream-Status: Pending
clockdiff.c | 1 -
ping_common.c | 1 +
tracepath.c | 2 ++
tracepath6.c | 1 +
4 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/clockdiff.c b/clockdiff.c
index 7c1ea1b..1d6341e 100644
--- a/clockdiff.c
+++ b/clockdiff.c
@@ -14,7 +14,6 @@
#include <netinet/ip.h>
#include <netinet/ip_icmp.h>
#define TSPTYPES
-#include <protocols/timed.h>
#include <fcntl.h>
#include <netdb.h>
#include <arpa/inet.h>
diff --git a/ping_common.c b/ping_common.c
index 7f82851..3ce699d 100644
--- a/ping_common.c
+++ b/ping_common.c
@@ -2,6 +2,7 @@
#include <ctype.h>
#include <sched.h>
#include <math.h>
+#include <asm-generic/param.h>
int options;
diff --git a/tracepath.c b/tracepath.c
index 89e6d16..c9d6ddd 100644
--- a/tracepath.c
+++ b/tracepath.c
@@ -12,6 +12,8 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
+#include <limits.h>
+#include <time.h>
#include <sys/socket.h>
#include <linux/types.h>
#include <linux/errqueue.h>
diff --git a/tracepath6.c b/tracepath6.c
index 126fadf..9d5745c 100644
--- a/tracepath6.c
+++ b/tracepath6.c
@@ -12,6 +12,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
+#include <limits.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/icmp6.h>
--
2.6.4

View File

@ -0,0 +1,52 @@
From 000629f74908a2a95f6104444c77ad93cf40d62d Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 13 Jan 2016 08:50:50 +0000
Subject: [PATCH] Intialize struct elements by name
makes it portable across glibc and musl
Fixes errors
| ping.c: In function 'send_probe':
| ping.c:735:19: warning: initialization makes integer from pointer
without a cast [-Wint-conversion]
| &iov, 1, &cmsg, 0, 0 };
| ^
| ping.c:735:19: note: (near initialization for 'm.__pad1')
| ping.c:735:19: error: initializer element is not computable at load
time
| ping.c:735:19: note: (near initialization for 'm.__pad1')
| make: *** [ping.o] Error 1
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
Upstream-Status: Pending
ping.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/ping.c b/ping.c
index 4989760..e67f381 100644
--- a/ping.c
+++ b/ping.c
@@ -731,8 +731,15 @@ int send_probe()
do {
static struct iovec iov = {outpack, 0};
- static struct msghdr m = { &whereto, sizeof(whereto),
- &iov, 1, &cmsg, 0, 0 };
+ static struct msghdr m = {
+ .msg_name = &whereto,
+ .msg_namelen = sizeof(whereto),
+ .msg_iov = &iov,
+ .msg_iovlen = 1,
+ .msg_control = &cmsg,
+ .msg_controllen = 0,
+ .msg_flags= 0,
+ };
m.msg_controllen = cmsg_len;
iov.iov_len = cc;
--
2.7.0

View File

@ -18,6 +18,8 @@ SRC_URI = "http://www.skbuff.net/iputils/${BPN}-${PV}.tar.bz2 \
file://debian/use_gethostbyname2.diff \
file://debian/targets.diff \
file://nsgmls-path-fix.patch \
file://0001-Fix-header-inclusion-for-musl.patch \
file://0001-Intialize-struct-elements-by-name.patch \
"
SRC_URI[md5sum] = "8aaa7395f27dff9f57ae016d4bc753ce"