main/linux-headers: bring back the patches for musl

This commit is contained in:
Natanael Copa 2016-04-08 07:53:56 +00:00
parent 76f490d687
commit ac6cba75d3
4 changed files with 196 additions and 4 deletions

View File

@ -0,0 +1,89 @@
From 2872f5d8bcef84e62b15b37ba4ffeccfb6402dad Mon Sep 17 00:00:00 2001
From: rofl0r <retnyg@gmx.net>
Date: Wed, 22 Jan 2014 00:48:28 +0100
Subject: [PATCH 1/3] libc-compat.h: fix some issues arising from in6.h
namely redefinition of some structs provided by netinet/in.h.
---
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Submitted
include/uapi/linux/libc-compat.h | 25 ++++++++-----------------
1 file changed, 8 insertions(+), 17 deletions(-)
Index: linux-4.4/include/uapi/linux/libc-compat.h
===================================================================
--- linux-4.4.orig/include/uapi/linux/libc-compat.h
+++ linux-4.4/include/uapi/linux/libc-compat.h
@@ -48,13 +48,12 @@
#ifndef _UAPI_LIBC_COMPAT_H
#define _UAPI_LIBC_COMPAT_H
-/* We have included glibc headers... */
-#if defined(__GLIBC__)
+#ifndef __KERNEL__ /* we're used from userspace */
-/* Coordinate with glibc netinet/in.h header. */
+/* Coordinate with libc netinet/in.h header. */
#if defined(_NETINET_IN_H)
-/* GLIBC headers included first so don't define anything
+/* LIBC headers included first so don't define anything
* that would already be defined. */
#define __UAPI_DEF_IN_ADDR 0
#define __UAPI_DEF_IN_IPPROTO 0
@@ -64,15 +63,7 @@
#define __UAPI_DEF_IN_CLASS 0
#define __UAPI_DEF_IN6_ADDR 0
-/* The exception is the in6_addr macros which must be defined
- * if the glibc code didn't define them. This guard matches
- * the guard in glibc/inet/netinet/in.h which defines the
- * additional in6_addr macros e.g. s6_addr16, and s6_addr32. */
-#if defined(__USE_MISC) || defined (__USE_GNU)
#define __UAPI_DEF_IN6_ADDR_ALT 0
-#else
-#define __UAPI_DEF_IN6_ADDR_ALT 1
-#endif
#define __UAPI_DEF_SOCKADDR_IN6 0
#define __UAPI_DEF_IPV6_MREQ 0
#define __UAPI_DEF_IPPROTO_V6 0
@@ -80,10 +71,10 @@
#define __UAPI_DEF_IN6_PKTINFO 0
#define __UAPI_DEF_IP6_MTUINFO 0
-#else
+#else /* defined(_NETINET_IN_H) */
/* Linux headers included first, and we must define everything
- * we need. The expectation is that glibc will check the
+ * we need. The expectation is that libc will check the
* __UAPI_DEF_* defines and adjust appropriately. */
#define __UAPI_DEF_IN_ADDR 1
#define __UAPI_DEF_IN_IPPROTO 1
@@ -93,7 +84,7 @@
#define __UAPI_DEF_IN_CLASS 1
#define __UAPI_DEF_IN6_ADDR 1
-/* We unconditionally define the in6_addr macros and glibc must
+/* We unconditionally define the in6_addr macros and libc must
* coordinate. */
#define __UAPI_DEF_IN6_ADDR_ALT 1
#define __UAPI_DEF_SOCKADDR_IN6 1
@@ -115,7 +106,7 @@
/* If we did not see any headers from any supported C libraries,
* or we are being included in the kernel, then define everything
* that we need. */
-#else /* !defined(__GLIBC__) */
+#else /* __KERNEL__ */
/* Definitions for in.h */
#define __UAPI_DEF_IN_ADDR 1
@@ -138,6 +129,6 @@
/* Definitions for xattr.h */
#define __UAPI_DEF_XATTR 1
-#endif /* __GLIBC__ */
+#endif /* __KERNEL__ */
#endif /* _UAPI_LIBC_COMPAT_H */

View File

@ -0,0 +1,59 @@
From 75ba4a547282f91d653872a4bba5f5eae234ea6c Mon Sep 17 00:00:00 2001
From: rofl0r <retnyg@gmx.net>
Date: Wed, 22 Jan 2014 00:57:48 +0100
Subject: [PATCH 2/3] libc-compat.h: prevent redefinition of struct ethhdr
---
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Submitted
include/uapi/linux/if_ether.h | 4 +++-
include/uapi/linux/libc-compat.h | 6 ++++++
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/include/uapi/linux/if_ether.h b/include/uapi/linux/if_ether.h
index aa63ed0..e94da57 100644
--- a/include/uapi/linux/if_ether.h
+++ b/include/uapi/linux/if_ether.h
@@ -22,6 +22,7 @@
#define _UAPI_LINUX_IF_ETHER_H
#include <linux/types.h>
+#include <linux/libc-compat.h>
/*
* IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble
@@ -134,11 +135,12 @@
* This is an Ethernet frame header.
*/
+#if __UAPI_DEF_ETHHDR
struct ethhdr {
unsigned char h_dest[ETH_ALEN]; /* destination eth addr */
unsigned char h_source[ETH_ALEN]; /* source ether addr */
__be16 h_proto; /* packet type ID field */
} __attribute__((packed));
-
+#endif
#endif /* _UAPI_LINUX_IF_ETHER_H */
diff --git a/include/uapi/linux/libc-compat.h b/include/uapi/linux/libc-compat.h
index afe15c2..7d0c78a 100644
--- a/include/uapi/linux/libc-compat.h
+++ b/include/uapi/linux/libc-compat.h
@@ -50,6 +50,12 @@
#ifndef __KERNEL__ /* we're used from userspace */
+#ifdef _NETINET_IF_ETHER_H /* musl */
+#define __UAPI_DEF_ETHHDR 0
+#else /* glibc uses __NETINET_IF_ETHER_H, and includes the kernel header. */
+#define __UAPI_DEF_ETHHDR 1
+#endif
+
/* Coordinate with libc netinet/in.h header. */
#if defined(_NETINET_IN_H)
--
2.6.4

