toolchain/musl: update to version 1.1.20

This release introduces the ability to replace/interpose the allocator
(malloc) subject to certain restrictions, adds an experimental m68k
port, and makes notable improvements to stdio (application-provided
buffers), getaddrinfo (AI_ADDRCONFIG, support for IPv4-only kernel
configurations), the dynamic linker (safety against dlopen of
libraries using initial-exec TLS model, reclaiming unused memory on
FDPIC archs, better dladdr results), and handling of default thread
stack size (pthread_setattr_default_np now works more reliably).

Many bugs have been fixed, including potentially dangerous regressions
in iconv (only for new conversions to legacy encodings) and visibly
incorrect behavior in printf on non-x86 archs (%a format with
precision specifier), in getopt_long_only when short options are a
prefix for a long option, in complex arc-trig/hyperbolic functions, in
strftime and mktime (timezone-specific issues), and numerous
less-obvious places.

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
[altered commit msg a bit keeping it tight]
Tested-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
This commit is contained in:
Christian Lamparter 2018-09-04 23:27:00 +02:00 committed by Koen Vandeputte
parent 0dbdb476f3
commit 1801e60390
6 changed files with 31 additions and 87 deletions

View file

@ -8,13 +8,13 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/target.mk include $(INCLUDE_DIR)/target.mk
PKG_NAME:=musl PKG_NAME:=musl
PKG_VERSION:=1.1.19 PKG_VERSION:=1.1.20
PKG_RELEASE=1 PKG_RELEASE=1
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=55df09bfccbfe21fc9dd7d8f94550c0ff25ace04 PKG_SOURCE_VERSION:=0fa1e638e87cf257e9f96b4019b2076afd674a19
PKG_MIRROR_HASH:=eb94e4e7e94221dd8890afd9b29e2562c36cf5585649035349ca1c6c1c354f2b PKG_MIRROR_HASH:=0a49559e845f51aaf006539176a36d6527957affd2838e71fd43275b737e90fe
PKG_SOURCE_URL:=git://git.musl-libc.org/musl PKG_SOURCE_URL:=git://git.musl-libc.org/musl
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.xz

View file

