 1801e60390
			
		
	
	1801e60390
	
	
	
		
			
			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>
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 7ec87fbbc3cac99b4173d082dd6195f47c9a32e7 Mon Sep 17 00:00:00 2001
 | |
| From: Steven Barth <steven@midlink.org>
 | |
| Date: Mon, 22 Jun 2015 11:01:56 +0200
 | |
| Subject: [PATCH] Add libssp_nonshared.a so GCC's is not needed
 | |
| 
 | |
| Signed-off-by: Steven Barth <steven@midlink.org>
 | |
| 
 | |
| --- a/Makefile
 | |
| +++ b/Makefile
 | |
| @@ -66,7 +66,7 @@ CRT_LIBS = $(addprefix lib/,$(notdir $(C
 | |
|  STATIC_LIBS = lib/libc.a
 | |
|  SHARED_LIBS = lib/libc.so
 | |
|  TOOL_LIBS = lib/musl-gcc.specs
 | |
| -ALL_LIBS = $(CRT_LIBS) $(STATIC_LIBS) $(SHARED_LIBS) $(EMPTY_LIBS) $(TOOL_LIBS)
 | |
| +ALL_LIBS = $(CRT_LIBS) $(STATIC_LIBS) $(SHARED_LIBS) $(EMPTY_LIBS) $(TOOL_LIBS) lib/libssp_nonshared.a
 | |
|  ALL_TOOLS = obj/musl-gcc
 | |
|  
 | |
|  WRAPCC_GCC = gcc
 | |
| @@ -86,7 +86,7 @@ else
 | |
|  
 | |
|  all: $(ALL_LIBS) $(ALL_TOOLS)
 | |
|  
 | |
| -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)
 | |
|  	$(RANLIB) $@
 | |
|  
 | |
| +lib/libssp_nonshared.a: obj/libssp_nonshared/__stack_chk_fail_local.o
 | |
| +	rm -f $@
 | |
| +	$(AR) rc $@ $<
 | |
| +	$(RANLIB) $@
 | |
| +
 | |
|  $(EMPTY_LIBS):
 | |
|  	rm -f $@
 | |
|  	$(AR) rc $@
 | |
| --- /dev/null
 | |
| +++ b/libssp_nonshared/__stack_chk_fail_local.c
 | |
| @@ -0,0 +1,2 @@
 | |
| +#include "atomic.h"
 | |
| +void __attribute__((visibility ("hidden"))) __stack_chk_fail_local(void) { a_crash(); }
 |