View File

@ -0,0 +1,32 @@
From 8e69b663d6ddef132041a1186f081fdd74d4a31d Mon Sep 17 00:00:00 2001
From: rofl0r <retnyg@gmx.net>
Date: Mon, 20 Jan 2014 21:31:34 +0100
Subject: [PATCH 3/3] remove inclusion of sysinfo.h in kernel.h
the declaration of struct sysinfo clashes with userspace.
it's not quite clear why that header was included from kernel.h,
as none of its functionality is needed.
---
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Upstream-Status: Submitted
include/uapi/linux/kernel.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/include/uapi/linux/kernel.h b/include/uapi/linux/kernel.h
index 321e399..e8ff821 100644
--- a/include/uapi/linux/kernel.h
+++ b/include/uapi/linux/kernel.h
@@ -1,7 +1,9 @@
#ifndef _UAPI_LINUX_KERNEL_H
#define _UAPI_LINUX_KERNEL_H
+#ifdef __GLIBC__
#include <linux/sysinfo.h>
+#endif
/*
* 'kernel.h' contains some often-used function prototypes etc
--
2.6.4

View File

@ -2,7 +2,7 @@
pkgname=linux-headers
pkgver=4.4.6
_kernver=${pkgver%.*}
pkgrel=0
pkgrel=1
pkgdesc="Linux system headers"
url="http://kernel.org"
arch="all"
@ -11,6 +11,9 @@ makedepends="perl"
options="!strip !tracedeps"
source="http://www.kernel.org/pub/linux/kernel/v4.x/linux-$_kernver.tar.xz
http://www.kernel.org/pub/linux/kernel/v4.x/patch-$pkgver.xz
0001-libc-compat.h-fix-some-issues-arising-from-in6.h.patch
0002-libc-compat.h-prevent-redefinition-of-struct-ethhdr.patch
0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch
"
prepare() {
@ -48,8 +51,17 @@ package() {
}
md5sums="9a78fa2eb6c68ca5a40ed5af08142599 linux-4.4.tar.xz
d48f09bf61f2500d70f839e190dc7c5a patch-4.4.6.xz"
d48f09bf61f2500d70f839e190dc7c5a patch-4.4.6.xz
45813ea0672b2179cd5534765bca4701 0001-libc-compat.h-fix-some-issues-arising-from-in6.h.patch
d3845d6feece58f894f4e7785241aecf 0002-libc-compat.h-prevent-redefinition-of-struct-ethhdr.patch
54f05c22c84fa72c142761538975e6b9 0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch"
sha256sums="401d7c8fef594999a460d10c72c5a94e9c2e1022f16795ec51746b0d165418b2 linux-4.4.tar.xz
efea93ff30955d445344a83c36678fa8e64111219eeafea2a41fd4ee11f79d68 patch-4.4.6.xz"
efea93ff30955d445344a83c36678fa8e64111219eeafea2a41fd4ee11f79d68 patch-4.4.6.xz
03fd7e050e0ce90870c26921049b4bf05ddadb5b823d3e43b9d1f9e4d8a16c96 0001-libc-compat.h-fix-some-issues-arising-from-in6.h.patch
3f88dbae612b0f1d5076b9c61ebc5f0f77dee9e04d6d71f43f3f86ea4e6b37e2 0002-libc-compat.h-prevent-redefinition-of-struct-ethhdr.patch
f84d2eef7ef5750b8971b788685aebda518aeab9f3f690c782e060869cd7fe0f 0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch"
sha512sums="13c8459933a8b80608e226a1398e3d1848352ace84bcfb7e6a4a33cb230bbe1ab719d4b58e067283df91ce5311be6d2d595fc8c19e2ae6ecc652499415614b3e linux-4.4.tar.xz
73da057476eb31d818eed4b66c883f5ceec65f18ec8ea60d64e48334c7681af4ed4cf7eb8684481f705446a59fd124de9449d22e28805bc9617b6608ecec491d patch-4.4.6.xz"
73da057476eb31d818eed4b66c883f5ceec65f18ec8ea60d64e48334c7681af4ed4cf7eb8684481f705446a59fd124de9449d22e28805bc9617b6608ecec491d patch-4.4.6.xz
6ceaaa285bcc7699b72f07f04c018d8edc2e1a2860004c677da6ff8ca042fcecd37f7f264d8ec9783e4e2f60a91bd45ddc432f7ec063da1e3f4e9dfb75b5ba65 0001-libc-compat.h-fix-some-issues-arising-from-in6.h.patch
fbce0bf59dd8ed3da8d90db725e98ace410f1e1a71b1c2e0ef16c53327e3850019b4e52afb1b16115a8616492a1e758fab02158ea686113b1b6cd94c7b08f310 0002-libc-compat.h-prevent-redefinition-of-struct-ethhdr.patch
e5431719b3910162c17c7a46e296c4424f5b82f4ad4bc45ba933da7e7ebcf896bb98782f7764e584c573c49d9e6b00fe63f3a36ae4b3b137add6b9a21ddf14a0 0003-remove-inclusion-of-sysinfo.h-in-kernel.h.patch"