summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makerules32
-rw-r--r--Rules.mak10
-rw-r--r--ldso/ldso/Makefile.in17
-rw-r--r--ldso/libdl/Makefile.in4
-rw-r--r--libc/Makefile.in4
-rw-r--r--libc/inet/Makefile.in2
-rw-r--r--libc/inet/rpc/Makefile.in2
-rw-r--r--libc/sysdeps/linux/Makefile.commonarch12
-rw-r--r--libc/sysdeps/linux/common/Makefile.in2
-rw-r--r--libc/sysdeps/linux/x86_64/crt1.S4
-rw-r--r--libm/Makefile.in2
-rw-r--r--libm/metag/Makefile.arch2
-rw-r--r--libm/powerpc/e500/fpu/Makefile.arch2
-rw-r--r--libpthread/linuxthreads.old/Makefile.in4
-rw-r--r--libpthread/linuxthreads.old_db/Makefile.in2
-rw-r--r--libpthread/linuxthreads/Makefile.in6
-rw-r--r--libpthread/linuxthreads_db/Makefile.in2
-rw-r--r--libpthread/nptl/Makefile.in11
-rw-r--r--libpthread/nptl/sysdeps/metag/Makefile.arch2
-rw-r--r--libpthread/nptl/sysdeps/pthread/Makefile.in4
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch8
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/i386/Makefile.arch13
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.arch2
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/Makefile.arch7
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/sh/Makefile.arch24
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.arch4
-rw-r--r--libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/Makefile.arch14
-rw-r--r--libpthread/nptl_db/Makefile.in8
-rw-r--r--libubacktrace/Makefile.in5
29 files changed, 94 insertions, 117 deletions
diff --git a/Makerules b/Makerules
index 05d9548cb..85f21ea1a 100644
--- a/Makerules
+++ b/Makerules
@@ -26,6 +26,27 @@ $(lib-a-y): | $(top_builddir)lib
endif
objs: all_objs
+# apply unconditional per-directory flags
+define add_IS_IN_lib
+ifneq ($(strip $(2)),)
+__add_IS_IN_lib := $(subst $(top_builddir),,$(2))
+$$(__add_IS_IN_lib): CFLAGS-for-library-members:=$(CFLAGS-$(1)) -DIN_LIB=$(word 1,$(subst /, ,$(1)))
+endif
+endef
+$(eval $(call add_IS_IN_lib,rtld,$(ldso-y)))
+$(eval $(call add_IS_IN_lib,libc,$(libc-y) $(libc-static-y) $(libc-y:.o=.os) $(libc-shared-y) $(libc-nonshared-y)))
+$(eval $(call add_IS_IN_lib,libcrypt,$(libcrypt-a-y) $(libcrypt-so-y)))
+$(eval $(call add_IS_IN_lib,libdl,$(libdl-a-y) $(libdl-so-y)))
+$(eval $(call add_IS_IN_lib,libintl,$(libintl-a-y) $(libintl-so-y)))
+$(eval $(call add_IS_IN_lib,libm,$(libm-a-y) $(libm-so-y)))
+$(eval $(call add_IS_IN_lib,libnsl,$(libnsl-a-y) $(libnsl-so-y)))
+$(eval $(call add_IS_IN_lib,libpthread/$(PTNAME),$(libpthread-a-y) $(libpthread-so-y) $(libpthread-nonshared-y)))
+$(eval $(call add_IS_IN_lib,libpthread/$(PTNAME)_db,$(libthread_db-a-y) $(libthread_db-so-y)))
+$(eval $(call add_IS_IN_lib,libresolv,$(libresolv-a-y) $(libresolv-so-y)))
+$(eval $(call add_IS_IN_lib,librt,$(librt-a-y) $(librt-so-y)))
+$(eval $(call add_IS_IN_lib,libutil,$(libutil-a-y) $(libutil-so-y)))
+$(eval $(call add_IS_IN_lib,libubacktrace,$(libubacktrace-a-y) $(libubacktrace-so-y)))
+
shared_objs = $(libc-y:.o=.os) $(libc-shared-y) $(libc-nonshared-y) \
$(libcrypt-so-y) $(libdl-so-y) \
$(libintl-so-y) $(libm-so-y) $(libnsl-so-y) \
@@ -228,14 +249,19 @@ maybe_exec = \
#collect_multi_flags = $(CFLAGS-$(notdir $(d))) $(CFLAGS-$(notdir $(patsubst %/,%,$(dir $(d)))))
collect_multi_flags = $(CFLAGS-$(notdir $(patsubst %/,%,$(dir $(d)))))
+#sub_srcdir = $(word 1,$(filter-out lib extra locale libpthread,$(wordlist 1,2,$(subst /, ,$(subst $(top_srcdir),,$(dir $<))))))
+
CFLAGS_gen.dep = -MT $@ -MD -MP -MF $(dir $@).$(notdir $@).dep
-cmd_compile.c = $(CC) -c $< -o $@ $(CFLAGS) \
+cmd_compile.c = $(CC) -c $< -o $@ \
+ $(filter-out $(CFLAGS-OMIT-$(notdir $<)), \
+ $(CFLAGS) \
+ $(CFLAGS-for-library-members) \
$(CFLAGS-$(suffix $@)) \
- $(filter-out $(CFLAGS-OMIT-$(notdir $<)),$(CFLAGS-$(notdir $(<D)))) \
- $(CFLAGS-$(subst $(top_srcdir),,$(dir $<))) \
+ $(CFLAGS-y-$(subst $(top_srcdir),,$(<D))) \
$(CFLAGS-$(notdir $<)) \
$(CFLAGS-$(notdir $@)) \
+ ) \
$(CFLAGS_gen.dep)
cmd_compile.i = $(cmd_compile.c:-c=-E -dD) $(UCLIBC_EXTRA_CPPFLAGS)
cmd_compile.s = $(cmd_compile.c:-c=-S)
diff --git a/Rules.mak b/Rules.mak
index 20da428a3..2121adaf6 100644
--- a/Rules.mak
+++ b/Rules.mak
@@ -633,7 +633,7 @@ WARNING_FLAGS += \
-Wshadow \
-Wundef
# Works only w/ gcc-3.4 and up, can't be checked for gcc-3.x w/ check_gcc()
-WARNING_FLAGS-gcc-4 += -Wdeclaration-after-statement
+#WARNING_FLAGS-gcc-4 += -Wdeclaration-after-statement
endif
WARNING_FLAGS += $(WARNING_FLAGS-gcc-$(GCC_MAJOR_VER))
$(foreach w,$(WARNING_FLAGS),$(eval $(call check-gcc-var,$(w))))
@@ -737,10 +737,14 @@ ifneq ($(strip $(UCLIBC_EXTRA_LDFLAGS)),"")
LDFLAGS += $(call qstrip,$(UCLIBC_EXTRA_LDFLAGS))
endif
+ifeq ($(UCLIBC_HAS_STDIO_FUTEXES),y)
+CFLAGS += -D__USE_STDIO_FUTEXES__
+endif
+
ifeq ($(UCLIBC_HAS_THREADS),y)
ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y)
PTNAME := nptl
- CFLAGS += -DHAVE_FORCED_UNWIND
+ CFLAGS += -DHAVE_FORCED_UNWIND -D_LIBC_REENTRANT
else
ifeq ($(LINUXTHREADS_OLD),y)
PTNAME := linuxthreads.old
@@ -814,7 +818,7 @@ endif
ifeq ($(UCLIBC_BUILD_NOEXECSTACK),y)
$(eval $(call check-as-var,--noexecstack))
endif
-ASFLAGS = $(ASFLAG_--noexecstack)
+ASFLAGS += $(ASFLAG_--noexecstack)
LIBGCC_CFLAGS ?= $(CFLAGS) $(CPU_CFLAGS-y)
$(eval $(call cache-output-var,LIBGCC,$(CC) $(LIBGCC_CFLAGS) -print-libgcc-file-name))
diff --git a/ldso/ldso/Makefile.in b/ldso/ldso/Makefile.in
index d4866c9f8..e0d0a097d 100644
--- a/ldso/ldso/Makefile.in
+++ b/ldso/ldso/Makefile.in
@@ -7,30 +7,25 @@
subdirs += ldso/ldso/$(TARGET_ARCH)
-CFLAGS-ldso := -DNOT_IN_libc -DIS_IN_rtld $(SSP_DISABLE_FLAGS)
+CFLAGS-rtld := -DNOT_IN_libc -DIS_IN_rtld $(SSP_DISABLE_FLAGS)
ifneq ($(TARGET_ARCH),arc)
# This stuff will not work with -fomit-frame-pointer
-CFLAGS-ldso += -fno-omit-frame-pointer
+CFLAGS-rtld += -fno-omit-frame-pointer
endif
-CFLAGS-ldso += -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) -I$(top_srcdir)ldso/include -I$(top_srcdir)ldso/ldso
-CFLAGS-ldso += -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" -DUCLIBC_LDSO=\"$(UCLIBC_LDSO)\"
+CFLAGS-rtld += -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) -I$(top_srcdir)ldso/include -I$(top_srcdir)ldso/ldso
+CFLAGS-rtld += -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\" -DUCLIBC_LDSO=\"$(UCLIBC_LDSO)\"
-ifeq ($(DODEBUG),y)
# Not really much point in including debugging info, since gdb
# can't really debug ldso, since gdb requires help from ldso to
# debug things....
# On arm, gcc-4.3.x onwards -Os emits calls to libgcc, which calls _div0,
# which tries to call raise(). And raise comes from libc so a catch 22.
# Using -O2 instead. We could have use -fno-early-inlining with -Os too.
+CFLAGS-$(DODEBUG)-ldso/ldso := -O2 -g
-CFLAGS-ldso += -O2 -g
-endif
-
-CFLAGS-ldso/ldso/$(TARGET_ARCH)/ := $(CFLAGS-ldso)
-
-CFLAGS-ldso.c := -DLDSO_ELFINTERP=\"$(TARGET_ARCH)/elfinterp.c\" $(CFLAGS-ldso)
+CFLAGS-ldso.c := -DLDSO_ELFINTERP=\"$(TARGET_ARCH)/elfinterp.c\"
LDFLAGS-$(UCLIBC_FORMAT_DSBT_ELF)-$(UCLIBC_LDSO_NAME).so := -Wl,--dsbt-index=1
ifneq ($(SUPPORT_LD_DEBUG),y)
diff --git a/ldso/libdl/Makefile.in b/ldso/libdl/Makefile.in
index edf95a60a..fe1eb9dab 100644
--- a/ldso/libdl/Makefile.in
+++ b/ldso/libdl/Makefile.in
@@ -13,9 +13,7 @@ CFLAGS-libdl += -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) -I$(top_srcdir)ldso/incl
CFLAGS-libdl += -DUCLIBC_RUNTIME_PREFIX=\"$(RUNTIME_PREFIX)\"
-ifeq ($(SUPPORT_LD_DEBUG),y)
-CFLAGS-libdl += -D__SUPPORT_LD_DEBUG__
-endif
+CFLAGS-$(SUPPORT_LD_DEBUG)-ldso/libdl := -D__SUPPORT_LD_DEBUG__
CFLAGS-libdl.c := -DLDSO_ELFINTERP=\"$(TARGET_ARCH)/elfinterp.c\"
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 <features.h>
.text
diff --git a/libm/Makefile.in b/libm/Makefile.in
index 23a55b369..751170678 100644
--- a/libm/Makefile.in
+++ b/libm/Makefile.in
@@ -220,8 +220,6 @@ endif
ifeq ($(UCLIBC_HAS_FPU),y)
ifeq ($(DO_C99_MATH),y)
ifneq ($(strip $(libm_ARCH_OBJS)),)
-CFLAGS-libm/$(TARGET_ARCH)/ := $(CFLAGS-libm)
-CFLAGS-libm/$(TARGET_ARCH)/$(TARGET_SUBARCH)/ := $(CFLAGS-libm)
# remove generic sources, if arch specific version is present
ifneq ($(strip $(libm_ARCH_SRC)),)
diff --git a/libm/metag/Makefile.arch b/libm/metag/Makefile.arch
index 4cc5a6b46..bcae0e27a 100644
--- a/libm/metag/Makefile.arch
+++ b/libm/metag/Makefile.arch
@@ -9,7 +9,7 @@ ifeq ($(UCLIBC_HAS_FENV),y)
ifeq ($(CONFIG_META_2_1),y)
libm_ARCH_SRC:=$(wildcard $(libm_ARCH_DIR)/*.c)
libm_ARCH_OBJ:=$(patsubst $(libm_ARCH_DIR)/%.c,$(libm_ARCH_OUT)/%.o,$(libm_ARCH_SRC))
-CFLAGS-libm += -Wa,-mfpu=metac21
+CFLAGS-y-libm/metag := -Wa,-mfpu=metac21
endif
endif
diff --git a/libm/powerpc/e500/fpu/Makefile.arch b/libm/powerpc/e500/fpu/Makefile.arch
index 1bb4f3a0f..904561e91 100644
--- a/libm/powerpc/e500/fpu/Makefile.arch
+++ b/libm/powerpc/e500/fpu/Makefile.arch
@@ -11,8 +11,6 @@ libm_ARCH_SRC:=$(wildcard $(libm_ARCH_fpu_DIR)/*.c)
libm_ARCH_OBJ:=$(patsubst $(libm_ARCH_fpu_DIR)/%.c,$(libm_ARCH_fpu_OUT)/%.o,$(libm_ARCH_SRC))
endif
-CFLAGS-libm/$(TARGET_ARCH)/$(TARGET_SUBARCH)/fpu/ := $(CFLAGS-libm)
-
libm_ARCH_OBJS:=$(libm_ARCH_OBJ)
ifeq ($(DOPIC),y)
diff --git a/libpthread/linuxthreads.old/Makefile.in b/libpthread/linuxthreads.old/Makefile.in
index 48b273e7a..6be2099d2 100644
--- a/libpthread/linuxthreads.old/Makefile.in
+++ b/libpthread/linuxthreads.old/Makefile.in
@@ -9,9 +9,7 @@
subdirs += libpthread/linuxthreads.old
CFLAGS-dir_linuxthreads.old := -DNOT_IN_libc -DIS_IN_libpthread
-CFLAGS-linuxthreads.old := $(CFLAGS-dir_linuxthreads.old) $(SSP_ALL_CFLAGS)
-
-CFLAGS-libpthread/linuxthreads.old/sysdeps/$(TARGET_ARCH)/ := $(CFLAGS-linuxthreads.old)
+CFLAGS-libpthread/linuxthreads.old := $(CFLAGS-dir_linuxthreads.old) $(SSP_ALL_CFLAGS)
ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
LDFLAGS-libpthread.so := $(LDFLAGS_NOSTRIP) -Wl,-z,defs
diff --git a/libpthread/linuxthreads.old_db/Makefile.in b/libpthread/linuxthreads.old_db/Makefile.in
index 8741eab7c..cf0ceb394 100644
--- a/libpthread/linuxthreads.old_db/Makefile.in
+++ b/libpthread/linuxthreads.old_db/Makefile.in
@@ -8,7 +8,7 @@
subdirs += libpthread/linuxthreads.old_db
# Get the thread include dependencies and shared object name
-CFLAGS-linuxthreads.old_db := -DNOT_IN_libc -DLIBPTHREAD_SO="\"libpthread.so.$(ABI_VERSION)\""
+CFLAGS-libpthread/linuxthreads.old_db := -DNOT_IN_libc -DLIBPTHREAD_SO="\"libpthread.so.$(ABI_VERSION)\""
LDFLAGS-libthread_db.so := $(LDFLAGS_NOSTRIP) $(if $(call check_ld,--warn-unresolved-symbols),-Wl$(comma)--warn-unresolved-symbols)
ifeq ($(DOSTRIP),y)
diff --git a/libpthread/linuxthreads/Makefile.in b/libpthread/linuxthreads/Makefile.in
index 697371b08..4a499f78e 100644
--- a/libpthread/linuxthreads/Makefile.in
+++ b/libpthread/linuxthreads/Makefile.in
@@ -11,11 +11,7 @@ subdirs += libpthread/linuxthreads/sysdeps/unix/sysv/linux
subdirs += libpthread/linuxthreads/sysdeps/pthread
CFLAGS-dir_linuxthreads := -DNOT_IN_libc -DIS_IN_libpthread
-CFLAGS-linuxthreads := $(CFLAGS-dir_linuxthreads) $(SSP_ALL_CFLAGS)
-
-CFLAGS-libpthread/linuxthreads/sysdeps/$(TARGET_ARCH)/ := $(CFLAGS-linuxthreads)
-CFLAGS-libpthread/linuxthreads/sysdeps/unix/sysv/linux/ := $(CFLAGS-linuxthreads)
-CFLAGS-libpthread/linuxthreads/sysdeps/pthread/ := $(CFLAGS-linuxthreads)
+CFLAGS-libpthread/linuxthreads := $(CFLAGS-dir_linuxthreads) $(SSP_ALL_CFLAGS)
# This stuff will not compile without at least -O1
# psm: can't handle this here, could maybe search for -O0 in CFLAGS
diff --git a/libpthread/linuxthreads_db/Makefile.in b/libpthread/linuxthreads_db/Makefile.in
index 060bea3a3..52cc7c838 100644
--- a/libpthread/linuxthreads_db/Makefile.in
+++ b/libpthread/linuxthreads_db/Makefile.in
@@ -8,7 +8,7 @@
subdirs += libpthread/linuxthreads_db
# Get the thread include dependencies and shared object name
-CFLAGS-linuxthreads_db := -DNOT_IN_libc -DLIBPTHREAD_SO="\"libpthread.so.$(ABI_VERSION)\""
+CFLAGS-libpthread/linuxthreads_db := -DNOT_IN_libc -DLIBPTHREAD_SO="\"libpthread.so.$(ABI_VERSION)\""
LDFLAGS-libthread_db.so := $(LDFLAGS_NOSTRIP) $(if $(call check_ld,--warn-unresolved-symbols),-Wl$(comma)--warn-unresolved-symbols)
ifeq ($(DOSTRIP),y)
diff --git a/libpthread/nptl/Makefile.in b/libpthread/nptl/Makefile.in
index c619f982c..cdf07cf45 100644
--- a/libpthread/nptl/Makefile.in
+++ b/libpthread/nptl/Makefile.in
@@ -141,7 +141,8 @@ LDFLAGS-libpthread.so += $(top_builddir)lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so $(
LIBS-libpthread.so := $(LIBS)
-CFLAGS-nptl = -DNOT_IN_libc -DIS_IN_libpthread $(SSP_ALL_CFLAGS)
+CFLAGS-dir_nptl := -DNOT_IN_libc -DIS_IN_libpthread
+CFLAGS-libpthread/nptl := $(CFLAGS-dir_nptl) $(SSP_ALL_CFLAGS)
# Since cancellation handling is in large parts handled using exceptions
# we have to compile some files with exception handling enabled, some
@@ -212,7 +213,7 @@ CFLAGS-pthread_barrierattr_getpshared.c = -D_GNU_SOURCE
CFLAGS-pthread_barrierattr_setpshared.c = -D_GNU_SOURCE
CFLAGS-sem_open.c = -D_GNU_SOURCE
-CFLAGS-OMIT-alloca_cutoff.c = $(CFLAGS-nptl)
-CFLAGS-OMIT-forward.c = $(CFLAGS-nptl)
-CFLAGS-OMIT-libc-lowlevelock.c = $(CFLAGS-nptl)
-CFLAGS-OMIT-libc-cancellation.c = $(CFLAGS-nptl)
+CFLAGS-OMIT-alloca_cutoff.c = $(CFLAGS-dir_nptl)
+CFLAGS-OMIT-forward.c = $(CFLAGS-dir_nptl)
+CFLAGS-OMIT-libc-lowlevelock.c = $(CFLAGS-dir_nptl)
+CFLAGS-OMIT-libc-cancellation.c = $(CFLAGS-dir_nptl)
diff --git a/libpthread/nptl/sysdeps/metag/Makefile.arch b/libpthread/nptl/sysdeps/metag/Makefile.arch
index 0a42e686a..bc19f6b22 100644
--- a/libpthread/nptl/sysdeps/metag/Makefile.arch
+++ b/libpthread/nptl/sysdeps/metag/Makefile.arch
@@ -12,6 +12,4 @@ ASFLAGS-pthread_spin_trylock.S = -DNOT_IN_libc -DIS_IN_libpthread
ASFLAGS-pthread_spin_lock.c += -D_GNU_SOURCE
-CFLAGS-metag = $(SSP_ALL_CFLAGS)
-
libc_arch_a_CSRC := libc-tls.c
diff --git a/libpthread/nptl/sysdeps/pthread/Makefile.in b/libpthread/nptl/sysdeps/pthread/Makefile.in
index add3a8e5f..84adfe0c6 100644
--- a/libpthread/nptl/sysdeps/pthread/Makefile.in
+++ b/libpthread/nptl/sysdeps/pthread/Makefile.in
@@ -34,7 +34,7 @@ libpthread_pthread_CSRC = \
pthread_spin_unlock.c \
pt-longjmp.c \
tpp.c
-CFLAGS-pthread = $(SSP_ALL_CFLAGS) -DNOT_IN_libc -DIS_IN_libpthread
+
CFLAGS-pthread_barrier_wait.c = -D_GNU_SOURCE
CFLAGS-pthread_spin_destroy.c = -D_GNU_SOURCE
CFLAGS-pthread_spin_init.c = -D_GNU_SOURCE
@@ -54,7 +54,7 @@ librt-pt-routines-y = librt-cancellation.c
librt-pt-shared-only-routines-y = rt-unwind-resume.c
ifeq ($(UCLIBC_CTOR_DTOR),y)
-CFLAGS-OMIT-pt-initfini.c = $(CFLAGS-pthread)
+CFLAGS-OMIT-pt-initfini.c = $(CFLAGS-y-libpthread/nptl/sysdeps/pthread)
CFLAGS-pt-initfini.c = -S -g0 $(PICFLAG) -fno-inline-functions \
$(call check_gcc,-fno-unit-at-a-time,) \
$(SSP_DISABLE_FLAGS) \
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch
index a63e3fd66..1fa3045c7 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/Makefile.commonarch
@@ -134,8 +134,6 @@ ifneq ($(UCLIBC_HAS_BACKTRACE),)
CFLAGS-raise.c = -fasynchronous-unwind-tables
endif
-CFLAGS-linux = -DNOT_IN_libc -DIS_IN_libpthread $(SSP_ALL_CFLAGS)
-
CFLAGS-OMIT-libc_pthread_init.c = -DNOT_IN_libc -DIS_IN_libpthread
CFLAGS-OMIT-libc_multiple_threads.c = -DNOT_IN_libc -DIS_IN_libpthread
CFLAGS-OMIT-register-atfork.c = -DNOT_IN_libc -DIS_IN_libpthread
@@ -160,12 +158,6 @@ CFLAGS-OMIT-timer_gettime.c = -DIS_IN_libpthread
CFLAGS-OMIT-timer_routines.c = -DIS_IN_libpthread
CFLAGS-OMIT-timer_settime.c = -DIS_IN_libpthread
-#ASFLAGS-open.S = -D_LIBC_REENTRANT
-#ASFLAGS-close.S = -D_LIBC_REENTRANT
-#ASFLAGS-read.S = -D_LIBC_REENTRANT
-#ASFLAGS-write.S = -D_LIBC_REENTRANT
-#ASFLAGS-waitpid.S = -D_LIBC_REENTRANT
-
PTHREAD_LINUX_SYM := $(notdir $(wildcard $(libpthread_linux_DIR)/*.sym))
PTHREAD_LINUX_SYM_H := $(addprefix $(libpthread_linux_OUT)/,$(PTHREAD_LINUX_SYM:.sym=.h))
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/Makefile.arch
index 9a34595f1..3f5c33d0a 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/i386/Makefile.arch
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/i386/Makefile.arch
@@ -14,15 +14,12 @@ libc_linux_arch_SSRC = clone.S vfork.S
ASFLAGS += -DUSE___THREAD
CFLAGS-pt-__syscall_error.c = -DNOT_IN_libc -DIS_IN_libpthread
-ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT
-ASFLAGS-lowlevellock.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT
-ASFLAGS-lowlevelrobustlock.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT
-ASFLAGS-pthread_once.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT
-ASFLAGS-pthread_spin_unlock.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT
+ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread
+ASFLAGS-lowlevellock.S = -DNOT_IN_libc -DIS_IN_libpthread
+ASFLAGS-lowlevelrobustlock.S = -DNOT_IN_libc -DIS_IN_libpthread
+ASFLAGS-pthread_once.S = -DNOT_IN_libc -DIS_IN_libpthread
+ASFLAGS-pthread_spin_unlock.S = -DNOT_IN_libc -DIS_IN_libpthread
-ASFLAGS-clone.S = -D_LIBC_REENTRANT
-ASFLAGS-vfork.S = -D_LIBC_REENTRANT
-ASFLAGS-libc-lowlevellock.S = -D_LIBC_REENTRANT
ifeq ($(UCLIBC_HAS_STDIO_FUTEXES),y)
CFLAGS-fork.c = -D__USE_STDIO_FUTEXES__
endif
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.arch
index fc26a8e13..afae6cd56 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.arch
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/mips/Makefile.arch
@@ -23,5 +23,3 @@ CFLAGS-pthread_once.c = -DNOT_IN_libc -DIS_IN_libpthread
CFLAGS-pt-__syscall_rt_sigaction.c = -DNOT_IN_libc -DIS_IN_libpthread
ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread
-ASFLAGS-clone.S = -D_LIBC_REENTRANT
-ASFLAGS-vfork.S = -D_LIBC_REENTRANT
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/Makefile.arch
index 8581aea6f..23c0210d5 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/Makefile.arch
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/powerpc/Makefile.arch
@@ -19,12 +19,9 @@ ASFLAGS += -DUSE___THREAD
CFLAGS-pthread_once.c = -DNOT_IN_libc -DIS_IN_libpthread
CFLAGS-lowlevellock.c = -DNOT_IN_libc -DIS_IN_libpthread
CFLAGS-pt-__syscall_error.c = -DNOT_IN_libc -DIS_IN_libpthread
-ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT
-#ASFLAGS-lowlevellock.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT
+ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread
+#ASFLAGS-lowlevellock.S = -DNOT_IN_libc -DIS_IN_libpthread
-#ASFLAGS-libc-lowlevellock.S = -D_LIBC_REENTRANT
-ASFLAGS-clone.S = -D_LIBC_REENTRANT
-ASFLAGS-vfork.S = -D_LIBC_REENTRANT
ifeq ($(UCLIBC_HAS_STDIO_FUTEXES),y)
CFLAGS-fork.c = -D__USE_STDIO_FUTEXES__
endif
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/Makefile.arch
index a8249e0f4..fa1a365ea 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/Makefile.arch
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/Makefile.arch
@@ -17,30 +17,12 @@ libc_linux_arch_SSRC = libc-lowlevellock.S clone.S vfork.S
ASFLAGS += -DUSE___THREAD
-ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT
-ASFLAGS-pthread_once.S = -D_LIBC_REENTRANT
-ASFLAGS-pthread_rwlock_wrlock.S = -D_LIBC_REENTRANT
-ASFLAGS-pthread_rwlock_rdlock.S = -D_LIBC_REENTRANT
-ASFLAGS-pthread_rwlock_unlock.S = -D_LIBC_REENTRANT
-ASFLAGS-pthread_barrier_wait.S = -D_LIBC_REENTRANT
-ASFLAGS-pthread_cond_broadcast.S = -D_LIBC_REENTRANT
-ASFLAGS-pthread_cond_signal.S = -D_LIBC_REENTRANT
-ASFLAGS-pthread_cond_wait.S = -D_LIBC_REENTRANT
-ASFLAGS-pthread_cond_timedwait.S = -D_LIBC_REENTRANT
-ASFLAGS-pthread_rwlock_timedwrlock.S = -D_LIBC_REENTRANT
-ASFLAGS-pthread_rwlock_timedrdlock.S = -D_LIBC_REENTRANT
-ASFLAGS-sem_post.S = -D_LIBC_REENTRANT
-ASFLAGS-sem_timedwait.S = -D_LIBC_REENTRANT
-ASFLAGS-sem_trywait.S = -D_LIBC_REENTRANT
-ASFLAGS-sem_wait.S = -D_LIBC_REENTRANT
+ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread
-ASFLAGS-libc-lowlevellock.S = -D_LIBC_REENTRANT
-ASFLAGS-lowlevellock.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT
-ASFLAGS-lowlevelrobustlock.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT
+ASFLAGS-lowlevellock.S = -DNOT_IN_libc -DIS_IN_libpthread
+ASFLAGS-lowlevelrobustlock.S = -DNOT_IN_libc -DIS_IN_libpthread
-ASFLAGS-clone.S = -D_LIBC_REENTRANT
-ASFLAGS-vfork.S = -D_LIBC_REENTRANT
ifeq ($(UCLIBC_HAS_STDIO_FUTEXES),y)
CFLAGS-fork.c = -D__USE_STDIO_FUTEXES__
endif
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.arch
index 102c0dad1..978f3c748 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.arch
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/sparc/Makefile.arch
@@ -17,13 +17,11 @@ librt_linux_arch_CSRC = pt-__syscall_error.c
ASFLAGS += -DUSE___THREAD
-ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT
+ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread
CFLAGS-pthread_once.c = -DNOT_IN_libc -DIS_IN_libpthread
CFLAGS-lowlevellock.c = -DNOT_IN_libc -DIS_IN_libpthread
CFLAGS-pt-__syscall_error.c = -DNOT_IN_libc -DIS_IN_libpthread
-ASFLAGS-clone.S = -D_LIBC_REENTRANT
-ASFLAGS-vfork.S = -D_LIBC_REENTRANT
ifeq ($(UCLIBC_HAS_STDIO_FUTEXES),y)
CFLAGS-fork.c = -D__USE_STDIO_FUTEXES__
endif
diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/Makefile.arch b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/Makefile.arch
index 71df9861d..abc48e9e9 100644
--- a/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/Makefile.arch
+++ b/libpthread/nptl/sysdeps/unix/sysv/linux/x86_64/Makefile.arch
@@ -21,17 +21,11 @@ librt_linux_arch_SSRC = librt-cancellation.S
ASFLAGS += -DUSE___THREAD
CFLAGS-pt-__syscall_error.c = -DNOT_IN_libc -DIS_IN_libpthread
-ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT
-ASFLAGS-lowlevellock.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT
-ASFLAGS-pthread_once.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT
-ASFLAGS-cancellation.S = -DNOT_IN_libc -DIS_IN_libpthread -D_LIBC_REENTRANT
-ASFLAGS-pthread_cond_timedwait.S = -D_LIBC_REENTRANT
-ASFLAGS-pthread_cond_wait.S = -D_LIBC_REENTRANT
+ASFLAGS-pt-vfork.S = -DNOT_IN_libc -DIS_IN_libpthread
+ASFLAGS-lowlevellock.S = -DNOT_IN_libc -DIS_IN_libpthread
+ASFLAGS-pthread_once.S = -DNOT_IN_libc -DIS_IN_libpthread
+ASFLAGS-cancellation.S = -DNOT_IN_libc -DIS_IN_libpthread
-ASFLAGS-clone.S = -D_LIBC_REENTRANT
-ASFLAGS-vfork.S = -D_LIBC_REENTRANT
-ASFLAGS-libc-lowlevellock.S = -D_LIBC_REENTRANT
-ASFLAGS-libc-cancellation.S = -D_LIBC_REENTRANT
ifeq ($(UCLIBC_HAS_STDIO_FUTEXES),y)
CFLAGS-fork.c = -D__USE_STDIO_FUTEXES__
endif
diff --git a/libpthread/nptl_db/Makefile.in b/libpthread/nptl_db/Makefile.in
index b1585299a..76102e65f 100644
--- a/libpthread/nptl_db/Makefile.in
+++ b/libpthread/nptl_db/Makefile.in
@@ -8,9 +8,11 @@
subdirs += libpthread/nptl_db
# Get the thread include dependencies and shared object name
-CFLAGS-nptl_db := -DLIBPTHREAD_SO="\"libpthread.so.$(ABI_VERSION)\""
-CFLAGS-nptl_db += -I$(top_srcdir)libpthread/nptl -D_GNU_SOURCE
-CFLAGS-nptl_db += -DIS_IN_libthread_db=1 -DNOT_IN_libc -std=gnu99 -I$(top_srcdir)ldso/include
+CFLAGS-libpthread/nptl_db := -DNOT_IN_libc \
+ -DLIBPTHREAD_SO="\"libpthread.so.$(ABI_VERSION)\"" \
+ -std=gnu99 -D_GNU_SOURCE \
+ -I$(top_srcdir)libpthread/nptl \
+ -I$(top_srcdir)ldso/include
LDFLAGS-libthread_db.so := $(LDFLAGS_NOSTRIP) $(if $(call check_ld,--warn-unresolved-symbols),-Wl$(comma)--warn-unresolved-symbols)
LIBS-libthread_db.so := $(LIBS)
diff --git a/libubacktrace/Makefile.in b/libubacktrace/Makefile.in
index 1cd5f8385..311f1e31c 100644
--- a/libubacktrace/Makefile.in
+++ b/libubacktrace/Makefile.in
@@ -37,11 +37,6 @@ endif
# -fasynchronous-unwind-tables is required for backtrace to work using dwarf2
CFLAGS-backtrace.c := -fasynchronous-unwind-tables
-# pass common flags to arch dirs
-ifneq ($(strip $(libubacktrace_ARCH_OBJS)),)
-CFLAGS-libubacktrace/$(TARGET_ARCH)/ := $(CFLAGS-libubacktrace)
-endif
-
libubacktrace_SRCS := $(patsubst %.c,$(libubacktrace_DIR)/%.c,$(libubacktrace_SRC-y))
libubacktrace_OBJS := $(patsubst $(libubacktrace_DIR)/%.c,$(libubacktrace_OUT)/%.o,$(libubacktrace_SRCS))