klibc: Upgrade to 2.0.6 release

Drop staging related patches which are not needed anymore

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Andrea Adami <andrea.adami@gmail.com>
This commit is contained in:
Khem Raj
2019-03-12 13:11:14 -07:00
parent 0597e79805
commit 9d8943fd2e
26 changed files with 10 additions and 423 deletions
@@ -0,0 +1,87 @@
From 57e3a60b23891905733bfea7a1cb78c2377cc524 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 9 Jul 2017 15:17:29 -0700
Subject: [PATCH] Define in_* structs for non-glibc system libs
These defines and structs are required to be coming from
userspace netinet/in.h, which is being overridden in klibc
however, libc-compat.h from kernel is only written keeping
glibc in mind, and does not provide adequate guards for musl
to infer that these structs should be defined in linux/in.h
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
usr/include/net/if.h | 11 +++++++++++
usr/include/netinet/in.h | 36 ++++++++++++++++++++++++++++++++++++
2 files changed, 47 insertions(+)
diff --git a/usr/include/net/if.h b/usr/include/net/if.h
index 116a176..6246b12 100644
--- a/usr/include/net/if.h
+++ b/usr/include/net/if.h
@@ -1,6 +1,17 @@
#ifndef _NET_IF_H
#define _NET_IF_H
+#ifndef __GLIBC__
+#include <linux/libc-compat.h>
+#undef __UAPI_DEF_IF_IFREQ
+#define __UAPI_DEF_IF_IFREQ 1
+#undef __UAPI_DEF_IF_IFNAMSIZ
+#define __UAPI_DEF_IF_IFNAMSIZ 1
+#undef __UAPI_DEF_IF_IFMAP
+#define __UAPI_DEF_IF_IFMAP 1
+#undef __UAPI_DEF_IF_NET_DEVICE_FLAGS
+#define __UAPI_DEF_IF_NET_DEVICE_FLAGS 1
+#endif
#include <sys/socket.h>
#include <sys/types.h>
#include <linux/if.h>
diff --git a/usr/include/netinet/in.h b/usr/include/netinet/in.h
index 2952bb2..0c95bc9 100644
--- a/usr/include/netinet/in.h
+++ b/usr/include/netinet/in.h
@@ -5,6 +5,42 @@
#ifndef _NETINET_IN_H
#define _NETINET_IN_H
+#ifndef __GLIBC__
+#include <linux/libc-compat.h>
+
+#undef __UAPI_DEF_IN_ADDR
+#undef __UAPI_DEF_IN_IPPROTO
+#undef __UAPI_DEF_IN_PKTINFO
+#undef __UAPI_DEF_IP_MREQ
+#undef __UAPI_DEF_SOCKADDR_IN
+#undef __UAPI_DEF_IN_CLASS
+#undef __UAPI_DEF_IN6_ADDR
+#undef __UAPI_DEF_IN6_ADDR_ALT
+#undef __UAPI_DEF_SOCKADDR_IN6
+#undef __UAPI_DEF_IPV6_MREQ
+#undef __UAPI_DEF_IPPROTO_V6
+#undef __UAPI_DEF_IPV6_OPTIONS
+#undef __UAPI_DEF_IN6_PKTINFO
+#undef __UAPI_DEF_IP6_MTUINFO
+#undef __UAPI_DEF_IF_IFREQ
+
+#define __UAPI_DEF_IN_ADDR 1
+#define __UAPI_DEF_IN_IPPROTO 1
+#define __UAPI_DEF_IN_PKTINFO 1
+#define __UAPI_DEF_IP_MREQ 1
+#define __UAPI_DEF_SOCKADDR_IN 1
+#define __UAPI_DEF_IN_CLASS 1
+#define __UAPI_DEF_IN6_ADDR 1
+#define __UAPI_DEF_IN6_ADDR_ALT 1
+#define __UAPI_DEF_SOCKADDR_IN6 1
+#define __UAPI_DEF_IPV6_MREQ 1
+#define __UAPI_DEF_IPPROTO_V6 1
+#define __UAPI_DEF_IPV6_OPTIONS 1
+#define __UAPI_DEF_IN6_PKTINFO 1
+#define __UAPI_DEF_IP6_MTUINFO 1
+#define __UAPI_DEF_IF_IFREQ 1
+#endif
+
#include <klibc/extern.h>
#include <stdint.h>
#include <endian.h> /* Must be included *before* <linux/in.h> */
@@ -0,0 +1,49 @@
From 241f423a015279cb29b7ad1a34386ef1c32007fc Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 9 Dec 2018 16:47:16 -0800
Subject: [PATCH] Define ulocked_{fgets|fread|fwrite} aliases
latest clang converts the normal calls to the unlocked variant
equivalents
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Cc: Andrea Adami <andrea.adami@gmail.com>
---
usr/klibc/fgets.c | 2 ++
usr/klibc/fread2.c | 2 ++
usr/klibc/fwrite2.c | 2 ++
3 files changed, 6 insertions(+)
diff --git a/usr/klibc/fgets.c b/usr/klibc/fgets.c
index dbf742c6..2e9fcb65 100644
--- a/usr/klibc/fgets.c
+++ b/usr/klibc/fgets.c
@@ -25,3 +25,5 @@ char *fgets(char *s, int n, FILE *f)
return s;
}
+char *fgets_unlocked(char *s, int n, FILE *f)
+ __alias("fgets");
diff --git a/usr/klibc/fread2.c b/usr/klibc/fread2.c
index 7dca56b1..5c234766 100644
--- a/usr/klibc/fread2.c
+++ b/usr/klibc/fread2.c
@@ -11,3 +11,5 @@ size_t fread(void *ptr, size_t size, size_t nmemb, FILE * f)
{
return _fread(ptr, size * nmemb, f) / size;
}
+size_t fread_unlocked(void *ptr, size_t size, size_t nmemb, FILE *f)
+ __alias("fread");
diff --git a/usr/klibc/fwrite2.c b/usr/klibc/fwrite2.c
index cebc017c..3e0bb57d 100644
--- a/usr/klibc/fwrite2.c
+++ b/usr/klibc/fwrite2.c
@@ -11,3 +11,5 @@ size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE * f)
{
return _fwrite(ptr, size * nmemb, f) / size;
}
+size_t fwrite_unlocked(void *ptr, size_t size, size_t nmemb, FILE *f)
+ __alias("fwrite");
--
2.19.2
@@ -0,0 +1,28 @@
From 4b4147b76518d31a88fb2c58cdbf2236e159a25c Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 8 Sep 2017 23:10:54 -0700
Subject: [PATCH] Kbuild.klibc: Add path to compiler headers via -isystem
We need to include this path so it can find compiler headers e.g.
stdarg.h which is called from wrapper stdarg.h using include_next
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
scripts/Kbuild.klibc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/scripts/Kbuild.klibc b/scripts/Kbuild.klibc
index 101f86f..1d5cdc4 100644
--- a/scripts/Kbuild.klibc
+++ b/scripts/Kbuild.klibc
@@ -105,7 +105,8 @@ KLIBCOBJCOPY := $(OBJCOPY)
KLIBCOBJDUMP := $(OBJDUMP)
# klibc include paths
-KLIBCCPPFLAGS := -nostdinc -iwithprefix include \
+KLIBCCPPFLAGS := -nostdinc -iwithprefix include \
+ -isystem $(shell $(CC) -print-file-name=include) \
-I$(KLIBCINC)/arch/$(KLIBCARCHDIR) \
-I$(KLIBCINC)/bits$(KLIBCBITSIZE) \
-I$(KLIBCOBJ)/../include \
@@ -0,0 +1,28 @@
From b6185401fc3daa7fa8ba2b84db3e4da3b94a9867 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Wed, 26 Jul 2017 16:13:16 -0700
Subject: [PATCH] Kbuild.klibc: Use -print-libgcc-file-name instead of
--print-libgcc
-print-libgcc-file-name works with clang and gcc unlike --print-libgcc
which is gcc specific
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
scripts/Kbuild.klibc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scripts/Kbuild.klibc b/scripts/Kbuild.klibc
index f500d53..101f86f 100644
--- a/scripts/Kbuild.klibc
+++ b/scripts/Kbuild.klibc
@@ -128,7 +128,7 @@ KLIBCCFLAGS += $(KLIBCCPPFLAGS) $(KLIBCREQFLAGS) $(KLIBCARCHREQFLAGS) \
KLIBCAFLAGS += -D__ASSEMBLY__ $(KLIBCCFLAGS)
KLIBCSTRIPFLAGS += --strip-all -R .comment -R .note
-KLIBCLIBGCC_DEF := $(shell $(KLIBCCC) $(KLIBCCFLAGS) --print-libgcc)
+KLIBCLIBGCC_DEF := $(shell $(KLIBCCC) $(KLIBCCFLAGS) -print-libgcc-file-name)
KLIBCLIBGCC ?= $(KLIBCLIBGCC_DEF)
KLIBCCRT0 := $(KLIBCOBJ)/arch/$(KLIBCARCHDIR)/crt0.o
KLIBCLIBC := $(KLIBCOBJ)/libc.a
@@ -0,0 +1,28 @@
From 63ab5102d6ef362a597941e62470bf19e6f1652b Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 11 Jul 2017 08:09:52 -0700
Subject: [PATCH] always use bfd linker
its possible that distros choose to default to gold linker
therefore explicitly asking for bfd linker would fix the
linking issues on such distros
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index dc10fc5..40647be 100644
--- a/Makefile
+++ b/Makefile
@@ -20,7 +20,7 @@ include $(srctree)/scripts/Kbuild.include
KLIBCROSS ?= $(CROSS_COMPILE)
export KLIBCROSS
export CC := $(KLIBCROSS)gcc
-export LD := $(KLIBCROSS)ld
+export LD := $(KLIBCROSS)ld.bfd
export AR := $(KLIBCROSS)ar
export RANLIB := $(KLIBCROSS)ranlib
export STRIP := $(KLIBCROSS)strip
@@ -0,0 +1,29 @@
From ebd2b0e414c98467156b961abb470b5d07f37ea8 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Fri, 29 Sep 2017 23:11:53 -0700
Subject: [PATCH] arm: Do not set a fallback march and mtune
In OE we pass the options explicitly, there is
no need to set it inside the makefiles, we will
need to compute values for CPU_ARCH and CPU_TUNE
which is a bit harder in OE
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
usr/klibc/arch/arm/MCONFIG | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/usr/klibc/arch/arm/MCONFIG b/usr/klibc/arch/arm/MCONFIG
index 303c6ac..48d2685 100644
--- a/usr/klibc/arch/arm/MCONFIG
+++ b/usr/klibc/arch/arm/MCONFIG
@@ -10,7 +10,7 @@
CPU_ARCH ?= armv4
CPU_TUNE ?= strongarm
-KLIBCOPTFLAGS += -Os -march=$(CPU_ARCH) -mtune=$(CPU_TUNE)
+KLIBCOPTFLAGS += -Os
KLIBCBITSIZE = 32
KLIBCREQFLAGS += -fno-exceptions
KLIBCSTRIPFLAGS += -R .ARM.exidx
@@ -0,0 +1,29 @@
From 8beffe501c1ac5b35d62004735c4157c74183901 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 9 Jul 2017 13:51:25 -0700
Subject: [PATCH] dash: Specify format string in fmtstr()
Fixes build with hardening flags
usr/dash/jobs.c:429:3: error: format not a string literal and no format arguments [-Werror=format-security]
col = fmtstr(s, 32, strsignal(st));
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
usr/dash/jobs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/usr/dash/jobs.c b/usr/dash/jobs.c
index 009bbfe..299bcac 100644
--- a/usr/dash/jobs.c
+++ b/usr/dash/jobs.c
@@ -426,7 +426,7 @@ sprint_status(char *s, int status, int sigonly)
goto out;
#endif
}
- col = fmtstr(s, 32, strsignal(st));
+ col = fmtstr(s, 32, "%s", strsignal(st));
#ifdef WCOREDUMP
if (WCOREDUMP(status)) {
col += fmtstr(s + col, 16, " (core dumped)");
@@ -0,0 +1,30 @@
From d966d52d1e569cbc2293d841285e2b8941f28c61 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Sun, 9 Jul 2017 15:56:28 -0700
Subject: [PATCH] include linux/sysinfo.h directly
This is done to avoid the kernel header linux/kernel.h to use
__GLIBC__ define to decide on if libc implements sysinfo() API
or not. Kernel headers should be independent of such assumptions
but until its done in right place, change the local header
override to avoid this assumption
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
usr/include/sys/sysinfo.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/usr/include/sys/sysinfo.h b/usr/include/sys/sysinfo.h
index dba68dc..d145c0b 100644
--- a/usr/include/sys/sysinfo.h
+++ b/usr/include/sys/sysinfo.h
@@ -5,7 +5,7 @@
#ifndef _SYS_SYSINFO_H
#define _SYS_SYSINFO_H
-#include <linux/kernel.h>
+#include <linux/sysinfo.h>
extern int sysinfo(struct sysinfo *info);
@@ -0,0 +1,28 @@
From cdc6edc2cfcd0ce88d6e66654d605dad303b1a75 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 11 Sep 2018 17:03:36 -0700
Subject: [PATCH] klibc/Kbuild: Accept EXTRA_KLIBCAFLAGS
For passing additional assembler flags
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
usr/klibc/Kbuild | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/usr/klibc/Kbuild b/usr/klibc/Kbuild
index 98caf2e9..b34521e0 100644
--- a/usr/klibc/Kbuild
+++ b/usr/klibc/Kbuild
@@ -168,7 +168,8 @@ $(SOHASH): $(SOLIB) $(SOLIB).hash
targets += interp.o
quiet_cmd_interp = BUILD $@
- cmd_interp = $(KLIBCCC) $(klibccflags) -D__ASSEMBLY__ \
+ cmd_interp = $(KLIBCCC) $(klibccflags) $(EXTRA_KLIBCAFLAGS) \
+ -D__ASSEMBLY__ \
-DLIBDIR=\"$(SHLIBDIR)\" \
-DSOHASH=\"$(SOLIBHASH)\" \
-c -o $@ $<
@@ -0,0 +1,27 @@
From e4d5d5224609d7d5c824dd231f5baec868befdfa Mon Sep 17 00:00:00 2001
From: Andrea Adami <andrea.adami@gmail.com>
Date: Tue, 4 Sep 2018 23:56:00 +0200
Subject: [PATCH 1/1] klibc: add getrandom() syscall
needed by latest kexec-tools for qemuarm64 (kashan)
Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
---
usr/klibc/SYSCALLS.def | 1 +
1 file changed, 1 insertion(+)
diff --git a/usr/klibc/SYSCALLS.def b/usr/klibc/SYSCALLS.def
index 6b3bf4c..d4184ba 100644
--- a/usr/klibc/SYSCALLS.def
+++ b/usr/klibc/SYSCALLS.def
@@ -274,6 +274,7 @@ int syslog::klogctl(int, char *, int);
int sysinfo(struct sysinfo *);
long kexec_load(void *, unsigned long, struct kexec_segment *, unsigned long);
<x86_64,ppc64,s390x> long kexec_file_load(int, int, unsigned long, const char *, unsigned long);
+ssize_t getrandom(void *, size_t, unsigned int);
/*
* Low-level I/O (generally architecture-specific);
--
2.7.4
@@ -0,0 +1,27 @@
From 90683d5eaabfa684a71411d6e3262153ac191ad8 Mon Sep 17 00:00:00 2001
From: Andrea Adami <andrea.adami@gmail.com>
Date: Tue, 4 Sep 2018 23:44:30 +0200
Subject: [PATCH 1/1] klibc_2.0.4: add kexec_file_load syscall
for supported archs only (matched in kexec-tools)
Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
---
usr/klibc/SYSCALLS.def | 1 +
1 file changed, 1 insertion(+)
diff --git a/usr/klibc/SYSCALLS.def b/usr/klibc/SYSCALLS.def
index c56e8f9..6b3bf4c 100644
--- a/usr/klibc/SYSCALLS.def
+++ b/usr/klibc/SYSCALLS.def
@@ -273,6 +273,7 @@ int reboot::__reboot(int, int, int, void *);
int syslog::klogctl(int, char *, int);
int sysinfo(struct sysinfo *);
long kexec_load(void *, unsigned long, struct kexec_segment *, unsigned long);
+<x86_64,ppc64,s390x> long kexec_file_load(int, int, unsigned long, const char *, unsigned long);
/*
* Low-level I/O (generally architecture-specific);
--
2.7.4
@@ -0,0 +1,27 @@
From cf97079009ba48d10e52052b2eab7461ea4dd09b Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Mon, 10 Jul 2017 20:42:50 -0700
Subject: [PATCH] mkfifo: Implement mkfifo
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
usr/utils/mkfifo.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/usr/utils/mkfifo.c b/usr/utils/mkfifo.c
index 5a758b2..f1f577e 100644
--- a/usr/utils/mkfifo.c
+++ b/usr/utils/mkfifo.c
@@ -26,6 +26,11 @@ static int make_fifo(char *dir)
return 0;
}
+int mkfifo (const char *__p, mode_t __m)
+{
+ return mknod(__p, (__m & ~S_IFMT) | S_IFIFO, (dev_t) 0);
+}
+
int main(int argc, char *argv[])
{
int c, ret = 0;
@@ -0,0 +1,24 @@
From d2fb484d995221277cce7abddcd7dfa0e8bceec3 Mon Sep 17 00:00:00 2001
From: Andrea Adami <andrea.adami@gmail.com>
Date: Fri, 11 Jan 2013 17:26:40 +0000
Subject: [PATCH] klibc_2.0.2: apply FIX_V4BX patch for armv4 targets only
Status: not applicable upstream, in OE/Yocto we use $(FIX_V4BX)
which is "" in case of armv5 or thumbs.
Signed-off-by: Andrea Adami <andrea.adami@gmail.com>
---
usr/klibc/arch/arm/MCONFIG | 1 +
1 file changed, 1 insertion(+)
--- a/usr/klibc/arch/arm/MCONFIG
+++ b/usr/klibc/arch/arm/MCONFIG
@@ -29,6 +29,7 @@ else
KLIBCSHAREDFLAGS = -Ttext-segment 0x01800000
ifeq ($(CONFIG_AEABI),y)
KLIBCREQFLAGS += -mabi=aapcs-linux -mno-thumb-interwork
+KLIBCLDFLAGS += $(FIX_ARMV4_EABI_BX)
else
KLIBCREQFLAGS += -mabi=apcs-gnu -mno-thumb-interwork
endif
@@ -0,0 +1,22 @@
From 0cb26cf2d25d36c1fdcc4f1635e4329436ed866a Mon Sep 17 00:00:00 2001
From: Andrea Adami <andrea.adami@gmail.com>
Date: Fri, 19 Sep 2014 23:09:29 +0200
---
klcc/klcc.in | 3 +++
1 file changed, 3 insertions(+)
diff --git a/klcc/klcc.in b/klcc/klcc.in
index 43d0984..61e9385 100644
--- a/klcc/klcc.in
+++ b/klcc/klcc.in
@@ -204,6 +204,9 @@ while ( defined($a = shift(@ARGV)) ) {
# Libraries
push(@libs, $a);
push(@libs, shift(@ARGV)) if ( $2 eq '' );
+ } elsif ( $a =~ /^--([sysroot=])(.*)$/ ) {
+ # Override gcc encoded sysroot
+ push(@ccopt, $a);
} else {
die "$0: unknown option: $a\n";
}
@@ -0,0 +1,19 @@
meta-clang passes this option to compiler defaults
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Index: git/klcc/klcc.in
===================================================================
--- git.orig/klcc/klcc.in
+++ git/klcc/klcc.in
@@ -207,6 +207,9 @@ while ( defined($a = shift(@ARGV)) ) {
} elsif ( $a =~ /^--([sysroot=])(.*)$/ ) {
# Override gcc encoded sysroot
push(@ccopt, $a);
+ } elsif ( $a eq '-no-integrated-as' ) {
+ # Allow clang options
+ push(@ccopt, $a);
} else {
die "$0: unknown option: $a\n";
}
@@ -0,0 +1,23 @@
From 1118cc971917abe19ddb029aa80417f6fd6bb343 Mon Sep 17 00:00:00 2001
From: Thomas Kunze <thommycheck@gmx.de>
Date: Sat, 6 Aug 2011 05:30:14 +0000
Subject: [PATCH] klibc: initial commit of version 1.5.24
Patch was imported from the OpenEmbedded git server
(git://git.openembedded.org/openembedded)
as of commit id b6764cf32ec93547531130dca364fb95e1c495f4
Signed-off-by: Thomas Kunze <thommycheck@gmx.de>
---
defconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/defconfig
+++ b/defconfig
@@ -6,5 +6,5 @@ CONFIG_KLIBC_ZLIB=y
CONFIG_REGPARM=y
# ARM options
# CONFIG_KLIBC_THUMB is not set
-# CONFIG_AEABI is not set
+CONFIG_AEABI=y
# CONFIG_DEBUG_INFO is not set
@@ -0,0 +1,25 @@
Patch was imported from the OpenEmbedded git server
(git://git.openembedded.org/openembedded)
as of commit id 676cbb54d42c89a4832871064cfcb7ee2ad372ee
klcc-cross: Add patch to use /usr/bin/env perl
Certain configurations (such as autobuilders) may build in very
deep paths (that are longer than the #! mechanism allows) which
makes it unsafe to use the direct path for perl. In our case we know
that /usr/bin/env perl will always return ours (if it has been built).
Signed-off-by: Tom Rini <tom_rini@mentor.com>
Index: klibc-1.5.20/klcc/makeklcc.pl
===================================================================
--- a/klcc/makeklcc.pl
+++ b/klcc/makeklcc.pl
@@ -26,7 +26,7 @@ sub pathsearch($) {
return undef;
}
-print "#!${perlpath}\n";
+print "#!/usr/bin/env perl\n";
open(KLIBCCONF, "< $klibcconf\0")
or die "$0: cannot open $klibcconf: $!\n";