@ -1,59 +0,0 @@
From 4e0877a604bad684be020f68e96a05156131fd44 Mon Sep 17 00:00:00 2001
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Sun, 24 Jun 2018 17:05:31 +0200
Subject: [PATCH] sys/socket.h: fix SO_PEERSEC value on MIPS
Differing from all other archs supported by musl, MIPS defines SO_PEERSEC
to 30 instead of 31.
Reported-by: Andrey Jr. Mlenikov <temnota.am@gmail.com>
---
arch/mips/bits/socket.h | 2 ++
arch/mips64/bits/socket.h | 2 ++
arch/mipsn32/bits/socket.h | 2 ++
include/sys/socket.h | 3 +++
4 files changed, 9 insertions(+)
--- a/arch/mips/bits/socket.h
+++ b/arch/mips/bits/socket.h
@@ -48,5 +48,7 @@ struct cmsghdr {
#define SO_SNDBUFFORCE 31
#define SO_RCVBUFFORCE 33
+#define SO_PEERSEC 30
+
#define SOCK_NONBLOCK 0200
#define SOCK_CLOEXEC 02000000
--- a/arch/mips64/bits/socket.h
+++ b/arch/mips64/bits/socket.h
@@ -64,5 +64,7 @@ struct cmsghdr {
#define SO_SNDBUFFORCE 31
#define SO_RCVBUFFORCE 33
+#define SO_PEERSEC 30
+
#define SOCK_NONBLOCK 0200
#define SOCK_CLOEXEC 02000000
--- a/arch/mipsn32/bits/socket.h
+++ b/arch/mipsn32/bits/socket.h
@@ -48,5 +48,7 @@ struct cmsghdr {
#define SO_SNDBUFFORCE 31
#define SO_RCVBUFFORCE 33
+#define SO_PEERSEC 30
+
#define SOCK_NONBLOCK 0200
#define SOCK_CLOEXEC 02000000
--- a/include/sys/socket.h
+++ b/include/sys/socket.h
@@ -201,7 +201,10 @@ struct linger {
#define SO_TIMESTAMP 29
#define SCM_TIMESTAMP SO_TIMESTAMP
+#ifndef SO_PEERSEC
#define SO_PEERSEC 31
+#endif
+
#define SO_PASSSEC 34
#define SO_TIMESTAMPNS 35
#define SCM_TIMESTAMPNS SO_TIMESTAMPNS

View file

@ -4,11 +4,6 @@ Date: Mon, 22 Jun 2015 11:01:56 +0200
Subject: [PATCH] Add libssp_nonshared.a so GCC's is not needed Subject: [PATCH] Add libssp_nonshared.a so GCC's is not needed
Signed-off-by: Steven Barth <steven@midlink.org> Signed-off-by: Steven Barth <steven@midlink.org>
---
Makefile | 10 ++++++++--
libssp_nonshared/__stack_chk_fail_local.c | 2 ++
2 files changed, 10 insertions(+), 2 deletions(-)
create mode 100644 libssp_nonshared/__stack_chk_fail_local.c
--- a/Makefile --- a/Makefile
+++ b/Makefile +++ b/Makefile
@ -21,21 +16,29 @@ Signed-off-by: Steven Barth <steven@midlink.org>
ALL_TOOLS = obj/musl-gcc ALL_TOOLS = obj/musl-gcc
WRAPCC_GCC = gcc WRAPCC_GCC = gcc
@@ -125,7 +125,8 @@ NOSSP_SRCS = $(wildcard crt/*.c) \ @@ -86,7 +86,7 @@ else
src/thread/__set_thread_area.c src/thread/$(ARCH)/__set_thread_area.c \
src/string/memset.c src/string/$(ARCH)/memset.c \
src/string/memcpy.c src/string/$(ARCH)/memcpy.c \
- ldso/dlstart.c ldso/dynlink.c
+ ldso/dlstart.c ldso/dynlink.c \
+ src/libssp_nonshared/__stack_chk_fail_local.c
$(NOSSP_SRCS:%.c=obj/%.o) $(NOSSP_SRCS:%.c=obj/%.lo): CFLAGS_ALL += $(CFLAGS_NOSSP)
$(CRT_OBJS): CFLAGS_ALL += -DCRT all: $(ALL_LIBS) $(ALL_TOOLS)
@@ -168,6 +169,11 @@ lib/libc.a: $(AOBJS)
-OBJ_DIRS = $(sort $(patsubst %/,%,$(dir $(ALL_LIBS) $(ALL_TOOLS) $(ALL_OBJS) $(GENH) $(GENH_INT))) obj/include)
+OBJ_DIRS = $(sort $(patsubst %/,%,$(dir $(ALL_LIBS) $(ALL_TOOLS) $(ALL_OBJS) $(GENH) $(GENH_INT))) obj/include obj/libssp_nonshared)
$(ALL_LIBS) $(ALL_TOOLS) $(ALL_OBJS) $(ALL_OBJS:%.o=%.lo) $(GENH) $(GENH_INT): | $(OBJ_DIRS)
@@ -113,6 +113,8 @@ obj/crt/rcrt1.o: $(srcdir)/ldso/dlstart.
obj/crt/Scrt1.o obj/crt/rcrt1.o: CFLAGS_ALL += -fPIC
+obj/libssp_nonshared/__stack_chk_fail_local.o: CFLAGS_ALL += $(CFLAGS_NOSSP)
+
OPTIMIZE_SRCS = $(wildcard $(OPTIMIZE_GLOBS:%=$(srcdir)/src/%))
$(OPTIMIZE_SRCS:$(srcdir)/%.c=obj/%.o) $(OPTIMIZE_SRCS:$(srcdir)/%.c=obj/%.lo): CFLAGS += -O3
@@ -165,6 +166,11 @@ lib/libc.a: $(AOBJS)
$(AR) rc $@ $(AOBJS) $(AR) rc $@ $(AOBJS)
$(RANLIB) $@ $(RANLIB) $@
+lib/libssp_nonshared.a: obj/src/libssp_nonshared/__stack_chk_fail_local.o +lib/libssp_nonshared.a: obj/libssp_nonshared/__stack_chk_fail_local.o
+ rm -f $@ + rm -f $@
+ $(AR) rc $@ $< + $(AR) rc $@ $<
+ $(RANLIB) $@ + $(RANLIB) $@
@ -44,7 +47,7 @@ Signed-off-by: Steven Barth <steven@midlink.org>
rm -f $@ rm -f $@
$(AR) rc $@ $(AR) rc $@
--- /dev/null --- /dev/null
+++ b/src/libssp_nonshared/__stack_chk_fail_local.c +++ b/libssp_nonshared/__stack_chk_fail_local.c
@@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
+#include "atomic.h" +#include "atomic.h"
+void __attribute__((visibility ("hidden"))) __stack_chk_fail_local(void) { a_crash(); } +void __attribute__((visibility ("hidden"))) __stack_chk_fail_local(void) { a_crash(); }

View file

@ -1,6 +1,6 @@
--- a/Makefile --- a/Makefile
+++ b/Makefile +++ b/Makefile
@@ -217,7 +217,7 @@ $(DESTDIR)$(includedir)/%: $(srcdir)/inc @@ -215,7 +215,7 @@ $(DESTDIR)$(includedir)/%: $(srcdir)/inc
$(INSTALL) -D -m 644 $< $@ $(INSTALL) -D -m 644 $< $@
$(DESTDIR)$(LDSO_PATHNAME): $(DESTDIR)$(libdir)/libc.so $(DESTDIR)$(LDSO_PATHNAME): $(DESTDIR)$(libdir)/libc.so

View file

@ -102,7 +102,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
#ifdef __cplusplus #ifdef __cplusplus
#define NULL 0L #define NULL 0L
#else #else
@@ -102,19 +110,19 @@ int puts(const char *); @@ -103,19 +111,19 @@ int puts(const char *);
int printf(const char *__restrict, ...); int printf(const char *__restrict, ...);
int fprintf(FILE *__restrict, const char *__restrict, ...); int fprintf(FILE *__restrict, const char *__restrict, ...);
int sprintf(char *__restrict, const char *__restrict, ...); int sprintf(char *__restrict, const char *__restrict, ...);
@ -127,7 +127,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
void perror(const char *); void perror(const char *);
@@ -135,8 +143,8 @@ int pclose(FILE *); @@ -136,8 +144,8 @@ int pclose(FILE *);
int fileno(FILE *); int fileno(FILE *);
int fseeko(FILE *, off_t, int); int fseeko(FILE *, off_t, int);
off_t ftello(FILE *); off_t ftello(FILE *);
@ -138,7 +138,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
void flockfile(FILE *); void flockfile(FILE *);
int ftrylockfile(FILE *); int ftrylockfile(FILE *);
void funlockfile(FILE *); void funlockfile(FILE *);
@@ -175,8 +183,8 @@ int fileno_unlocked(FILE *); @@ -176,8 +184,8 @@ int fileno_unlocked(FILE *);
int getw(FILE *); int getw(FILE *);
int putw(int, FILE *); int putw(int, FILE *);
char *fgetln(FILE *, size_t *); char *fgetln(FILE *, size_t *);
@ -149,7 +149,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
#endif #endif
#ifdef _GNU_SOURCE #ifdef _GNU_SOURCE
@@ -198,6 +206,9 @@ typedef struct _IO_cookie_io_functions_t @@ -199,6 +207,9 @@ typedef struct _IO_cookie_io_functions_t
FILE *fopencookie(void *, const char *, cookie_io_functions_t); FILE *fopencookie(void *, const char *, cookie_io_functions_t);
#endif #endif

View file

@ -56,7 +56,7 @@
case SHIFT_JIS: case SHIFT_JIS:
if (c < 128) break; if (c < 128) break;
if (c-0xa1 <= 0xdf-0xa1) { if (c-0xa1 <= 0xdf-0xa1) {
@@ -510,6 +517,7 @@ size_t iconv(iconv_t cd, char **restrict @@ -518,6 +525,7 @@ size_t iconv(iconv_t cd, char **restrict
c = ksc[c][d]; c = ksc[c][d];
if (!c) goto ilseq; if (!c) goto ilseq;
break; break;
@ -64,7 +64,7 @@
default: default:
if (!c) break; if (!c) break;
c = legacy_map(map, c); c = legacy_map(map, c);
@@ -550,6 +558,7 @@ size_t iconv(iconv_t cd, char **restrict @@ -559,6 +567,7 @@ size_t iconv(iconv_t cd, char **restrict
} }
} }
goto subst; goto subst;
@ -72,7 +72,7 @@
case SHIFT_JIS: case SHIFT_JIS:
if (c < 128) goto revout; if (c < 128) goto revout;
if (c == 0xa5) { if (c == 0xa5) {
@@ -623,6 +632,7 @@ size_t iconv(iconv_t cd, char **restrict @@ -632,6 +641,7 @@ size_t iconv(iconv_t cd, char **restrict
*(*out)++ = 'B'; *(*out)++ = 'B';
*outb -= 8; *outb -= 8;
break; break;