From 41537a770b46f2376e74af58ba4885749339e81e Mon Sep 17 00:00:00 2001 From: Bernhard Reutner-Fischer Date: Mon, 15 Sep 2014 22:13:07 +0200 Subject: buildsys: fix IS_IN_lib* define NOT_IN_libc / IS_IN_libxxx appropriately to fix pthread_once Signed-off-by: Bernhard Reutner-Fischer --- libc/Makefile.in | 4 +--- libc/inet/Makefile.in | 2 +- libc/inet/rpc/Makefile.in | 2 +- libc/sysdeps/linux/Makefile.commonarch | 12 ++++++++++-- libc/sysdeps/linux/common/Makefile.in | 2 ++ libc/sysdeps/linux/x86_64/crt1.S | 4 +++- 6 files changed, 18 insertions(+), 8 deletions(-) (limited to 'libc') diff --git a/libc/Makefile.in b/libc/Makefile.in index 3b6a17b32..9c8152d44 100644 --- a/libc/Makefile.in +++ b/libc/Makefile.in @@ -15,11 +15,9 @@ ifneq ($(VERSION_SCRIPT),) VERSION_SCRIPT := -Wl,--version-script,$(VERSION_SCRIPT) endif +CFLAGS-libc :=# intentionally left blank LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-libc.so := -Wl,--dsbt-index=2 LDFLAGS-libc.so := $(LDFLAGS) $(VERSION_SCRIPT) -Wl,-init,$(SYMBOL_PREFIX)__uClibc_init -ifeq ($(UCLIBC_HAS_STDIO_FUTEXES),y) -CFLAGS += -D__USE_STDIO_FUTEXES__ -endif LIBS-libc.so := $(interp) $(ldso) $(top_builddir)lib/$(NONSHARED_LIBNAME) # we have SHARED_LIBNAME=libc.so.$(ABI_VERSION) defined in Rules.mak diff --git a/libc/inet/Makefile.in b/libc/inet/Makefile.in index 5a5593838..3bfe4b29e 100644 --- a/libc/inet/Makefile.in +++ b/libc/inet/Makefile.in @@ -13,7 +13,7 @@ INET_DIR := $(top_srcdir)libc/inet INET_OUT := $(top_builddir)libc/inet V4_OR_V6 := $(findstring y,$(UCLIBC_HAS_IPV4)$(UCLIBC_HAS_IPV6)) -CFLAGS-inet := -DRESOLVER="\"resolv.c\"" +CFLAGS-y-libc/inet := -DRESOLVER="\"resolv.c\"" CSRC-y := # des uses ntohl CSRC-$(findstring y,$(UCLIBC_HAS_CRYPT_IMPL)$(V4_OR_V6)) += ntohl.c diff --git a/libc/inet/rpc/Makefile.in b/libc/inet/rpc/Makefile.in index 65afc5359..9abe85dc8 100644 --- a/libc/inet/rpc/Makefile.in +++ b/libc/inet/rpc/Makefile.in @@ -7,7 +7,7 @@ subdirs += libc/inet/rpc -CFLAGS-rpc := -fno-strict-aliasing +CFLAGS-y-libc/inet/rpc := -fno-strict-aliasing # For now, only compile the stuff needed to do an NFS mount.... CSRC_NFS = authunix_prot.c auth_none.c auth_unix.c bindresvport.c \ diff --git a/libc/sysdeps/linux/Makefile.commonarch b/libc/sysdeps/linux/Makefile.commonarch index a001a44f1..1bf2dc511 100644 --- a/libc/sysdeps/linux/Makefile.commonarch +++ b/libc/sysdeps/linux/Makefile.commonarch @@ -20,8 +20,16 @@ libc-y += $(ARCH_OBJS-y) libc-nomulti-y += $(ARCH_SOBJ) objclean-y += CLEAN_$(subst $(top_builddir),,$(ARCH_OUT)) -CFLAGS-crti.S+=$(PICFLAG) -CFLAGS-crtn.S+=$(PICFLAG) +CFLAGS-OMIT-crt1.S := -D_LIBC_REENTRANT +CFLAGS-OMIT-crti.S := -D_LIBC_REENTRANT +CFLAGS-OMIT-crtn.S := -D_LIBC_REENTRANT +CFLAGS-OMIT-crtreloc.c := -D_LIBC_REENTRANT +CFLAGS-crti.S += $(PICFLAG) +CFLAGS-crtn.S += $(PICFLAG) +# Due to a "bug" in make these order_only prereqs inherit per-target flags. +# Attempt to workaround this inconvenient behaviour: +CFLAGS-OMIT-crt1.S += $(CFLAGS-rtld) -DIN_LIB=% +CFLAGS-OMIT-crtreloc.c += $(CFLAGS-rtld) -DIN_LIB=% CLEAN_$(subst $(top_builddir),,$(ARCH_OUT)): $(do_rm) $(addprefix $(ARCH_OUT)/*., o os oS) $(CTOR_TARGETS) $(CRTS) diff --git a/libc/sysdeps/linux/common/Makefile.in b/libc/sysdeps/linux/common/Makefile.in index 85621544c..a175ab64c 100644 --- a/libc/sysdeps/linux/common/Makefile.in +++ b/libc/sysdeps/linux/common/Makefile.in @@ -115,6 +115,8 @@ ifneq ($(strip $(ARCH_OBJS-y)),) CSRC-y := $(filter-out $(notdir $(ARCH_OBJS-y:.o=.c)) $(ARCH_OBJ_FILTEROUT-y),$(CSRC-y)) endif +CFLAGS-OMIT-ssp.c := $(CFLAG_-fstack-protector) $(CFLAG_-fstack-protector-all) $(CFLAG_-fstack-protector-strong) +CFLAGS-OMIT-ssp-local.c := $(CFLAG_-fstack-protector) $(CFLAG_-fstack-protector-all) $(CFLAG_-fstack-protector-strong) CFLAGS-ssp.c := $(SSP_DISABLE_FLAGS) CFLAGS-ssp-local.c := $(SSP_DISABLE_FLAGS) diff --git a/libc/sysdeps/linux/x86_64/crt1.S b/libc/sysdeps/linux/x86_64/crt1.S index 52b564cc8..87777dd5d 100644 --- a/libc/sysdeps/linux/x86_64/crt1.S +++ b/libc/sysdeps/linux/x86_64/crt1.S @@ -54,7 +54,9 @@ ... NULL */ - +#if defined NOT_IN_libc +# error error in build framework +#endif #include .text -- cgit v1.2.3