Browse Source

Merge commit 'origin/master' into nptl

Conflicts:
	Makefile.in
	extra/Configs/Config.in
	libc/sysdeps/linux/common/bits/kernel-features.h
	libc/sysdeps/linux/common/poll.c
	libc/sysdeps/linux/common/sysdep.h
	libc/sysdeps/linux/sh/sysdep.h

Signed-off-by: Austin Foxley <austinf@cetoncorp.com>
Austin Foxley 15 years ago
parent
commit
aae3eb9256
73 changed files with 422 additions and 524 deletions
  1. 2 1
      Changelog
  2. 1 2
      Makefile.help
  3. 51 47
      Makefile.in
  4. 6 3
      Makerules
  5. 3 2
      Rules.mak
  6. 16 59
      extra/Configs/Config.in
  7. 2 0
      extra/config/confdata.c
  8. 2 2
      extra/locale/Makefile.in
  9. 2 2
      ldso/ldso/Makefile.in
  10. 2 2
      ldso/libdl/Makefile.in
  11. 2 2
      libc/Makefile.in
  12. 2 2
      libc/inet/Makefile.in
  13. 18 2
      libc/inet/resolv.c
  14. 2 2
      libc/inet/rpc/Makefile.in
  15. 2 2
      libc/misc/assert/Makefile.in
  16. 2 2
      libc/misc/ctype/Makefile.in
  17. 2 2
      libc/misc/dirent/Makefile.in
  18. 2 2
      libc/misc/elf/Makefile.in
  19. 2 2
      libc/misc/error/Makefile.in
  20. 2 2
      libc/misc/file/Makefile.in
  21. 2 2
      libc/misc/fnmatch/Makefile.in
  22. 2 2
      libc/misc/ftw/Makefile.in
  23. 2 2
      libc/misc/glob/Makefile.in
  24. 2 2
      libc/misc/gnu/Makefile.in
  25. 2 2
      libc/misc/internals/Makefile.in
  26. 2 2
      libc/misc/locale/Makefile.in
  27. 2 2
      libc/misc/mntent/Makefile.in
  28. 2 2
      libc/misc/pthread/Makefile.in
  29. 2 2
      libc/misc/regex/Makefile.in
  30. 2 2
      libc/misc/search/Makefile.in
  31. 2 2
      libc/misc/statfs/Makefile.in
  32. 2 2
      libc/misc/syslog/Makefile.in
  33. 2 2
      libc/misc/sysvipc/Makefile.in
  34. 2 2
      libc/misc/time/Makefile.in
  35. 2 2
      libc/misc/ttyent/Makefile.in
  36. 2 2
      libc/misc/utmp/Makefile.in
  37. 2 2
      libc/misc/wchar/Makefile.in
  38. 2 2
      libc/misc/wctype/Makefile.in
  39. 2 2
      libc/misc/wordexp/Makefile.in
  40. 2 2
      libc/pwd_grp/Makefile.in
  41. 2 2
      libc/signal/Makefile.in
  42. 2 2
      libc/stdio/Makefile.in
  43. 4 4
      libc/stdio/_vfprintf.c
  44. 2 2
      libc/stdlib/Makefile.in
  45. 2 2
      libc/stdlib/malloc-simple/Makefile.in
  46. 2 2
      libc/stdlib/malloc-standard/Makefile.in
  47. 2 2
      libc/stdlib/malloc/Makefile.in
  48. 2 2
      libc/string/Makefile.in
  49. 4 4
      libc/sysdeps/linux/Makefile.commonarch
  50. 2 2
      libc/sysdeps/linux/common/Makefile.in
  51. 5 0
      libc/sysdeps/linux/common/bits/kernel-features.h
  52. 4 4
      libc/sysdeps/linux/common/getdents.c
  53. 3 0
      libc/sysdeps/linux/common/poll.c
  54. 1 0
      libc/sysdeps/linux/common/sysdep.h
  55. 4 2
      libc/sysdeps/linux/nios2/bits/fcntl.h
  56. 85 274
      libc/sysdeps/linux/nios2/bits/syscalls.h
  57. 93 0
      libc/sysdeps/linux/nios2/sys/user.h
  58. 2 2
      libc/termios/Makefile.in
  59. 2 2
      libc/unistd/Makefile.in
  60. 2 2
      libcrypt/Makefile.in
  61. 2 2
      libintl/Makefile.in
  62. 2 2
      libm/Makefile.in
  63. 2 2
      libnsl/Makefile.in
  64. 4 4
      libpthread/linuxthreads.old/Makefile.in
  65. 2 2
      libpthread/linuxthreads.old/sysdeps/sh64/Makefile.arch
  66. 4 4
      libpthread/linuxthreads.old_db/Makefile.in
  67. 4 4
      libpthread/linuxthreads/Makefile.in
  68. 4 4
      libpthread/linuxthreads_db/Makefile.in
  69. 2 2
      libresolv/Makefile.in
  70. 2 2
      librt/Makefile.in
  71. 2 2
      libutil/Makefile.in
  72. 1 1
      test/Rules.mak
  73. 3 3
      utils/Makefile.in

+ 2 - 1
Changelog

@@ -8,7 +8,8 @@
       remove this definition from wordsize.h.
       remove this definition from wordsize.h.
       Otherwise you have to delete /var/run/utmp on x86_64 hosts when
       Otherwise you have to delete /var/run/utmp on x86_64 hosts when
       upgrading to 0.9.31
       upgrading to 0.9.31
-
+    o The SHARED_LIB_LOADER_PREFIX was renamed to a single path
+      component called MULTILIB_DIR and defaults to 'lib'.
 
 
 0.9.27	12 January 2005
 0.9.27	12 January 2005
 
 

+ 1 - 2
Makefile.help

@@ -56,7 +56,6 @@ help:
 	@echo '			  (usually "/")'
 	@echo '			  (usually "/")'
 	@echo '  DEVEL_PREFIX=		- Prefix for the libdir containing static objects'
 	@echo '  DEVEL_PREFIX=		- Prefix for the libdir containing static objects'
 	@echo '			  and the include dir (usually "/usr")'
 	@echo '			  and the include dir (usually "/usr")'
-	@echo '  SHARED_LIB_LOADER_PREFIX=	- Directory where the shared loader resides.'
+	@echo '  MULTILIB_DIR=		- Directory component for libraries (default "lib").'
-	@echo '			  (usually "/lib")'
 	@echo '  UCLIBC_EXTRA_CFLAGS	- extra CFLAGS for compiling uClibc'
 	@echo '  UCLIBC_EXTRA_CFLAGS	- extra CFLAGS for compiling uClibc'
 
 

+ 51 - 47
Makefile.in

@@ -9,7 +9,7 @@
 # You shouldn't need to mess with anything beyond this point...
 # You shouldn't need to mess with anything beyond this point...
 #--------------------------------------------------------------
 #--------------------------------------------------------------
 clean_targets := clean realclean distclean \
 clean_targets := clean realclean distclean \
-	objclean-y headers_clean-y utils_clean
+	objclean-y headers_clean-y CLEAN_utils
 noconfig_targets := menuconfig config oldconfig silentoldconfig randconfig \
 noconfig_targets := menuconfig config oldconfig silentoldconfig randconfig \
 	defconfig allyesconfig allnoconfig \
 	defconfig allyesconfig allnoconfig \
 	release dist tags help
 	release dist tags help
@@ -148,9 +148,9 @@ endif
 
 
 $(target-headers-sysdep): | $(top_builddir)include/bits $(top_builddir)include/sys
 $(target-headers-sysdep): | $(top_builddir)include/bits $(top_builddir)include/sys
 
 
-sysdep_common_headers-clean:
+HEADERCLEAN_common:
-	$(RM) $(ALL_HEADERS_COMMON)
+	$(do_rm) $(ALL_HEADERS_COMMON)
-headers_clean-y += sysdep_common_headers-clean
+headers_clean-y += HEADERCLEAN_common
 
 
 # The headers. Arch specific headers are specified via ARCH_HEADERS in
 # The headers. Arch specific headers are specified via ARCH_HEADERS in
 # libc/sysdeps/linux/$(TARGET_ARCH)/Makefile.arch which appends those via
 # libc/sysdeps/linux/$(TARGET_ARCH)/Makefile.arch which appends those via
@@ -194,9 +194,10 @@ $(LOCAL_INSTALL_PATH):
 install: install_runtime install_dev
 install: install_runtime install_dev
 
 
 
 
-RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB=$(shell $(top_srcdir)extra/scripts/relative_path.sh $(DEVEL_PREFIX)lib $(RUNTIME_PREFIX)lib)
+RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB=$(shell $(top_srcdir)extra/scripts/relative_path.sh $(DEVEL_PREFIX)$(MULTILIB_DIR) $(RUNTIME_PREFIX)$(MULTILIB_DIR))
 
 
-$(top_builddir)extra/scripts/unifdef: $(top_srcdir)extra/scripts/unifdef.c|$(@D)
+$(top_builddir)extra/scripts/unifdef: |$(top_builddir)extra/scripts
+$(top_builddir)extra/scripts/unifdef: $(top_srcdir)extra/scripts/unifdef.c
 	$(hcompile.u)
 	$(hcompile.u)
 
 
 # Installs header files.
 # Installs header files.
@@ -288,8 +289,12 @@ HEADERS_RM-$(UCLIBC_SUSV4_LEGACY)            += utime.h
 	# BREAKAGE: include/signal.h uses it, this rm broke bbox compile:
 	# BREAKAGE: include/signal.h uses it, this rm broke bbox compile:
 	### ucontext.h
 	### ucontext.h
 
 
-install_headers: headers $(top_builddir)extra/scripts/unifdef
+ifneq ($(findstring install,$(MAKECMDGOALS)),)
-	$(INSTALL) -d $(PREFIX)$(DEVEL_PREFIX)include
+$(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR) $(addprefix $(PREFIX)$(DEVEL_PREFIX),include lib):
+	$(do_mkdir)
+endif
+
+install_headers: headers $(top_builddir)extra/scripts/unifdef | $(PREFIX)$(DEVEL_PREFIX)include
 	top_builddir=$(top_builddir) \
 	top_builddir=$(top_builddir) \
 	$(top_srcdir)extra/scripts/install_headers.sh include $(PREFIX)$(DEVEL_PREFIX)include
 	$(top_srcdir)extra/scripts/install_headers.sh include $(PREFIX)$(DEVEL_PREFIX)include
 	cd $(PREFIX)$(DEVEL_PREFIX)include && $(RM) -r $(HEADERS_RM-)
 	cd $(PREFIX)$(DEVEL_PREFIX)include && $(RM) -r $(HEADERS_RM-)
@@ -300,77 +305,75 @@ else
 endif
 endif
 
 
 # Installs development library links.
 # Installs development library links.
-install_dev: install_headers install_runtime
+install_dev: install_headers install_runtime | $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)
-	$(INSTALL) -d $(PREFIX)$(DEVEL_PREFIX)lib
+	-$(INSTALL) -m 644 $(top_builddir)lib/*.[ao] $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/
-	-$(INSTALL) -m 644 lib/*.[ao] $(PREFIX)$(DEVEL_PREFIX)lib/
 ifeq ($(HAVE_SHARED),y)
 ifeq ($(HAVE_SHARED),y)
-	for i in `find lib/ -type l -name 'lib[a-zA-Z]*.so' | \
+	for i in `cd $(top_builddir) && find lib/ -type l -name 'lib[a-zA-Z]*.so' | \
 	$(SED) -e 's/lib\///'` ; do \
 	$(SED) -e 's/lib\///'` ; do \
 		$(LN) -sf $(RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB)$$i.$(MAJOR_VERSION) \
 		$(LN) -sf $(RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB)$$i.$(MAJOR_VERSION) \
-		$(PREFIX)$(DEVEL_PREFIX)lib/$$i; \
+		$(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/$$i; \
 	done
 	done
 ifeq ($(HARDWIRED_ABSPATH),y)
 ifeq ($(HARDWIRED_ABSPATH),y)
-	if [ -f $(top_builddir)lib/libc.so -a -f $(PREFIX)$(RUNTIME_PREFIX)lib/$(SHARED_MAJORNAME) ] ; then \
+	if [ -f $(top_builddir)lib/libc.so -a -f $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(SHARED_MAJORNAME) ] ; then \
-		$(RM) $(PREFIX)$(DEVEL_PREFIX)lib/libc.so; \
+		$(RM) $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so; \
-		$(SED) -e 's:$(NONSHARED_LIBNAME):$(DEVEL_PREFIX)lib/$(NONSHARED_LIBNAME):' \
+		$(SED) -e 's:$(NONSHARED_LIBNAME):$(DEVEL_PREFIX)$(MULTILIB_DIR)/$(NONSHARED_LIBNAME):' \
-		    -e 's:$(SHARED_MAJORNAME):$(RUNTIME_PREFIX)lib/$(SHARED_MAJORNAME):' \
+		    -e 's:$(SHARED_MAJORNAME):$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(SHARED_MAJORNAME):' \
-		    -e 's:$(UCLIBC_LDSO):$(RUNTIME_PREFIX)lib/$(UCLIBC_LDSO):' \
+		    -e 's:$(UCLIBC_LDSO):$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(UCLIBC_LDSO):' \
-		    $(top_builddir)lib/libc.so > $(PREFIX)$(DEVEL_PREFIX)lib/libc.so; \
+		    $(top_builddir)lib/libc.so > $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so; \
 	fi
 	fi
 else
 else
-	-$(INSTALL) -m 755 lib/libc.so $(PREFIX)$(DEVEL_PREFIX)lib/
+	-$(INSTALL) -m 755 $(top_builddir)lib/libc.so $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/
 endif
 endif
 ifeq ($(UCLIBC_HAS_THREADS),y)
 ifeq ($(UCLIBC_HAS_THREADS),y)
 ifneq ($(LINUXTHREADS_OLD),y)
 ifneq ($(LINUXTHREADS_OLD),y)
 ifeq ($(HARDWIRED_ABSPATH),y)
 ifeq ($(HARDWIRED_ABSPATH),y)
-	if [ -f $(top_builddir)lib/libpthread.so -a -f $(PREFIX)$(RUNTIME_PREFIX)lib/libpthread.so.$(MAJOR_VERSION) ] ; then \
+	if [ -f $(top_builddir)lib/libpthread.so -a -f $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)/libpthread.so.$(MAJOR_VERSION) ] ; then \
-		$(RM) $(PREFIX)$(DEVEL_PREFIX)lib/libpthread.so; \
+		$(RM) $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libpthread.so; \
-		cp $(top_srcdir)extra/scripts/format.lds $(PREFIX)$(DEVEL_PREFIX)lib/libpthread.so; \
+		cp $(top_srcdir)extra/scripts/format.lds $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libpthread.so; \
-		echo "GROUP ( $(RUNTIME_PREFIX)lib/libpthread.so.$(MAJOR_VERSION) $(DEVEL_PREFIX)lib/libpthread_nonshared.a )" \
+		echo "GROUP ( $(RUNTIME_PREFIX)$(MULTILIB_DIR)/libpthread.so.$(MAJOR_VERSION) $(DEVEL_PREFIX)$(MULTILIB_DIR)/libpthread_nonshared.a )" \
-			>> $(PREFIX)$(DEVEL_PREFIX)lib/libpthread.so; \
+			>> $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libpthread.so; \
 	fi
 	fi
 else
 else
-	-$(INSTALL) -m 755 lib/libpthread.so $(PREFIX)$(DEVEL_PREFIX)lib/
+	-$(INSTALL) -m 755 $(top_builddir)lib/libpthread.so $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/
 endif
 endif
 endif
 endif
 endif
 endif
 ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
 ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
 	$(LN) -sf $(RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB)libthread_db.so.1 \
 	$(LN) -sf $(RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB)libthread_db.so.1 \
-		$(PREFIX)$(DEVEL_PREFIX)lib/libthread_db.so
+		$(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libthread_db.so
 endif
 endif
 ifeq ($(DOPIC),y)
 ifeq ($(DOPIC),y)
 #	# If we build shared libraries then the static libs are PIC...
 #	# If we build shared libraries then the static libs are PIC...
 #	# Make _pic.a symlinks to make mklibs.py and similar tools happy.
 #	# Make _pic.a symlinks to make mklibs.py and similar tools happy.
-	if [ -d lib ] ; then \
+	if [ -d $(top_builddir)lib ] ; then \
-		for i in `find lib/ -type f -name 'lib*.a' | $(SED) -e 's/lib\///'` ; do \
+		for i in `cd $(top_builddir) && find lib/ -type f -name 'lib*.a' | $(SED) -e 's/lib\///'` ; do \
-			$(LN) -sf $$i $(PREFIX)$(DEVEL_PREFIX)lib/`echo $$i \
+			$(LN) -sf $$i $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/`echo $$i \
 				| $(SED) -e 's/\.a$$/_pic.a/'`; \
 				| $(SED) -e 's/\.a$$/_pic.a/'`; \
 		done ; \
 		done ; \
 	fi
 	fi
 endif
 endif
 endif
 endif
 ifeq ($(UCLIBC_FORMAT_SHARED_FLAT),y)
 ifeq ($(UCLIBC_FORMAT_SHARED_FLAT),y)
-	for file in lib/lib*.gdb; do \
+	for file in $(top_builddir)lib/lib*.gdb; do \
 		if test -f $$file; then \
 		if test -f $$file; then \
-			$(INSTALL) -m 755 $$file $(PREFIX)$(DEVEL_PREFIX)lib; \
+			$(INSTALL) -m 755 $$file $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR); \
 			$(INSTALL) -m 755 `echo $$file | $(SED) 's/\.gdb$$//'` \
 			$(INSTALL) -m 755 `echo $$file | $(SED) 's/\.gdb$$//'` \
-			  $(PREFIX)$(DEVEL_PREFIX)lib; \
+			  $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR); \
 		fi; \
 		fi; \
 	done
 	done
 endif
 endif
 
 
 # Installs run-time libraries
 # Installs run-time libraries
-install_runtime: all
+install_runtime: all | $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)
 ifeq ($(HAVE_SHARED),y)
 ifeq ($(HAVE_SHARED),y)
-	$(INSTALL) -d $(PREFIX)$(RUNTIME_PREFIX)lib
+	$(INSTALL) -m 755 $(top_builddir)lib/lib*-$(VERSION).so \
-	$(INSTALL) -m 755 lib/lib*-$(VERSION).so \
+		$(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)
-		$(PREFIX)$(RUNTIME_PREFIX)lib
+	(cd $(top_builddir)lib && $(TAR) -cf - *.so.*) | $(TAR) -xf - -C $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)
-	(cd lib && $(TAR) -cf - *.so.*) | $(TAR) -xf - -C $(PREFIX)$(RUNTIME_PREFIX)lib
+	@if [ -x $(top_builddir)lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so ] ; then \
-	@if [ -x lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so ] ; then \
 		set -e; \
 		set -e; \
 		$(SHELL_SET_X); \
 		$(SHELL_SET_X); \
-		$(INSTALL) -m 755 lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so \
+		$(INSTALL) -m 755 $(top_builddir)lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so \
-			$(PREFIX)$(RUNTIME_PREFIX)lib; \
+			$(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR); \
 	fi
 	fi
 endif
 endif
 
 
@@ -446,7 +449,7 @@ include_clean:
 
 
 clean: include_clean
 clean: include_clean
 	$(Q)$(RM) -r $(top_builddir)lib $(top_builddir)include/bits
 	$(Q)$(RM) -r $(top_builddir)lib $(top_builddir)include/bits
-	@$(MAKE) -C utils utils_clean
+	@$(MAKE) -C utils CLEAN_utils
 	+$(MAKE) -s -C test clean
 	+$(MAKE) -s -C test clean
 	@$(RM) $(top_builddir)include/linux $(top_builddir)include/asm*
 	@$(RM) $(top_builddir)include/linux $(top_builddir)include/asm*
 	$(Q)$(RM) $(top_builddir)extra/scripts/unifdef
 	$(Q)$(RM) $(top_builddir)extra/scripts/unifdef
@@ -459,11 +462,12 @@ distclean: clean
 	$(MAKE) -C extra/config distclean
 	$(MAKE) -C extra/config distclean
 
 
 dist release:
 dist release:
-	$(RM) -r ../uClibc-$(VERSION) ../uClibc-$(VERSION).tar.bz2
+	$(RM) ../uClibc-$(VERSION).tar
-	mkdir -p ../uClibc-$(VERSION)
+	git archive HEAD --format=tar --prefix=uClibc-$(VERSION)/ \
-	git archive HEAD |(cd  ../uClibc-$(VERSION) && $(TAR) xf -)
+		> ../uClibc-$(VERSION).tar
-	$(TAR) cjf ../uClibc-$(VERSION).tar.bz2 -C .. uClibc-$(VERSION)
+	cat ../uClibc-$(VERSION).tar | bzip2 -c9 > ../uClibc-$(VERSION).tar.bz2
-	du -b ../uClibc-$(VERSION).tar.bz2
+	cat ../uClibc-$(VERSION).tar | xz -e -c8 > ../uClibc-$(VERSION).tar.xz
+	du -b ../uClibc-$(VERSION).tar.{bz2,xz}
 
 
 test check: test_compile
 test check: test_compile
 	$(Q)$(MAKE) -C test
 	$(Q)$(MAKE) -C test

+ 6 - 3
Makerules

@@ -95,7 +95,7 @@ pur_disp_ln        = echo "  "LN $(show_objs)
 pur_disp_mkdir     = echo "  "MKDIR $(show_objs)
 pur_disp_mkdir     = echo "  "MKDIR $(show_objs)
 pur_disp_gen       = echo "  "GEN $(show_objs)
 pur_disp_gen       = echo "  "GEN $(show_objs)
 pur_disp_unifdef   = echo "  "UNIFDEF $(show_objs)
 pur_disp_unifdef   = echo "  "UNIFDEF $(show_objs)
-pur_disp_rm        = echo "  "CLEAN $(@:_clean=)
+pur_disp_rm        = echo "  "CLEAN $(subst CLEAN_,,$(patsubst HEADERCLEAN_%,include \(%\),$@))
 
 
 sil_disp_compile.c = true
 sil_disp_compile.c = true
 sil_disp_compile.i = true
 sil_disp_compile.i = true
@@ -181,6 +181,9 @@ maybe_exec = \
 		$(cmd_$(1)); \
 		$(cmd_$(1)); \
 		echo 'cmd_$(call variablify,$@) := $(call dirify,$(cmd_$(call variablify,$1)))' >> $(dir $@).$(notdir $@).dep)
 		echo 'cmd_$(call variablify,$@) := $(call dirify,$(cmd_$(call variablify,$1)))' >> $(dir $@).$(notdir $@).dep)
 
 
+# collect flags of domulti prereqs
+#collect_multi_flags = $(CFLAGS-$(notdir $(d))) $(CFLAGS-$(notdir $(patsubst %/,%,$(dir $(d)))))
+collect_multi_flags = $(CFLAGS-$(notdir $(patsubst %/,%,$(dir $(d)))))
 
 
 CFLAGS_gen.dep = -MT $@ -MD -MP -MF $(dir $@).$(notdir $@).dep
 CFLAGS_gen.dep = -MT $@ -MD -MP -MF $(dir $@).$(notdir $@).dep
 
 
@@ -198,7 +201,7 @@ cmd_compile.S = $(filter-out -std=gnu99, $(cmd_compile.c)) -D__ASSEMBLER__ $(ASF
 cmd_compile.m = $(cmd_compile.c) -DL_$(patsubst %$(suffix $(notdir $@)),%,$(notdir $@))
 cmd_compile.m = $(cmd_compile.c) -DL_$(patsubst %$(suffix $(notdir $@)),%,$(notdir $@))
 cmd_compile.mi= $(cmd_compile.m:-c=-E -dD $(EXTRA_CPPFLAGS))
 cmd_compile.mi= $(cmd_compile.m:-c=-E -dD $(EXTRA_CPPFLAGS))
 
 
-cmd_compile-m = $(CC) $^ -c -o $@ $(CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(notdir $(@D))) $(CFLAGS-$(notdir $@))
+cmd_compile-m = $(CC) $^ -c -o $@ $(CFLAGS) $(CFLAGS-$(suffix $@)) $(CFLAGS-$(notdir $(@D))) $(CFLAGS-$(notdir $@)) $(sort $(foreach d,$(^:$(top_srcdir)=),$(collect_multi_flags)))
 cmd_strip     = $(STRIPTOOL) $(STRIP_FLAGS) $^
 cmd_strip     = $(STRIPTOOL) $(STRIP_FLAGS) $^
 cmd_t_strip   = $(STRIPTOOL) $(STRIP_FLAGS) $@
 cmd_t_strip   = $(STRIPTOOL) $(STRIP_FLAGS) $@
 cmd_ar        = $(AR) $(ARFLAGS) $@ $^
 cmd_ar        = $(AR) $(ARFLAGS) $@ $^
@@ -326,7 +329,7 @@ $(top_builddir)lib/interp.c: | $(sub_headers)
 	$(Q)echo "/* Force shared libraries to know about the correct library loader */" > $@
 	$(Q)echo "/* Force shared libraries to know about the correct library loader */" > $@
 	$(Q)echo "#include <features.h>" >> $@
 	$(Q)echo "#include <features.h>" >> $@
 	$(Q)echo "const char __dl_ldso__[] attribute_hidden __attribute__ ((weak)) __attribute__ ((section " \
 	$(Q)echo "const char __dl_ldso__[] attribute_hidden __attribute__ ((weak)) __attribute__ ((section " \
-		"(\".interp\"))) =\""$(SHARED_LIB_LOADER_PREFIX)/$(UCLIBC_LDSO)"\";" >> $@
+		"(\".interp\"))) =\""$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(UCLIBC_LDSO)"\";" >> $@
 
 
 $(interp): $(top_builddir)lib/interp.c
 $(interp): $(top_builddir)lib/interp.c
 	$(compile.c)
 	$(compile.c)

+ 3 - 2
Rules.mak

@@ -97,14 +97,15 @@ TARGET_SUBARCH:=$(call qstrip,$(shell grep -s '^TARGET_SUBARCH' $(top_builddir)/
 TARGET_SUBARCH:=$(call qstrip,$(TARGET_SUBARCH))
 TARGET_SUBARCH:=$(call qstrip,$(TARGET_SUBARCH))
 RUNTIME_PREFIX:=$(strip $(subst //,/, $(subst ,/, $(call qstrip,$(RUNTIME_PREFIX)))))
 RUNTIME_PREFIX:=$(strip $(subst //,/, $(subst ,/, $(call qstrip,$(RUNTIME_PREFIX)))))
 DEVEL_PREFIX:=$(strip $(subst //,/, $(subst ,/, $(call qstrip,$(DEVEL_PREFIX)))))
 DEVEL_PREFIX:=$(strip $(subst //,/, $(subst ,/, $(call qstrip,$(DEVEL_PREFIX)))))
+MULTILIB_DIR:=$(strip $(subst //,/, $(subst ,/, $(call qstrip,$(MULTILIB_DIR)))))
 KERNEL_HEADERS:=$(strip $(subst //,/, $(subst ,/, $(call qstrip,$(KERNEL_HEADERS)))))
 KERNEL_HEADERS:=$(strip $(subst //,/, $(subst ,/, $(call qstrip,$(KERNEL_HEADERS)))))
-export RUNTIME_PREFIX DEVEL_PREFIX KERNEL_HEADERS
+export RUNTIME_PREFIX DEVEL_PREFIX KERNEL_HEADERS MULTILIB_DIR
 
 
 
 
 # Now config hard core
 # Now config hard core
 MAJOR_VERSION := 0
 MAJOR_VERSION := 0
 MINOR_VERSION := 9
 MINOR_VERSION := 9
-SUBLEVEL      := 30
+SUBLEVEL      := 32
 EXTRAVERSION  :=-git
 EXTRAVERSION  :=-git
 VERSION       := $(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL)
 VERSION       := $(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL)
 ifneq ($(EXTRAVERSION),)
 ifneq ($(EXTRAVERSION),)

+ 16 - 59
extra/Configs/Config.in

@@ -254,7 +254,7 @@ config ARCH_HAS_NO_LDSO
 	default n
 	default n
 
 
 config HAVE_SHARED
 config HAVE_SHARED
-	bool "Enable support for shared libraries"
+	bool "Enable shared libraries"
 	depends on !ARCH_HAS_NO_SHARED
 	depends on !ARCH_HAS_NO_SHARED
 	default y
 	default y
 	help
 	help
@@ -286,7 +286,7 @@ config LDSO_LDD_SUPPORT
 	  Enable all the code needed to support traditional ldd,
 	  Enable all the code needed to support traditional ldd,
 	  which executes the shared library loader to resolve all dependencies
 	  which executes the shared library loader to resolve all dependencies
 	  and then provide a list of shared libraries that are required for an
 	  and then provide a list of shared libraries that are required for an
-	  application to function.  Disabling this option will makes uClibc's
+	  application to function.  Disabling this option will make uClibc's
 	  shared library loader a little bit smaller.
 	  shared library loader a little bit smaller.
 	  Most people will answer Y.
 	  Most people will answer Y.
 
 
@@ -401,7 +401,6 @@ config LDSO_GNU_HASH_SUPPORT
 
 
 choice
 choice
 	prompt "Thread support"
 	prompt "Thread support"
-	#default UCLIBC_HAS_THREADS_NATIVE if (TARGET_alpha || TARGET_arm || TARGET_i386 || TARGET_mips || TARGET_powerpc || TARGET_sh || TARGET_sh64)
 	default HAS_NO_THREADS
 	default HAS_NO_THREADS
 	help
 	help
 	  If you want to compile uClibc with pthread support, then answer Y.
 	  If you want to compile uClibc with pthread support, then answer Y.
@@ -432,42 +431,11 @@ config LINUXTHREADS_NEW
 	  the latest code from glibc, so it may be the only choice for the
 	  the latest code from glibc, so it may be the only choice for the
 	  newer ports (like alpha/amd64/64bit arches and hppa).
 	  newer ports (like alpha/amd64/64bit arches and hppa).
 
 
-config UCLIBC_HAS_THREADS_NATIVE
-	bool "Native POSIX Threading (NPTL)"
-	select UCLIBC_HAS_TLS
-	select UCLIBC_HAS_STDIO_FUTEXES
-	help
-	  If you want to compile uClibc with NPTL support, then answer Y.
-
-	  IMPORTANT NOTE!  NPTL requires a Linux 2.6 kernel, binutils
-	  at least version 2.16 and GCC with at least version 4.1.0. NPTL
-	  will not work with older versions of any above sources. If you
-	  ignore any of these guidelines, you do so at your own risk. Do
-	  not ask for help on any of the development mailing lists.
-
-	  !!!! WARNING !!!! BIG FAT WARNING !!!! REALLY BIG FAT WARNING !!!!
-
-	  This is experimental code and at times it may not even build and
-	  even if it does it might decide to do random damage. This code is
-	  potentially hazardous to your health and sanity. It will remain
-	  that way until further notice at which point this notice will
-	  disappear. Thank you for your support and for not smoking.
-
 endchoice
 endchoice
 
 
 config UCLIBC_HAS_THREADS
 config UCLIBC_HAS_THREADS
 	def_bool y if !HAS_NO_THREADS
 	def_bool y if !HAS_NO_THREADS
 
 
-config UCLIBC_HAS_TLS
-	bool "Thread-Local Storage"
-	depends on UCLIBC_HAS_THREADS_NATIVE
-	default n
-	help
-	  If you want to enable TLS support then answer Y.
-	  This is fast an efficient way to store per-thread local data
-	  which is not on stack. It needs __thread support enabled in
-	  gcc.
-
 config PTHREADS_DEBUG_SUPPORT
 config PTHREADS_DEBUG_SUPPORT
 	bool "Build pthreads debugging support"
 	bool "Build pthreads debugging support"
 	default n
 	default n
@@ -1747,14 +1715,6 @@ config UCLIBC_HAS_GNU_GETOPT
 
 
 	  Most people will answer Y.
 	  Most people will answer Y.
 
 
-config UCLIBC_HAS_STDIO_FUTEXES
-	bool "Use futexes for multithreaded I/O locking"
-	depends on UCLIBC_HAS_THREADS_NATIVE
-	default n
-	help
-	  If you want to compile uClibc to use futexes for low-level
-	  I/O locking, answer Y.  Otherwise, answer N.
-
 config UCLIBC_HAS_GETOPT_LONG
 config UCLIBC_HAS_GETOPT_LONG
 	bool "Support getopt_long/getopt_long_only"
 	bool "Support getopt_long/getopt_long_only"
 	depends on !UCLIBC_HAS_GNU_GETOPT
 	depends on !UCLIBC_HAS_GNU_GETOPT
@@ -1891,23 +1851,6 @@ endmenu
 
 
 menu "Library Installation Options"
 menu "Library Installation Options"
 
 
-config SHARED_LIB_LOADER_PREFIX
-	string "Shared library loader path"
-	depends on HAVE_SHARED
-	default "$(RUNTIME_PREFIX)lib"
-	help
-	  When using shared libraries, this path is the location where the
-	  shared library will be invoked.  This value will be compiled into
-	  every binary compiled with uClibc.
-
-	  For a typical target system this should be set to "/lib", such that
-	  'make install' will install /lib/ld-uClibc.so.0.
-
-	  BIG FAT WARNING:
-	  If you do not have a shared library loader with the correct name
-	  sitting in the directory this points to, your binaries will not
-	  run.
-
 config RUNTIME_PREFIX
 config RUNTIME_PREFIX
 	string "uClibc runtime library directory"
 	string "uClibc runtime library directory"
 	default "/usr/$(TARGET_ARCH)-linux-uclibc/"
 	default "/usr/$(TARGET_ARCH)-linux-uclibc/"
@@ -1942,6 +1885,20 @@ config DEVEL_PREFIX
 	  For a typical target system this should be set to "/usr", such that
 	  For a typical target system this should be set to "/usr", such that
 	  'make install' will install /usr/include/<header files>.
 	  'make install' will install /usr/include/<header files>.
 
 
+config MULTILIB_DIR
+	string "library path component"
+	default "lib"
+	help
+	  Path component where libraries reside.
+
+	  For a typical target system this should be set to "lib", such that
+	  'make install' will install libraries to "/lib" and "/usr/lib"
+	  respectively
+	    DEVEL_PREFIX/MULTILIB_DIR
+	    RUNTIME_PREFIX/MULTILIB_DIR
+
+	  Other settings may include "lib32" or "lib64".
+
 config HARDWIRED_ABSPATH
 config HARDWIRED_ABSPATH
 	bool "Hardwire absolute paths into linker scripts"
 	bool "Hardwire absolute paths into linker scripts"
 	default y
 	default y

+ 2 - 0
extra/config/confdata.c

@@ -402,6 +402,8 @@ int conf_write(const char *name)
 	char *env;
 	char *env;
 
 
 	dirname[0] = 0;
 	dirname[0] = 0;
+	if (name == NULL)
+		name = conf_get_configname();
 	if (name && name[0]) {
 	if (name && name[0]) {
 		struct stat st;
 		struct stat st;
 		char *slash;
 		char *slash;

+ 2 - 2
extra/locale/Makefile.in

@@ -234,9 +234,9 @@ $(top_builddir)include/bits/uClibc_locale_data.h: $(locale_OUT)/uClibc_locale_da
 	$(Q)$(AWK) 'BEGIN{i=1}{if (/WANT_/) i=/endif/;else if (i) print $0}' \
 	$(Q)$(AWK) 'BEGIN{i=1}{if (/WANT_/) i=/endif/;else if (i) print $0}' \
 		$< > $@
 		$< > $@
 
 
-objclean-y += locale_clean
+objclean-y += CLEAN_extra/locale
 
 
 # lmmtolso.c/gen_mmap.c/tst-*.c not used
 # lmmtolso.c/gen_mmap.c/tst-*.c not used
-locale_clean:
+CLEAN_extra/locale:
 	$(do_rm) $(locale_HOBJ) $(locale_SRC) $(addprefix $(locale_OUT)/*., o os txt) \
 	$(do_rm) $(locale_HOBJ) $(locale_SRC) $(addprefix $(locale_OUT)/*., o os txt) \
 		$(addprefix $(locale_OUT)/,$(addsuffix .h,uClibc_locale_data lt_defines c8tables wctables locale_tables locale_collate) lmmtolso gen_mmap locale.mmap)
 		$(addprefix $(locale_OUT)/,$(addsuffix .h,uClibc_locale_data lt_defines c8tables wctables locale_tables locale_collate) lmmtolso gen_mmap locale.mmap)

+ 2 - 2
ldso/ldso/Makefile.in

@@ -60,7 +60,7 @@ $(UCLIBC_LDSO_NAME)_OBJS := $($(UCLIBC_LDSO_NAME)_COBJ) $($(UCLIBC_LDSO_NAME)_SO
 ldso-y := $($(UCLIBC_LDSO_NAME)_OBJS:.o=.oS)
 ldso-y := $($(UCLIBC_LDSO_NAME)_OBJS:.o=.oS)
 
 
 lib-so-y += $(ldso)
 lib-so-y += $(ldso)
-objclean-y += $(UCLIBC_LDSO_NAME)_clean
+objclean-y += CLEAN_ldso/ldso
 
 
 $(ldso): $(ldso:.$(MAJOR_VERSION)=)
 $(ldso): $(ldso:.$(MAJOR_VERSION)=)
 $(ldso:.$(MAJOR_VERSION)=): $($(UCLIBC_LDSO_NAME)_OUT)/$(UCLIBC_LDSO_NAME)_so.a
 $(ldso:.$(MAJOR_VERSION)=): $($(UCLIBC_LDSO_NAME)_OUT)/$(UCLIBC_LDSO_NAME)_so.a
@@ -70,5 +70,5 @@ $($(UCLIBC_LDSO_NAME)_OUT)/$(UCLIBC_LDSO_NAME)_so.a: $(ldso-y)
 	$(Q)$(RM) $@
 	$(Q)$(RM) $@
 	$(do_ar)
 	$(do_ar)
 
 
-$(UCLIBC_LDSO_NAME)_clean:
+CLEAN_ldso/ldso:
 	$(do_rm) $(addprefix $($(UCLIBC_LDSO_NAME)_OUT)/,$(foreach e, o os oS a,$(foreach d, *. */*.,$(d)$(e))))
 	$(do_rm) $(addprefix $($(UCLIBC_LDSO_NAME)_OUT)/,$(foreach e, o os oS a,$(foreach d, *. */*.,$(d)$(e))))

+ 2 - 2
ldso/libdl/Makefile.in

@@ -41,7 +41,7 @@ libdl-so-y := $(libdl_OUT)/libdl.oS
 
 
 lib-a-$(HAVE_SHARED) += $(top_builddir)lib/libdl.a
 lib-a-$(HAVE_SHARED) += $(top_builddir)lib/libdl.a
 lib-so-y += $(top_builddir)lib/libdl.so
 lib-so-y += $(top_builddir)lib/libdl.so
-objclean-y += libdl_clean
+objclean-y += CLEAN_ldso/libdl
 
 
 $(top_builddir)lib/libdl.so: $(libdl_OUT)/libdl_so.a $(libc.depend)
 $(top_builddir)lib/libdl.so: $(libdl_OUT)/libdl_so.a $(libc.depend)
 	$(call link.so,$(libdl_FULL_NAME),$(MAJOR_VERSION))
 	$(call link.so,$(libdl_FULL_NAME),$(MAJOR_VERSION))
@@ -55,5 +55,5 @@ $(top_builddir)lib/libdl.a: $(libdl-a-y)
 	$(Q)$(RM) $@
 	$(Q)$(RM) $@
 	$(do_ar)
 	$(do_ar)
 
 
-libdl_clean:
+CLEAN_ldso/libdl:
 	$(do_rm) $(addprefix $(libdl_OUT)/*., o os oS a)
 	$(do_rm) $(addprefix $(libdl_OUT)/*., o os oS a)

+ 2 - 2
libc/Makefile.in

@@ -54,7 +54,7 @@ endif
 lib-a-y += $(top_builddir)lib/libc.a
 lib-a-y += $(top_builddir)lib/libc.a
 lib-gdb-y += $(top_builddir)lib/libc.gdb
 lib-gdb-y += $(top_builddir)lib/libc.gdb
 lib-so-y += $(libc.depend)
 lib-so-y += $(libc.depend)
-objclean-y += libc_clean
+objclean-y += CLEAN_libc
 
 
 OUTPUT_FORMAT = $(CC) $(CFLAGS) -Wl,--verbose 2>&1 | $(SED) -n '/OUTPUT_FORMAT/,/)/p'
 OUTPUT_FORMAT = $(CC) $(CFLAGS) -Wl,--verbose 2>&1 | $(SED) -n '/OUTPUT_FORMAT/,/)/p'
 
 
@@ -98,5 +98,5 @@ $(top_builddir)lib/libc.a: $(libc-a-y) | $(crt-y)
 $(top_builddir)lib/libc.gdb: $(libc_OUT)/libc_so.a $(LINK_FLAT_CRTS)
 $(top_builddir)lib/libc.gdb: $(libc_OUT)/libc_so.a $(LINK_FLAT_CRTS)
 	$(call link-flat.so,$(@:.gdb=),$(UCLIBC_SHARED_FLAT_ID))
 	$(call link-flat.so,$(@:.gdb=),$(UCLIBC_SHARED_FLAT_ID))
 
 
-libc_clean:
+CLEAN_libc:
 	$(do_rm) $(addprefix $(libc_OUT)/*., o os oS a)
 	$(do_rm) $(addprefix $(libc_OUT)/*., o os oS a)

+ 2 - 2
libc/inet/Makefile.in

@@ -57,7 +57,7 @@ INET_OBJ := $(patsubst %.c,$(INET_OUT)/%.o,$(CSRC-y))
 
 
 libc-y += $(INET_OBJ)
 libc-y += $(INET_OBJ)
 
 
-objclean-y += inet_clean
+objclean-y += CLEAN_libc/inet
 
 
-inet_clean:
+CLEAN_libc/inet:
 	$(do_rm) $(addprefix $(INET_OUT)/*., o os)
 	$(do_rm) $(addprefix $(INET_OUT)/*., o os)

+ 18 - 2
libc/inet/resolv.c

@@ -1348,8 +1348,24 @@ int attribute_hidden __dns_lookup(const char *name,
 		packet_len = i + j;
 		packet_len = i + j;
 
 
 		/* send packet */
 		/* send packet */
-		DPRINTF("On try %d, sending query to port %d\n",
+#ifdef DEBUG
-				retries_left, NAMESERVER_PORT);
+		{
+			const socklen_t plen = sa.sa.sa_family == AF_INET ? INET_ADDRSTRLEN : INET6_ADDRSTRLEN;
+			char *pbuf = malloc(plen);
+			if (pbuf == NULL) ;/* nothing */
+#ifdef __UCLIBC_HAS_IPV6__
+			else if (sa.sa.sa_family == AF_INET6)
+				pbuf = (char*)inet_ntop(AF_INET6, &sa.sa6.sin6_addr, pbuf, plen);
+#endif
+#ifdef __UCLIBC_HAS_IPV4__
+			else if (sa.sa.sa_family == AF_INET)
+				pbuf = (char*)inet_ntop(AF_INET, &sa.sa4.sin_addr, pbuf, plen);
+#endif
+			DPRINTF("On try %d, sending query to %s, port %d\n",
+				retries_left, pbuf, NAMESERVER_PORT);
+			free(pbuf);
+		}
+#endif
 		fd = socket(sa.sa.sa_family, SOCK_DGRAM, IPPROTO_UDP);
 		fd = socket(sa.sa.sa_family, SOCK_DGRAM, IPPROTO_UDP);
 		if (fd < 0) /* paranoia */
 		if (fd < 0) /* paranoia */
 			goto try_next_server;
 			goto try_next_server;

+ 2 - 2
libc/inet/rpc/Makefile.in

@@ -41,7 +41,7 @@ libc-nomulti-$(UCLIBC_HAS_RPC) += $(INET_RPC_OUT)/rpc_thread.o
 
 
 libc-$(UCLIBC_HAS_RPC)+=$(INET_RPC_OBJ)
 libc-$(UCLIBC_HAS_RPC)+=$(INET_RPC_OBJ)
 
 
-objclean-y+=inet_rpc_clean
+objclean-y+=CLEAN_libc/inet/rpc
 
 
-inet_rpc_clean:
+CLEAN_libc/inet/rpc:
 	$(do_rm) $(addprefix $(INET_RPC_OUT)/*., o os oS)
 	$(do_rm) $(addprefix $(INET_RPC_OUT)/*., o os oS)

+ 2 - 2
libc/misc/assert/Makefile.in

@@ -17,7 +17,7 @@ MISC_ASSERT_OBJ := $(MISC_ASSERT_OUT)/__assert.o
 
 
 libc-y += $(MISC_ASSERT_OBJ)
 libc-y += $(MISC_ASSERT_OBJ)
 
 
-objclean-y += misc_assert_clean
+objclean-y += CLEAN_libc/misc/assert
 
 
-misc_assert_clean:
+CLEAN_libc/misc/assert:
 	$(do_rm) $(addprefix $(MISC_ASSERT_OUT)/*., o os)
 	$(do_rm) $(addprefix $(MISC_ASSERT_OUT)/*., o os)

+ 2 - 2
libc/misc/ctype/Makefile.in

@@ -36,7 +36,7 @@ MISC_CTYPE_OBJ := $(patsubst %.c,$(MISC_CTYPE_OUT)/%.o,$(CSRC))
 
 
 libc-y += $(MISC_CTYPE_OBJ)
 libc-y += $(MISC_CTYPE_OBJ)
 
 
-objclean-y += misc_ctype_clean
+objclean-y += CLEAN_libc/misc/ctype
 
 
-misc_ctype_clean:
+CLEAN_libc/misc/ctype:
 	$(do_rm) $(addprefix $(MISC_CTYPE_OUT)/*., o os)
 	$(do_rm) $(addprefix $(MISC_CTYPE_OUT)/*., o os)

+ 2 - 2
libc/misc/dirent/Makefile.in

@@ -22,7 +22,7 @@ MISC_DIRENT_OBJ := $(patsubst %.c,$(MISC_DIRENT_OUT)/%.o,$(CSRC))
 
 
 libc-y += $(MISC_DIRENT_OBJ)
 libc-y += $(MISC_DIRENT_OBJ)
 
 
-objclean-y += misc_dirent_clean
+objclean-y += CLEAN_libc/misc/dirent
 
 
-misc_dirent_clean:
+CLEAN_libc/misc/dirent:
 	$(do_rm) $(addprefix $(MISC_DIRENT_OUT)/*., o os)
 	$(do_rm) $(addprefix $(MISC_DIRENT_OUT)/*., o os)

+ 2 - 2
libc/misc/elf/Makefile.in

@@ -16,7 +16,7 @@ MISC_ELF_OBJ:=$(patsubst %.c,$(MISC_ELF_OUT)/%.o,$(libc_a_CSRC))
 libc-static-y += $(MISC_ELF_OBJ)
 libc-static-y += $(MISC_ELF_OBJ)
 libc-shared-y += $(MISC_ELF_OUT)/dl-iterate-phdr.oS
 libc-shared-y += $(MISC_ELF_OUT)/dl-iterate-phdr.oS
 
 
-objclean-y+= misc_elf_clean
+objclean-y+= CLEAN_libc/misc/elf
 
 
-misc_elf_clean:
+CLEAN_libc/misc/elf:
 	$(do_rm) $(addprefix $(MISC_ELF_OUT)/*., o os oS)
 	$(do_rm) $(addprefix $(MISC_ELF_OUT)/*., o os oS)

+ 2 - 2
libc/misc/error/Makefile.in

@@ -23,7 +23,7 @@ MISC_ERROR_OBJ := $(patsubst %.c,$(MISC_ERROR_OUT)/%.o,$(CSRC))
 
 
 libc-y += $(MISC_ERROR_OBJ)
 libc-y += $(MISC_ERROR_OBJ)
 
 
-objclean-y += misc_error_clean
+objclean-y += CLEAN_libc/misc/error
 
 
-misc_error_clean:
+CLEAN_libc/misc/error:
 	$(do_rm) $(addprefix $(MISC_ERROR_OUT)/*., o os)
 	$(do_rm) $(addprefix $(MISC_ERROR_OUT)/*., o os)

+ 2 - 2
libc/misc/file/Makefile.in

@@ -20,7 +20,7 @@ libc-y += $(MISC_FILE_OBJ)
 
 
 libc-nomulti-$(UCLIBC_HAS_LFS) += $(MISC_FILE_OUT)/lockf64.o
 libc-nomulti-$(UCLIBC_HAS_LFS) += $(MISC_FILE_OUT)/lockf64.o
 
 
-objclean-y += misc_file_clean
+objclean-y += CLEAN_libc/misc/file
 
 
-misc_file_clean:
+CLEAN_libc/misc/file:
 	$(do_rm) $(addprefix $(MISC_FILE_OUT)/*., o os oS)
 	$(do_rm) $(addprefix $(MISC_FILE_OUT)/*., o os oS)

+ 2 - 2
libc/misc/fnmatch/Makefile.in

@@ -21,7 +21,7 @@ MISC_FNMATCH_OBJ := $(patsubst %.c,$(MISC_FNMATCH_OUT)/%.o,$(CSRC))
 
 
 libc-$(UCLIBC_HAS_FNMATCH) += $(MISC_FNMATCH_OBJ)
 libc-$(UCLIBC_HAS_FNMATCH) += $(MISC_FNMATCH_OBJ)
 
 
-objclean-y += misc_fnmatch_clean
+objclean-y += CLEAN_libc/misc/fnmatch
 
 
-misc_fnmatch_clean:
+CLEAN_libc/misc/fnmatch:
 	$(do_rm) $(addprefix $(MISC_FNMATCH_OUT)/*., o os)
 	$(do_rm) $(addprefix $(MISC_FNMATCH_OUT)/*., o os)

+ 2 - 2
libc/misc/ftw/Makefile.in

@@ -20,7 +20,7 @@ MISC_FTW_OBJ := $(patsubst %.c,$(MISC_FTW_OUT)/%.o,$(CSRC))
 
 
 libc-$(findstring y,$(UCLIBC_HAS_FTW)$(UCLIBC_HAS_NFTW)) += $(MISC_FTW_OBJ)
 libc-$(findstring y,$(UCLIBC_HAS_FTW)$(UCLIBC_HAS_NFTW)) += $(MISC_FTW_OBJ)
 
 
-objclean-y += misc_ftw_clean
+objclean-y += CLEAN_libc/misc/ftw
 
 
-misc_ftw_clean:
+CLEAN_libc/misc/ftw:
 	$(do_rm) $(addprefix $(MISC_FTW_OUT)/*., o os)
 	$(do_rm) $(addprefix $(MISC_FTW_OUT)/*., o os)

+ 2 - 2
libc/misc/glob/Makefile.in

@@ -27,7 +27,7 @@ MISC_GLOB_OBJ := $(patsubst %.c,$(MISC_GLOB_OUT)/%.o,$(CSRC))
 
 
 libc-$(UCLIBC_HAS_GLOB) += $(MISC_GLOB_OBJ)
 libc-$(UCLIBC_HAS_GLOB) += $(MISC_GLOB_OBJ)
 
 
-objclean-y += misc_glob_clean
+objclean-y += CLEAN_libc/misc/glob
 
 
-misc_glob_clean:
+CLEAN_libc/misc/glob:
 	$(do_rm) $(addprefix $(MISC_GLOB_OUT)/*., o os)
 	$(do_rm) $(addprefix $(MISC_GLOB_OUT)/*., o os)

+ 2 - 2
libc/misc/gnu/Makefile.in

@@ -17,7 +17,7 @@ MISC_GNU_OBJ := $(MISC_GNU_OUT)/obstack.o
 
 
 libc-y += $(MISC_GNU_OBJ)
 libc-y += $(MISC_GNU_OBJ)
 
 
-objclean-y += misc_gnu_clean
+objclean-y += CLEAN_libc/misc/gnu
 
 
-misc_gnu_clean:
+CLEAN_libc/misc/gnu:
 	$(do_rm) $(addprefix $(MISC_GNU_OUT)/*., o os)
 	$(do_rm) $(addprefix $(MISC_GNU_OUT)/*., o os)

+ 2 - 2
libc/misc/internals/Makefile.in

@@ -35,7 +35,7 @@ libc-shared-$(UCLIBC_FORMAT_SHARED_FLAT) += \
   $(MISC_INTERNALS_OUT)/shared_flat_add_library.os
   $(MISC_INTERNALS_OUT)/shared_flat_add_library.os
 libc-nomulti-y += $(MISC_INTERNALS_OUT)/__uClibc_main.o
 libc-nomulti-y += $(MISC_INTERNALS_OUT)/__uClibc_main.o
 
 
-objclean-y += misc_internals_clean
+objclean-y += CLEAN_libc/misc/internals
 
 
-misc_internals_clean:
+CLEAN_libc/misc/internals:
 	$(do_rm) $(addprefix $(MISC_INTERNALS_OUT)/*., o os oS)
 	$(do_rm) $(addprefix $(MISC_INTERNALS_OUT)/*., o os oS)

+ 2 - 2
libc/misc/locale/Makefile.in

@@ -24,7 +24,7 @@ MISC_LOCALE_OBJ := $(patsubst %.c,$(MISC_LOCALE_OUT)/%.o,$(CSRC))
 
 
 libc-y += $(MISC_LOCALE_OBJ)
 libc-y += $(MISC_LOCALE_OBJ)
 
 
-objclean-y += misc_locale_clean
+objclean-y += CLEAN_libc/misc/locale
 
 
-misc_locale_clean:
+CLEAN_libc/misc/locale:
 	$(do_rm) $(addprefix $(MISC_LOCALE_OUT)/*., o os)
 	$(do_rm) $(addprefix $(MISC_LOCALE_OUT)/*., o os)

+ 2 - 2
libc/misc/mntent/Makefile.in

@@ -17,7 +17,7 @@ MISC_MNTENT_OBJ := $(MISC_MNTENT_OUT)/mntent.o
 
 
 libc-y += $(MISC_MNTENT_OBJ)
 libc-y += $(MISC_MNTENT_OBJ)
 
 
-objclean-y += misc_mntent_clean
+objclean-y += CLEAN_libc/misc/mntent
 
 
-misc_mntent_clean:
+CLEAN_libc/misc/mntent:
 	$(do_rm) $(addprefix $(MISC_MNTENT_OUT)/*., o os)
 	$(do_rm) $(addprefix $(MISC_MNTENT_OUT)/*., o os)

+ 2 - 2
libc/misc/pthread/Makefile.in

@@ -14,7 +14,7 @@ libc-shared-$(UCLIBC_HAS_TLS) += $(MISC_PTHREAD_OUT)/tsd.os
 libc-$(UCLIBC_HAS_THREADS) += $(MISC_PTHREAD_OUT)/unlock.o
 libc-$(UCLIBC_HAS_THREADS) += $(MISC_PTHREAD_OUT)/unlock.o
 libc-$(UCLIBC_HAS_THREADS) += $(MISC_PTHREAD_OUT)/weaks.o
 libc-$(UCLIBC_HAS_THREADS) += $(MISC_PTHREAD_OUT)/weaks.o
 
 
-objclean-y += misc_pthread_clean
+objclean-y += CLEAN_libc/misc/pthread
 
 
-misc_pthread_clean:
+CLEAN_libc/misc/pthread:
 	$(do_rm) $(addprefix $(MISC_PTHREAD_OUT)/*., o os oS)
 	$(do_rm) $(addprefix $(MISC_PTHREAD_OUT)/*., o os oS)

+ 2 - 2
libc/misc/regex/Makefile.in

@@ -21,7 +21,7 @@ MISC_REGEX_OBJ := $(patsubst %.c,$(MISC_REGEX_OUT)/%.o,$(CSRC))
 
 
 libc-$(UCLIBC_HAS_REGEX) += $(MISC_REGEX_OBJ)
 libc-$(UCLIBC_HAS_REGEX) += $(MISC_REGEX_OBJ)
 
 
-objclean-y += misc_regex_clean
+objclean-y += CLEAN_libc/misc/regex
 
 
-misc_regex_clean:
+CLEAN_libc/misc/regex:
 	$(do_rm) $(addprefix $(MISC_REGEX_OUT)/*., o os)
 	$(do_rm) $(addprefix $(MISC_REGEX_OUT)/*., o os)

+ 2 - 2
libc/misc/search/Makefile.in

@@ -29,7 +29,7 @@ MISC_SEARCH_OBJ := $(patsubst %.c,$(MISC_SEARCH_OUT)/%.o,$(CSRC))
 
 
 libc-y += $(MISC_SEARCH_OBJ)
 libc-y += $(MISC_SEARCH_OBJ)
 
 
-objclean-y += misc_search_clean
+objclean-y += CLEAN_libc/misc/search
 
 
-misc_search_clean:
+CLEAN_libc/misc/search:
 	$(do_rm) $(addprefix $(MISC_SEARCH_OUT)/*., o os)
 	$(do_rm) $(addprefix $(MISC_SEARCH_OUT)/*., o os)

+ 2 - 2
libc/misc/statfs/Makefile.in

@@ -25,7 +25,7 @@ libc-y += $(MISC_STATFS_OBJ)
 
 
 libc-nomulti-$(UCLIBC_HAS_LFS) += $(MISC_STATFS_OUT)/statvfs64.o $(MISC_STATFS_OUT)/fstatvfs64.o
 libc-nomulti-$(UCLIBC_HAS_LFS) += $(MISC_STATFS_OUT)/statvfs64.o $(MISC_STATFS_OUT)/fstatvfs64.o
 
 
-objclean-y += misc_statfs_clean
+objclean-y += CLEAN_libc/misc/statfs
 
 
-misc_statfs_clean:
+CLEAN_libc/misc/statfs:
 	$(do_rm) $(addprefix $(MISC_STATFS_OUT)/*., o os oS)
 	$(do_rm) $(addprefix $(MISC_STATFS_OUT)/*., o os oS)

+ 2 - 2
libc/misc/syslog/Makefile.in

@@ -19,7 +19,7 @@ ifeq ($(UCLIBC_HAS_SYSLOG),y)
 libc-y += $(MISC_SYSLOG_OBJ)
 libc-y += $(MISC_SYSLOG_OBJ)
 endif
 endif
 
 
-objclean-y += misc_syslog_clean
+objclean-y += CLEAN_libc/misc/syslog
 
 
-misc_syslog_clean:
+CLEAN_libc/misc/syslog:
 	$(do_rm) $(addprefix $(MISC_SYSLOG_OUT)/*., o os)
 	$(do_rm) $(addprefix $(MISC_SYSLOG_OUT)/*., o os)

+ 2 - 2
libc/misc/sysvipc/Makefile.in

@@ -26,7 +26,7 @@ MISC_SYSVIPC_OBJ := $(patsubst %.c,$(MISC_SYSVIPC_OUT)/%.o,$(CSRC))
 
 
 libc-y += $(MISC_SYSVIPC_OBJ)
 libc-y += $(MISC_SYSVIPC_OBJ)
 
 
-objclean-y += misc_sysvipc_clean
+objclean-y += CLEAN_libc/misc/sysvipc
 
 
-misc_sysvipc_clean:
+CLEAN_libc/misc/sysvipc:
 	$(do_rm) $(addprefix $(MISC_SYSVIPC_OUT)/*., o os)
 	$(do_rm) $(addprefix $(MISC_SYSVIPC_OUT)/*., o os)

+ 2 - 2
libc/misc/time/Makefile.in

@@ -37,7 +37,7 @@ MISC_TIME_OBJ := $(patsubst %.c,$(MISC_TIME_OUT)/%.o,$(CSRC))
 
 
 libc-y += $(MISC_TIME_OBJ)
 libc-y += $(MISC_TIME_OBJ)
 
 
-objclean-y += misc_time_clean
+objclean-y += CLEAN_libc/misc/time
 
 
-misc_time_clean:
+CLEAN_libc/misc/time:
 	$(do_rm) $(addprefix $(MISC_TIME_OUT)/*., o os)
 	$(do_rm) $(addprefix $(MISC_TIME_OUT)/*., o os)

+ 2 - 2
libc/misc/ttyent/Makefile.in

@@ -17,7 +17,7 @@ MISC_TTYENT_OBJ := $(patsubst %.c,$(MISC_TTYENT_OUT)/%.o,$(CSRC))
 
 
 libc-y += $(MISC_TTYENT_OBJ)
 libc-y += $(MISC_TTYENT_OBJ)
 
 
-objclean-y += misc_ttyent_clean
+objclean-y += CLEAN_libc/misc/ttyent
 
 
-misc_ttyent_clean:
+CLEAN_libc/misc/ttyent:
 	$(do_rm) $(addprefix $(MISC_TTYENT_OUT)/*., o os)
 	$(do_rm) $(addprefix $(MISC_TTYENT_OUT)/*., o os)

+ 2 - 2
libc/misc/utmp/Makefile.in

@@ -17,7 +17,7 @@ MISC_UTMP_OBJ := $(patsubst %.c,$(MISC_UTMP_OUT)/%.o,$(CSRC))
 
 
 libc-y += $(MISC_UTMP_OBJ)
 libc-y += $(MISC_UTMP_OBJ)
 
 
-objclean-y += misc_utmp_clean
+objclean-y += CLEAN_libc/misc/utmp
 
 
-misc_utmp_clean:
+CLEAN_libc/misc/utmp:
 	$(do_rm) $(addprefix $(MISC_UTMP_OUT)/*., o os)
 	$(do_rm) $(addprefix $(MISC_UTMP_OUT)/*., o os)

+ 2 - 2
libc/misc/wchar/Makefile.in

@@ -35,7 +35,7 @@ MISC_WCHAR_OBJ := $(patsubst %.c,$(MISC_WCHAR_OUT)/%.o,$(CSRC))
 
 
 libc-$(UCLIBC_HAS_WCHAR) += $(MISC_WCHAR_OBJ)
 libc-$(UCLIBC_HAS_WCHAR) += $(MISC_WCHAR_OBJ)
 
 
-objclean-y += misc_wchar_clean
+objclean-y += CLEAN_libc/misc/wchar
 
 
-misc_wchar_clean:
+CLEAN_libc/misc/wchar:
 	$(do_rm) $(addprefix $(MISC_WCHAR_OUT)/*., o os)
 	$(do_rm) $(addprefix $(MISC_WCHAR_OUT)/*., o os)

+ 2 - 2
libc/misc/wctype/Makefile.in

@@ -30,7 +30,7 @@ MISC_WCTYPE_OBJ := $(patsubst %.c,$(MISC_WCTYPE_OUT)/%.o,$(CSRC))
 
 
 libc-y += $(MISC_WCTYPE_OBJ)
 libc-y += $(MISC_WCTYPE_OBJ)
 
 
-objclean-y += misc_wctype_clean
+objclean-y += CLEAN_libc/misc/wctype
 
 
-misc_wctype_clean:
+CLEAN_libc/misc/wctype:
 	$(do_rm) $(addprefix $(MISC_WCTYPE_OUT)/*., o os)
 	$(do_rm) $(addprefix $(MISC_WCTYPE_OUT)/*., o os)

+ 2 - 2
libc/misc/wordexp/Makefile.in

@@ -17,7 +17,7 @@ MISC_WORDEXP_OBJ := $(patsubst %.c,$(MISC_WORDEXP_OUT)/%.o,$(CSRC))
 
 
 libc-$(UCLIBC_HAS_WORDEXP) += $(MISC_WORDEXP_OBJ)
 libc-$(UCLIBC_HAS_WORDEXP) += $(MISC_WORDEXP_OBJ)
 
 
-objclean-y += misc_wordexp_clean
+objclean-y += CLEAN_libc/misc/wordexp
 
 
-misc_wordexp_clean:
+CLEAN_libc/misc/wordexp:
 	$(do_rm) $(addprefix $(MISC_WORDEXP_OUT)/*., o os)
 	$(do_rm) $(addprefix $(MISC_WORDEXP_OUT)/*., o os)

+ 2 - 2
libc/pwd_grp/Makefile.in

@@ -27,7 +27,7 @@ PWDGRP_OBJ := $(patsubst %.c,$(PWDGRP_OUT)/%.o,$(CSRC))
 
 
 libc-y += $(PWDGRP_OBJ)
 libc-y += $(PWDGRP_OBJ)
 
 
-objclean-y += pwdgrp_clean
+objclean-y += CLEAN_libc/pwd_grp
 
 
-pwdgrp_clean:
+CLEAN_libc/pwd_grp:
 	$(do_rm) $(addprefix $(PWDGRP_OUT)/*., o os)
 	$(do_rm) $(addprefix $(PWDGRP_OUT)/*., o os)

+ 2 - 2
libc/signal/Makefile.in

@@ -32,7 +32,7 @@ SIGNAL_OBJ := $(patsubst %.c,$(SIGNAL_OUT)/%.o,$(CSRC-y))
 
 
 libc-y += $(SIGNAL_OBJ)
 libc-y += $(SIGNAL_OBJ)
 
 
-objclean-y += signal_clean
+objclean-y += CLEAN_libc/signal
 
 
-signal_clean:
+CLEAN_libc/signal:
 	$(do_rm) $(addprefix $(SIGNAL_OUT)/*., o os)
 	$(do_rm) $(addprefix $(SIGNAL_OUT)/*., o os)

+ 2 - 2
libc/stdio/Makefile.in

@@ -103,7 +103,7 @@ ifeq ($(UCLIBC_HAS_WCHAR),y)
 libc-nomulti-y += $(STDIO_OUT)/vfwprintf.o $(STDIO_OUT)/vfwscanf.o
 libc-nomulti-y += $(STDIO_OUT)/vfwprintf.o $(STDIO_OUT)/vfwscanf.o
 endif
 endif
 
 
-objclean-y += stdio_clean
+objclean-y += CLEAN_libc/stdio
 
 
-stdio_clean:
+CLEAN_libc/stdio:
 	$(do_rm) $(addprefix $(STDIO_OUT)/*., o os oS)
 	$(do_rm) $(addprefix $(STDIO_OUT)/*., o os oS)

+ 4 - 4
libc/stdio/_vfprintf.c

@@ -161,9 +161,6 @@
 /* Now controlled by uClibc_stdio.h. */
 /* Now controlled by uClibc_stdio.h. */
 /* #define __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__ */
 /* #define __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__ */
 
 
-/* TODO -- move these to a configuration section? */
-#define MAX_FIELD_WIDTH		4095
-
 #ifdef __UCLIBC_MJN3_ONLY__
 #ifdef __UCLIBC_MJN3_ONLY__
 #ifdef L_register_printf_function
 #ifdef L_register_printf_function
 /* emit only once */
 /* emit only once */
@@ -893,8 +890,11 @@ int attribute_hidden _ppfs_parsespec(ppfs_t *ppfs)
 	}
 	}
 	i = 0;
 	i = 0;
 	while (isdigit(*fmt)) {
 	while (isdigit(*fmt)) {
-		if (i < MAX_FIELD_WIDTH) { /* Avoid overflow. */
+		if (i < INT_MAX / 10
+		    || (i == INT_MAX / 10 && (*fmt - '0') <= INT_MAX % 10)) {
 			i = (i * 10) + (*fmt - '0');
 			i = (i * 10) + (*fmt - '0');
+		} else {
+			i = INT_MAX; /* best we can do... */
 		}
 		}
 		++fmt;
 		++fmt;
 	}
 	}

+ 2 - 2
libc/stdlib/Makefile.in

@@ -74,7 +74,7 @@ libc-nonshared-y += $(STDLIB_OUT)/atexit.os
 libc-nomulti-y += $(STDLIB_OUT)/labs.o $(STDLIB_OUT)/atol.o $(STDLIB_OUT)/_stdlib_strto_l.o $(STDLIB_OUT)/_stdlib_strto_ll.o
 libc-nomulti-y += $(STDLIB_OUT)/labs.o $(STDLIB_OUT)/atol.o $(STDLIB_OUT)/_stdlib_strto_l.o $(STDLIB_OUT)/_stdlib_strto_ll.o
 libc-nomulti-$(UCLIBC_HAS_XLOCALE) += $(STDLIB_OUT)/_stdlib_strto_l_l.o $(STDLIB_OUT)/_stdlib_strto_ll_l.o
 libc-nomulti-$(UCLIBC_HAS_XLOCALE) += $(STDLIB_OUT)/_stdlib_strto_l_l.o $(STDLIB_OUT)/_stdlib_strto_ll_l.o
 
 
-objclean-y += stdlib_clean
+objclean-y += CLEAN_libc/stdlib
 
 
-stdlib_clean:
+CLEAN_libc/stdlib:
 	$(do_rm) $(addprefix $(STDLIB_OUT)/*., o os oS)
 	$(do_rm) $(addprefix $(STDLIB_OUT)/*., o os oS)

+ 2 - 2
libc/stdlib/malloc-simple/Makefile.in

@@ -18,7 +18,7 @@ STDLIB_MALLOC_SIMPLE_OBJ := $(patsubst %.c,$(STDLIB_MALLOC_SIMPLE_OUT)/%.o,$(CSR
 
 
 libc-$(MALLOC_SIMPLE) += $(STDLIB_MALLOC_SIMPLE_OBJ)
 libc-$(MALLOC_SIMPLE) += $(STDLIB_MALLOC_SIMPLE_OBJ)
 
 
-objclean-y += stdlib_malloc_simple_clean
+objclean-y += CLEAN_libc/stdlib/malloc-simple
 
 
-stdlib_malloc_simple_clean:
+CLEAN_libc/stdlib/malloc-simple:
 	$(do_rm) $(addprefix $(STDLIB_MALLOC_SIMPLE_OUT)/*., o os)
 	$(do_rm) $(addprefix $(STDLIB_MALLOC_SIMPLE_OUT)/*., o os)

+ 2 - 2
libc/stdlib/malloc-standard/Makefile.in

@@ -19,7 +19,7 @@ STDLIB_MALLOC_STANDARD_OBJ := $(patsubst %.c,$(STDLIB_MALLOC_STANDARD_OUT)/%.o,$
 
 
 libc-$(MALLOC_STANDARD) += $(STDLIB_MALLOC_STANDARD_OBJ)
 libc-$(MALLOC_STANDARD) += $(STDLIB_MALLOC_STANDARD_OBJ)
 
 
-objclean-y += stdlib_malloc_standard_clean
+objclean-y += CLEAN_libc/stdlib/malloc-standard
 
 
-stdlib_malloc_standard_clean:
+CLEAN_libc/stdlib/malloc-standard:
 	$(do_rm) $(addprefix $(STDLIB_MALLOC_STANDARD_OUT)/*., o os)
 	$(do_rm) $(addprefix $(STDLIB_MALLOC_STANDARD_OUT)/*., o os)

+ 2 - 2
libc/stdlib/malloc/Makefile.in

@@ -29,9 +29,9 @@ STDLIB_MALLOC_OBJ := $(patsubst %.c,$(STDLIB_MALLOC_OUT)/%.o,$(CSRC))
 
 
 libc-$(MALLOC) += $(STDLIB_MALLOC_OBJ)
 libc-$(MALLOC) += $(STDLIB_MALLOC_OBJ)
 
 
-objclean-y += stdlib_malloc_clean
+objclean-y += CLEAN_libc/stdlib/malloc
 
 
-stdlib_malloc_clean:
+CLEAN_libc/stdlib/malloc:
 	$(do_rm) $(addprefix $(STDLIB_MALLOC_OUT)/*., o os)
 	$(do_rm) $(addprefix $(STDLIB_MALLOC_OUT)/*., o os)
 
 
 malloc.o free.o realloc.o memalign.o: malloc.h
 malloc.o free.o realloc.o memalign.o: malloc.h

+ 2 - 2
libc/string/Makefile.in

@@ -138,7 +138,7 @@ libc-y += $(STRING_COBJ)
 libc-nomulti-$(UCLIBC_HAS_XLOCALE) += $(STRING_OUT)/wcsxfrm_l.o
 libc-nomulti-$(UCLIBC_HAS_XLOCALE) += $(STRING_OUT)/wcsxfrm_l.o
 libc-nomulti-y += $(STRING_OUT)/__xpg_strerror_r.o
 libc-nomulti-y += $(STRING_OUT)/__xpg_strerror_r.o
 
 
-objclean-y += string_clean
+objclean-y += CLEAN_libc/string
 
 
-string_clean:
+CLEAN_libc/string:
 	$(do_rm) $(addprefix $(STRING_OUT)/,$(addprefix *., o os oS) $(addprefix */*., o os oS) $(addprefix */*/*., o os oS))
 	$(do_rm) $(addprefix $(STRING_OUT)/,$(addprefix *., o os oS) $(addprefix */*., o os oS) $(addprefix */*/*., o os oS))

+ 4 - 4
libc/sysdeps/linux/Makefile.commonarch

@@ -18,12 +18,12 @@ ARCH_OBJS := $(ARCH_COBJ) $(ARCH_SOBJ)
 crt-y          := FORCE
 crt-y          := FORCE
 libc-y         += $(ARCH_OBJS)
 libc-y         += $(ARCH_OBJS)
 libc-nomulti-y += $(ARCH_SOBJ)
 libc-nomulti-y += $(ARCH_SOBJ)
-objclean-y     += arch_clean
+objclean-y     += CLEAN_$(subst $(top_builddir),,$(ARCH_OUT))
 
 
 CFLAGS-crti.S+=$(PICFLAG)
 CFLAGS-crti.S+=$(PICFLAG)
 CFLAGS-crtn.S+=$(PICFLAG)
 CFLAGS-crtn.S+=$(PICFLAG)
 
 
-arch_clean:
+CLEAN_$(subst $(top_builddir),,$(ARCH_OUT)):
 	$(do_rm) $(addprefix $(ARCH_OUT)/*., o os oS) $(CTOR_TARGETS) $(CRTS)
 	$(do_rm) $(addprefix $(ARCH_OUT)/*., o os oS) $(CTOR_TARGETS) $(CRTS)
 
 
 ifneq ($(ARCH_HEADERS),)
 ifneq ($(ARCH_HEADERS),)
@@ -34,8 +34,8 @@ $(ARCH_HEADERS_OUT):
 	$(do_ln) -fs $(call rel_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/$(@F) $@
 	$(do_ln) -fs $(call rel_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/$(@F) $@
 
 
 headers-y += $(ARCH_HEADERS_OUT)
 headers-y += $(ARCH_HEADERS_OUT)
-headers_clean-y += arch_headers_clean
+headers_clean-y += HEADERCLEAN_$(subst $(top_builddir),,$(ARCH_OUT))
-arch_headers_clean:
+HEADERCLEAN_$(subst $(top_builddir),,$(ARCH_OUT)):
 	$(RM) $(ARCH_HEADERS_OUT)
 	$(RM) $(ARCH_HEADERS_OUT)
 
 
 endif
 endif

+ 2 - 2
libc/sysdeps/linux/common/Makefile.in

@@ -119,7 +119,7 @@ libc-nomulti-y += $(COMMON_OUT)/__syscall_rt_sigaction.o \
 	$(COMMON_OUT)/stat.o
 	$(COMMON_OUT)/stat.o
 libc-nomulti-$(UCLIBC_HAS_SSP) += $(COMMON_OUT)/ssp.o
 libc-nomulti-$(UCLIBC_HAS_SSP) += $(COMMON_OUT)/ssp.o
 
 
-objclean-y += common_clean
+objclean-y += CLEAN_libc/sysdeps/linux/common
 
 
-common_clean:
+CLEAN_libc/sysdeps/linux/common:
 	$(do_rm) $(addprefix $(COMMON_OUT)/*., o os oS)
 	$(do_rm) $(addprefix $(COMMON_OUT)/*., o os oS)

+ 5 - 0
libc/sysdeps/linux/common/bits/kernel-features.h

@@ -46,6 +46,11 @@
 # define __ASSUME_GETCWD_SYSCALL	1
 # define __ASSUME_GETCWD_SYSCALL	1
 #endif
 #endif
 
 
+/* When was `poll' introduced?  */
+#if __LINUX_KERNEL_VERSION >= 131584
+# define __ASSUME_POLL_SYSCALL          1
+#endif
+
 /* Real-time signal became usable in 2.1.70.  */
 /* Real-time signal became usable in 2.1.70.  */
 #if __LINUX_KERNEL_VERSION >= 131398
 #if __LINUX_KERNEL_VERSION >= 131398
 # define __ASSUME_REALTIME_SIGNALS	1
 # define __ASSUME_REALTIME_SIGNALS	1

+ 4 - 4
libc/sysdeps/linux/common/getdents.c

@@ -133,10 +133,6 @@ ssize_t __getdents (int fd, char *buf, size_t nbytes)
     return (char *) dp - buf;
     return (char *) dp - buf;
 }
 }
 
 
-#if defined __UCLIBC_HAS_LFS__ && ! defined __NR_getdents64
-attribute_hidden strong_alias(__getdents,__getdents64)
-#endif
-
 #elif __WORDSIZE == 32
 #elif __WORDSIZE == 32
 
 
 extern __typeof(__getdents) __getdents64 attribute_hidden;
 extern __typeof(__getdents) __getdents64 attribute_hidden;
@@ -167,4 +163,8 @@ ssize_t __getdents (int fd, char *buf, size_t nbytes)
 
 
 #endif
 #endif
 
 
+#if defined __UCLIBC_HAS_LFS__ && ! defined __NR_getdents64
+attribute_hidden strong_alias(__getdents,__getdents64)
+#endif
+
 #endif
 #endif

+ 3 - 0
libc/sysdeps/linux/common/poll.c

@@ -19,6 +19,7 @@
 
 
 #include <sys/syscall.h>
 #include <sys/syscall.h>
 #include <sys/poll.h>
 #include <sys/poll.h>
+#include <bits/kernel-features.h>
 
 
 #ifdef __UCLIBC_HAS_THREADS_NATIVE__
 #ifdef __UCLIBC_HAS_THREADS_NATIVE__
 #include <sysdep-cancel.h>
 #include <sysdep-cancel.h>
@@ -26,6 +27,8 @@
 #define SINGLE_THREAD_P 1
 #define SINGLE_THREAD_P 1
 #endif
 #endif
 
 
+#if defined __ASSUME_POLL_SYSCALL && defined __NR_poll
+
 libc_hidden_proto(poll)
 libc_hidden_proto(poll)
 
 
 #ifdef __NR_poll
 #ifdef __NR_poll

+ 1 - 0
libc/sysdeps/linux/common/sysdep.h

@@ -156,3 +156,4 @@
 #define DW_EH_PE_funcrel	0x40
 #define DW_EH_PE_funcrel	0x40
 #define DW_EH_PE_aligned	0x50
 #define DW_EH_PE_aligned	0x50
 #define DW_EH_PE_indirect	0x80
 #define DW_EH_PE_indirect	0x80
+

+ 4 - 2
libc/sysdeps/linux/nios2/bits/fcntl.h

@@ -1,5 +1,5 @@
 /* O_*, F_*, FD_* bit values for Linux.
 /* O_*, F_*, FD_* bit values for Linux.
-   Copyright (C) 2000 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    This file is part of the GNU C Library.
 
 
    The GNU C Library is free software; you can redistribute it and/or
    The GNU C Library is free software; you can redistribute it and/or
@@ -48,6 +48,8 @@
 # define O_DIRECTORY	 040000	/* Must be a directory.	 */
 # define O_DIRECTORY	 040000	/* Must be a directory.	 */
 # define O_NOFOLLOW	0100000	/* Do not follow links.	 */
 # define O_NOFOLLOW	0100000	/* Do not follow links.	 */
 # define O_DIRECT	0200000	/* Direct disk access.	*/
 # define O_DIRECT	0200000	/* Direct disk access.	*/
+# define O_NOATIME	01000000 /* Do not set atime.  */
+# define O_CLOEXEC	02000000 /* set close_on_exec */
 #endif
 #endif
 
 
 /* For now Linux has synchronisity options for data and read operations.
 /* For now Linux has synchronisity options for data and read operations.
@@ -81,7 +83,7 @@
 #define F_SETLK64	13	/* Set record locking info (non-blocking).  */
 #define F_SETLK64	13	/* Set record locking info (non-blocking).  */
 #define F_SETLKW64	14	/* Set record locking info (blocking).	*/
 #define F_SETLKW64	14	/* Set record locking info (blocking).	*/
 
 
-#if defined __USE_BSD || defined __USE_XOPEN2K
+#if defined __USE_BSD || defined __USE_UNIX98
 # define F_SETOWN	8	/* Get owner of socket (receiver of SIGIO).  */
 # define F_SETOWN	8	/* Get owner of socket (receiver of SIGIO).  */
 # define F_GETOWN	9	/* Set owner of socket (receiver of SIGIO).  */
 # define F_GETOWN	9	/* Set owner of socket (receiver of SIGIO).  */
 #endif
 #endif

+ 85 - 274
libc/sysdeps/linux/nios2/bits/syscalls.h

@@ -9,287 +9,98 @@
 #include <errno.h>
 #include <errno.h>
 #include <asm/traps.h>
 #include <asm/traps.h>
 
 
-#define __syscall_return(type, res) \
+#define __syscall_return(type, res)					\
-do { \
+	do {								\
-	if ((unsigned long)(res) >= (unsigned long)(-125)) { \
+		if (unlikely(INTERNAL_SYSCALL_ERROR_P(res, ))) {	\
-                                                                        \
+			__set_errno(INTERNAL_SYSCALL_ERRNO(res, ));	\
-                /* avoid using res which is declared to be in           \
+			res = (unsigned long) -1;			\
-                    register r2; errno might expand to a function       \
+		}							\
-                    call and clobber it.                          */    \
+		return (type) (res);					\
-                                                                        \
+	} while (0)
-		int __err = -(res); \
-		errno = __err; \
-		res = -1; \
-	} \
-	return (type) (res); \
-} while (0)
 
 
-#define _syscall0(type,name) \
+#define INTERNAL_SYSCALL_NCS(name, err, nr, args...)			\
-type name(void) \
+	({								\
-{ \
+		long __res;						\
-    long __res;                                             \
+		__asm__ __volatile__ (					\
-                                                            \
+			"movi    r2,    %2\n\t"   /* TRAP_ID_SYSCALL */ \
-    __asm__ __volatile__ (                                  \
+			"movi    r3,    %1\n\t"   /* __NR_##name     */	\
-                                                            \
+			ASM_ARGS_##nr					\
-        "    \n\t"                                          \
+			"trap\n\t"					\
-                                                            \
+			"mov     %0,    r2\n\t"   /* syscall return  */	\
-        "    movi    r2,    %2\n\t"   /* TRAP_ID_SYSCALL */ \
+			:   "=r" (__res)          /* %0              */	\
-        "    movi    r3,    %1\n\t"   /* __NR_##name     */ \
+			:   "i" (name)            /* %1              */	\
-                                                            \
+			  , "i" (TRAP_ID_SYSCALL) /* %2              */	\
-        "    trap\n\t"                                      \
+			  MAP_ARGS_##nr (args)    /* %3-%8           */	\
-        "    mov     %0,    r2\n\t"   /* syscall rtn     */ \
+			:   "r2"					\
-                                                            \
+			  , "r3"					\
-        "    \n\t"                                          \
+			  CLOB_ARGS_##nr          /* Clobbered       */ \
-                                                            \
+		);							\
-        :   "=r" (__res)              /* %0              */ \
+		__res;							\
-                                                            \
+	})
-        :   "i" (__NR_##name)         /* %1              */ \
-          , "i" (TRAP_ID_SYSCALL)     /* %2              */ \
-                                                            \
-        :   "r2"                      /* Clobbered       */ \
-          , "r3"                      /* Clobbered       */ \
-        );                                                  \
-                                                            \
-__syscall_return(type,__res); \
-}
 
 
-#define _syscall1(type,name,atype,a) \
+#define INTERNAL_SYSCALL_ERROR_P(val, err)	\
-type name(atype a) \
+	((unsigned long)(val) >= (unsigned long)(-125))
-{ \
-    long __res;                                             \
-                                                            \
-    __asm__ __volatile__ (                                  \
-                                                            \
-        "    \n\t"                                          \
-                                                            \
-        "    movi    r2,    %2\n\t"   /* TRAP_ID_SYSCALL */ \
-        "    movi    r3,    %1\n\t"   /* __NR_##name     */ \
-        "    mov     r4,    %3\n\t"   /* (long) a        */ \
-                                                            \
-        "    trap\n\t"                                      \
-        "    mov     %0,    r2\n\t"   /* syscall rtn     */ \
-                                                            \
-        "    \n\t"                                          \
-                                                            \
-        :   "=r" (__res)              /* %0              */ \
-                                                            \
-        :   "i" (__NR_##name)         /* %1              */ \
-          , "i" (TRAP_ID_SYSCALL)     /* %2              */ \
-          , "r" ((long) a)            /* %3              */ \
-                                                            \
-        :   "r2"                      /* Clobbered       */ \
-          , "r3"                      /* Clobbered       */ \
-          , "r4"                      /* Clobbered       */ \
-        );                                                  \
-                                                            \
-__syscall_return(type,__res); \
-}
 
 
-#define _syscall2(type,name,atype,a,btype,b) \
+#define ASM_ARGS_0
-type name(atype a,btype b) \
+#define MAP_ARGS_0()
-{ \
+#define CLOB_ARGS_0
-    long __res;                                             \
-                                                            \
-    __asm__ __volatile__ (                                  \
-                                                            \
-        "    \n\t"                                          \
-                                                            \
-        "    movi    r2,    %2\n\t"   /* TRAP_ID_SYSCALL */ \
-        "    movi    r3,    %1\n\t"   /* __NR_##name     */ \
-        "    mov     r4,    %3\n\t"   /* (long) a        */ \
-        "    mov     r5,    %4\n\t"   /* (long) b        */ \
-                                                            \
-        "    trap\n\t"                                      \
-        "    mov     %0,    r2\n\t"   /* syscall rtn     */ \
-                                                            \
-        "    \n\t"                                          \
-                                                            \
-        :   "=r" (__res)              /* %0              */ \
-                                                            \
-        :   "i" (__NR_##name)         /* %1              */ \
-          , "i" (TRAP_ID_SYSCALL)     /* %2              */ \
-          , "r" ((long) a)            /* %3              */ \
-          , "r" ((long) b)            /* %4              */ \
-                                                            \
-        :   "r2"                      /* Clobbered       */ \
-          , "r3"                      /* Clobbered       */ \
-          , "r4"                      /* Clobbered       */ \
-          , "r5"                      /* Clobbered       */ \
-        );                                                  \
-                                                            \
-__syscall_return(type,__res); \
-}
 
 
-#define _syscall3(type,name,atype,a,btype,b,ctype,c) \
+#define ASM_ARGS_1		\
-type name(atype a,btype b,ctype c) \
+	"mov     r4,    %3\n\t"
-{ \
+#define MAP_ARGS_1(a)		\
-    long __res;                                             \
+	, "r" ((long) a)
-                                                            \
+#define CLOB_ARGS_1		\
-    __asm__ __volatile__ (                                  \
+	, "r4"
-                                                            \
-        "    \n\t"                                          \
-                                                            \
-        "    movi    r2,    %2\n\t"   /* TRAP_ID_SYSCALL */ \
-        "    movi    r3,    %1\n\t"   /* __NR_##name     */ \
-        "    mov     r4,    %3\n\t"   /* (long) a        */ \
-        "    mov     r5,    %4\n\t"   /* (long) b        */ \
-        "    mov     r6,    %5\n\t"   /* (long) c        */ \
-                                                            \
-        "    trap\n\t"                                      \
-        "    mov     %0,    r2\n\t"   /* syscall rtn     */ \
-                                                            \
-        "    \n\t"                                          \
-                                                            \
-        :   "=r" (__res)              /* %0              */ \
-                                                            \
-        :   "i" (__NR_##name)         /* %1              */ \
-          , "i" (TRAP_ID_SYSCALL)     /* %2              */ \
-          , "r" ((long) a)            /* %3              */ \
-          , "r" ((long) b)            /* %4              */ \
-          , "r" ((long) c)            /* %5              */ \
-                                                            \
-        :   "r2"                      /* Clobbered       */ \
-          , "r3"                      /* Clobbered       */ \
-          , "r4"                      /* Clobbered       */ \
-          , "r5"                      /* Clobbered       */ \
-          , "r6"                      /* Clobbered       */ \
-        );                                                  \
-                                                            \
-__syscall_return(type,__res); \
-}
 
 
-#define _syscall4(type,name,atype,a,btype,b,ctype,c,dtype,d) \
+#define ASM_ARGS_2		\
-type name (atype a, btype b, ctype c, dtype d) \
+	ASM_ARGS_1		\
-{ \
+	"mov     r5,    %4\n\t"
-    long __res;                                             \
+#define MAP_ARGS_2(a, b)	\
-                                                            \
+	MAP_ARGS_1(a)		\
-    __asm__ __volatile__ (                                  \
+	, "r" ((long) b)
-                                                            \
+#define CLOB_ARGS_2		\
-        "    \n\t"                                          \
+	CLOB_ARGS_1		\
-                                                            \
+	, "r5"
-        "    movi    r2,    %2\n\t"   /* TRAP_ID_SYSCALL */ \
-        "    movi    r3,    %1\n\t"   /* __NR_##name     */ \
-        "    mov     r4,    %3\n\t"   /* (long) a        */ \
-        "    mov     r5,    %4\n\t"   /* (long) b        */ \
-        "    mov     r6,    %5\n\t"   /* (long) c        */ \
-        "    mov     r7,    %6\n\t"   /* (long) d        */ \
-                                                            \
-        "    trap\n\t"                                      \
-        "    mov     %0,    r2\n\t"   /* syscall rtn     */ \
-                                                            \
-        "    \n\t"                                          \
-                                                            \
-        :   "=r" (__res)              /* %0              */ \
-                                                            \
-        :   "i" (__NR_##name)         /* %1              */ \
-          , "i" (TRAP_ID_SYSCALL)     /* %2              */ \
-          , "r" ((long) a)            /* %3              */ \
-          , "r" ((long) b)            /* %4              */ \
-          , "r" ((long) c)            /* %5              */ \
-          , "r" ((long) d)            /* %6              */ \
-                                                            \
-        :   "r2"                      /* Clobbered       */ \
-          , "r3"                      /* Clobbered       */ \
-          , "r4"                      /* Clobbered       */ \
-          , "r5"                      /* Clobbered       */ \
-          , "r6"                      /* Clobbered       */ \
-          , "r7"                      /* Clobbered       */ \
-        );                                                  \
-                                                            \
-__syscall_return(type,__res); \
-}
 
 
-#define _syscall5(type,name,atype,a,btype,b,ctype,c,dtype,d,etype,e) \
+#define ASM_ARGS_3		\
-type name (atype a,btype b,ctype c,dtype d,etype e) \
+	ASM_ARGS_2		\
-{ \
+	"mov     r6,    %5\n\t"
-    long __res;                                             \
+#define MAP_ARGS_3(a, b, c)	\
-                                                            \
+	MAP_ARGS_2(a, b)	\
-    __asm__ __volatile__ (                                  \
+	, "r" ((long) c)
-                                                            \
+#define CLOB_ARGS_3		\
-        "    \n\t"                                          \
+	CLOB_ARGS_2		\
-                                                            \
+	, "r6"
-        "    movi    r2,    %2\n\t"   /* TRAP_ID_SYSCALL */ \
-        "    movi    r3,    %1\n\t"   /* __NR_##name     */ \
-        "    mov     r4,    %3\n\t"   /* (long) a        */ \
-        "    mov     r5,    %4\n\t"   /* (long) b        */ \
-        "    mov     r6,    %5\n\t"   /* (long) c        */ \
-        "    mov     r7,    %6\n\t"   /* (long) c        */ \
-        "    mov     r8,    %7\n\t"   /* (long) e        */ \
-                                                            \
-        "    trap\n\t"                                      \
-        "    mov     %0,    r2\n\t"   /* syscall rtn     */ \
-                                                            \
-        "    \n\t"                                          \
-                                                            \
-        :   "=r" (__res)              /* %0              */ \
-                                                            \
-        :   "i" (__NR_##name)         /* %1              */ \
-          , "i" (TRAP_ID_SYSCALL)     /* %2              */ \
-          , "r" ((long) a)            /* %3              */ \
-          , "r" ((long) b)            /* %4              */ \
-          , "r" ((long) c)            /* %5              */ \
-          , "r" ((long) d)            /* %6              */ \
-          , "r" ((long) e)            /* %7              */ \
-                                                            \
-        :   "r2"                      /* Clobbered       */ \
-          , "r3"                      /* Clobbered       */ \
-          , "r4"                      /* Clobbered       */ \
-          , "r5"                      /* Clobbered       */ \
-          , "r6"                      /* Clobbered       */ \
-          , "r7"                      /* Clobbered       */ \
-          , "r8"                      /* Clobbered       */ \
-        );                                                  \
-                                                            \
-__syscall_return(type,__res); \
-}
 
 
-#define _syscall6(type,name,atype,a,btype,b,ctype,c,dtype,d,etype,e,ftype,f) \
+#define ASM_ARGS_4		\
-type name (atype a,btype b,ctype c,dtype d,etype e,ftype f) \
+	ASM_ARGS_3		\
-{ \
+	"mov     r7,    %6\n\t"
-    long __res;                                             \
+#define MAP_ARGS_4(a, b, c, d)	\
-                                                            \
+	MAP_ARGS_3(a, b, c)	\
-    __asm__ __volatile__ (                                  \
+	, "r" ((long) d)
-                                                            \
+#define CLOB_ARGS_4		\
-        "    \n\t"                                          \
+	CLOB_ARGS_3		\
-                                                            \
+	, "r7"
-        "    movi    r2,    %2\n\t"   /* TRAP_ID_SYSCALL */ \
+
-        "    movi    r3,    %1\n\t"   /* __NR_##name     */ \
+#define ASM_ARGS_5		\
-        "    mov     r4,    %3\n\t"   /* (long) a        */ \
+	ASM_ARGS_4		\
-        "    mov     r5,    %4\n\t"   /* (long) b        */ \
+	"mov     r8,    %7\n\t"
-        "    mov     r6,    %5\n\t"   /* (long) c        */ \
+#define MAP_ARGS_5(a, b, c, d, e)	\
-        "    mov     r7,    %6\n\t"   /* (long) c        */ \
+	MAP_ARGS_4(a, b, c, d)		\
-        "    mov     r8,    %7\n\t"   /* (long) e        */ \
+	, "r" ((long) e)
-        "    mov     r9,    %8\n\t"   /* (long) f        */ \
+#define CLOB_ARGS_5		\
-                                                            \
+	CLOB_ARGS_4		\
-        "    trap\n\t"                                      \
+	, "r8"
-        "    mov     %0,    r2\n\t"   /* syscall rtn     */ \
+
-                                                            \
+#define ASM_ARGS_6		\
-        "    \n\t"                                          \
+	ASM_ARGS_5		\
-                                                            \
+	"mov     r9,    %8\n\t"
-        :   "=r" (__res)              /* %0              */ \
+#define MAP_ARGS_6(a, b, c, d, e, f)	\
-                                                            \
+	MAP_ARGS_5(a, b, c, d, e)	\
-        :   "i" (__NR_##name)         /* %1              */ \
+	, "r" ((long) f)
-          , "i" (TRAP_ID_SYSCALL)     /* %2              */ \
+#define CLOB_ARGS_6		\
-          , "r" ((long) a)            /* %3              */ \
+	CLOB_ARGS_5		\
-          , "r" ((long) b)            /* %4              */ \
+	, "r9"
-          , "r" ((long) c)            /* %5              */ \
-          , "r" ((long) d)            /* %6              */ \
-          , "r" ((long) e)            /* %7              */ \
-          , "r" ((long) f)            /* %8              */ \
-                                                            \
-        :   "r2"                      /* Clobbered       */ \
-          , "r3"                      /* Clobbered       */ \
-          , "r4"                      /* Clobbered       */ \
-          , "r5"                      /* Clobbered       */ \
-          , "r6"                      /* Clobbered       */ \
-          , "r7"                      /* Clobbered       */ \
-          , "r8"                      /* Clobbered       */ \
-          , "r9"                      /* Clobbered       */ \
-        );                                                  \
-                                                            \
-__syscall_return(type,__res); \
-}
 
 
 #endif /* __ASSEMBLER__ */
 #endif /* __ASSEMBLER__ */
 #endif /* _BITS_SYSCALLS_H */
 #endif /* _BITS_SYSCALLS_H */
-

+ 93 - 0
libc/sysdeps/linux/nios2/sys/user.h

@@ -0,0 +1,93 @@
+#ifndef _SYS_USER_H
+#define _SYS_USER_H     1
+
+/*
+   This file was taken from the nios2 port of the Linux Kernel.
+
+   Copyright (c) 2008 Atle Nissestad <atle@nissestad.no>
+   Copyright (c) 2010 Tobias Klauser <tklauser@distanz.ch>
+
+   This file is licensed under the terms of the GNU General Public License,
+   Version 2.
+ */
+
+#include <bits/uClibc_page.h>
+
+/* Core file format: The core file is written in such a way that gdb
+   can understand it and provide useful information to the user (under
+   linux we use the 'trad-core' bfd).  There are quite a number of
+   obstacles to being able to view the contents of the floating point
+   registers, and until these are solved you will not be able to view the
+   contents of them.  Actually, you can read in the core file and look at
+   the contents of the user struct to find out what the floating point
+   registers contain.
+   The actual file contents are as follows:
+   UPAGE: 1 page consisting of a user struct that tells gdb what is present
+   in the file.  Directly after this is a copy of the task_struct, which
+   is currently not used by gdb, but it may come in useful at some point.
+   All of the registers are stored as part of the upage.  The upage should
+   always be only one page.
+   DATA: The data area is stored.  We use current->end_text to
+   current->brk to pick up all of the user variables, plus any memory
+   that may have been malloced.  No attempt is made to determine if a page
+   is demand-zero or if a page is totally unused, we just cover the entire
+   range.  All of the addresses are rounded in such a way that an integral
+   number of pages is written.
+   STACK: We need the stack information in order to get a meaningful
+   backtrace.  We need to write the data from (esp) to
+   current->start_stack, so we round each of these off in order to be able
+   to write an integer number of pages.
+   The minimum core file size is 3 pages, or 12288 bytes.
+*/
+
+struct user_nios2fp_struct {
+};
+
+/* This is the old layout of "struct pt_regs" as of Linux 1.x, and
+   is still the layout used by user (the new pt_regs doesn't have
+   all registers). */
+struct user_regs_struct {
+	long r1,r2,r3,r4,r5,r6,r7,r8;
+	long r9,r10,r11,r12,r13,r14,r15;
+	long r16,r17,r18,r19,r20,r21,r22,r23;
+	long gp;
+	long sp;
+	long ra;
+	long fp;
+	long orig_r2;
+	long estatus;
+	long status_extension;
+	long ea;
+};
+
+/* When the kernel dumps core, it starts by dumping the user struct -
+   this will be used by gdb to figure out where the data and stack segments
+   are within the file, and what virtual addresses to use. */
+struct user {
+/* We start with the registers, to mimic the way that "memory" is returned
+   from the ptrace(3,...) function.  */
+	struct user_regs_struct regs;	/* Where the registers are actually stored */
+
+/* The rest of this junk is to help gdb figure out what goes where */
+	unsigned long int u_tsize;	/* Text segment size (pages). */
+	unsigned long int u_dsize;	/* Data segment size (pages). */
+	unsigned long int u_ssize;	/* Stack segment size (pages). */
+	unsigned long start_code;	/* Starting virtual address of text. */
+	unsigned long start_stack;	/* Starting virtual address of stack area.
+					   This is actually the bottom of the stack,
+					   the top of the stack is always found in the
+					   esp register.  */
+	long int signal;		/* Signal that caused the core dump. */
+	int reserved;			/* No longer used */
+	unsigned long u_ar0;		/* Used by gdb to help find the values for */
+					/* the registers. */
+	unsigned long magic;		/* To uniquely identify a core file */
+	char u_comm[32];		/* User command that was responsible */
+};
+
+#define NBPG PAGE_SIZE
+#define UPAGES 1
+#define HOST_TEXT_START_ADDR (u.start_code)
+#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
+
+#endif

+ 2 - 2
libc/termios/Makefile.in

@@ -15,7 +15,7 @@ TERMIOS_OBJ := $(patsubst $(TERMIOS_DIR)/%.c,$(TERMIOS_OUT)/%.o,$(TERMIOS_SRC))
 
 
 libc-y += $(TERMIOS_OBJ)
 libc-y += $(TERMIOS_OBJ)
 
 
-objclean-y += termios_clean
+objclean-y += CLEAN_libc/termios
 
 
-termios_clean:
+CLEAN_libc/termios:
 	$(do_rm) $(addprefix $(TERMIOS_OUT)/*., o os)
 	$(do_rm) $(addprefix $(TERMIOS_OUT)/*., o os)

+ 2 - 2
libc/unistd/Makefile.in

@@ -46,7 +46,7 @@ UNISTD_OBJ := $(patsubst %.c,$(UNISTD_OUT)/%.o,$(CSRC))
 
 
 libc-y += $(UNISTD_OBJ)
 libc-y += $(UNISTD_OBJ)
 
 
-objclean-y += unistd_clean
+objclean-y += CLEAN_libc/unistd
 
 
-unistd_clean:
+CLEAN_libc/unistd:
 	$(do_rm) $(addprefix $(UNISTD_OUT)/*., o os)
 	$(do_rm) $(addprefix $(UNISTD_OUT)/*., o os)

+ 2 - 2
libcrypt/Makefile.in

@@ -34,7 +34,7 @@ libcrypt-so-y := $(libcrypt_OBJ:.o=.os)
 
 
 lib-a-$(UCLIBC_HAS_CRYPT)  += $(top_builddir)lib/libcrypt.a
 lib-a-$(UCLIBC_HAS_CRYPT)  += $(top_builddir)lib/libcrypt.a
 lib-so-$(UCLIBC_HAS_CRYPT) += $(top_builddir)lib/libcrypt.so
 lib-so-$(UCLIBC_HAS_CRYPT) += $(top_builddir)lib/libcrypt.so
-objclean-y += libcrypt_clean
+objclean-y += CLEAN_libcrypt
 
 
 ifeq ($(DOMULTI),n)
 ifeq ($(DOMULTI),n)
 ifeq ($(DOPIC),y)
 ifeq ($(DOPIC),y)
@@ -61,5 +61,5 @@ $(top_builddir)lib/libcrypt.a: $(libcrypt-a-y)
 	$(Q)$(RM) $@
 	$(Q)$(RM) $@
 	$(do_ar)
 	$(do_ar)
 
 
-libcrypt_clean:
+CLEAN_libcrypt:
 	$(do_rm) $(addprefix $(libcrypt_OUT)/*., o os oS a)
 	$(do_rm) $(addprefix $(libcrypt_OUT)/*., o os oS a)

+ 2 - 2
libintl/Makefile.in

@@ -39,7 +39,7 @@ libintl-so-y := $(libintl_MOBJ:.o=.os)
 
 
 lib-a-$(UCLIBC_HAS_GETTEXT_AWARENESS) += $(top_builddir)lib/libintl.a
 lib-a-$(UCLIBC_HAS_GETTEXT_AWARENESS) += $(top_builddir)lib/libintl.a
 lib-so-$(UCLIBC_HAS_GETTEXT_AWARENESS) += $(top_builddir)lib/libintl.so
 lib-so-$(UCLIBC_HAS_GETTEXT_AWARENESS) += $(top_builddir)lib/libintl.so
-objclean-y += libintl_clean
+objclean-y += CLEAN_libintl
 
 
 ifeq ($(DOMULTI),n)
 ifeq ($(DOMULTI),n)
 ifeq ($(DOPIC),y)
 ifeq ($(DOPIC),y)
@@ -72,5 +72,5 @@ $(libintl_MOBJ): $(libintl_MSRC)
 $(libintl_MOBJ:.o=.os): $(libintl_MSRC)
 $(libintl_MOBJ:.o=.os): $(libintl_MSRC)
 	$(compile.m)
 	$(compile.m)
 
 
-libintl_clean:
+CLEAN_libintl:
 	$(do_rm) $(addprefix $(libintl_OUT)/*., o os oS a)
 	$(do_rm) $(addprefix $(libintl_OUT)/*., o os oS a)

+ 2 - 2
libm/Makefile.in

@@ -270,7 +270,7 @@ libm-so-y += $(libm_OBJS:.o=.os)
 
 
 lib-a-$(UCLIBC_HAS_FLOATS) += $(top_builddir)lib/libm.a
 lib-a-$(UCLIBC_HAS_FLOATS) += $(top_builddir)lib/libm.a
 lib-so-$(UCLIBC_HAS_FLOATS) += $(top_builddir)lib/libm.so
 lib-so-$(UCLIBC_HAS_FLOATS) += $(top_builddir)lib/libm.so
-objclean-y += libm_clean
+objclean-y += CLEAN_libm
 
 
 ifeq ($(DOMULTI),n)
 ifeq ($(DOMULTI),n)
 ifeq ($(DOPIC),y)
 ifeq ($(DOPIC),y)
@@ -316,5 +316,5 @@ $(libm_MOBJ_FL:.o=.i): $(libm_MSRC_FL)
 $(libm_MOBJ_LD:.o=.i): $(libm_MSRC_LD)
 $(libm_MOBJ_LD:.o=.i): $(libm_MSRC_LD)
 	$(compile.mi)
 	$(compile.mi)
 
 
-libm_clean:
+CLEAN_libm:
 	$(do_rm) $(addprefix $(libm_OUT)/,$(foreach e, o os oS a,$(foreach d, *. */*. */*/*.,$(d)$(e))))
 	$(do_rm) $(addprefix $(libm_OUT)/,$(foreach e, o os oS a,$(foreach d, *. */*. */*/*.,$(d)$(e))))

+ 2 - 2
libnsl/Makefile.in

@@ -30,7 +30,7 @@ libnsl-so-y := $(libnsl_OBJ:.o=.os)
 
 
 lib-a-$(UCLIBC_HAS_LIBNSL_STUB) += $(top_builddir)lib/libnsl.a
 lib-a-$(UCLIBC_HAS_LIBNSL_STUB) += $(top_builddir)lib/libnsl.a
 lib-so-$(UCLIBC_HAS_LIBNSL_STUB) += $(top_builddir)lib/libnsl.so
 lib-so-$(UCLIBC_HAS_LIBNSL_STUB) += $(top_builddir)lib/libnsl.so
-objclean-y += libnsl_clean
+objclean-y += CLEAN_libnsl
 
 
 ifeq ($(DOPIC),y)
 ifeq ($(DOPIC),y)
 $(top_builddir)lib/libnsl.so: $(top_builddir)lib/libnsl.a $(libc.depend)
 $(top_builddir)lib/libnsl.so: $(top_builddir)lib/libnsl.a $(libc.depend)
@@ -48,5 +48,5 @@ $(top_builddir)lib/libnsl.a: $(libnsl-a-y)
 	$(Q)$(RM) $@
 	$(Q)$(RM) $@
 	$(do_ar)
 	$(do_ar)
 
 
-libnsl_clean:
+CLEAN_libnsl:
 	$(do_rm) $(addprefix $(libnsl_OUT)/*., o os a)
 	$(do_rm) $(addprefix $(libnsl_OUT)/*., o os a)

+ 4 - 4
libpthread/linuxthreads.old/Makefile.in

@@ -117,10 +117,10 @@ linuxthreads_headers := $(top_builddir)include/pthread.h \
 $(linuxthreads_headers): $(wildcard $(addprefix $(top_builddir)include/config/linuxthreads/,old.h new.h))
 $(linuxthreads_headers): $(wildcard $(addprefix $(top_builddir)include/config/linuxthreads/,old.h new.h))
 headers-$(UCLIBC_HAS_THREADS) += $(linuxthreads_headers)
 headers-$(UCLIBC_HAS_THREADS) += $(linuxthreads_headers)
 
 
-objclean-y += libpthread_clean
+objclean-y += CLEAN_libpthread/linuxthreads.old
-headers_clean-y += linuxthreads_headers_clean
+headers_clean-y += HEADERCLEAN_libpthread/linuxthreads.old
-linuxthreads_headers_clean:
+HEADERCLEAN_libpthread/linuxthreads.old:
 	$(do_rm) $(linuxthreads_headers)
 	$(do_rm) $(linuxthreads_headers)
 
 
-libpthread_clean:
+CLEAN_libpthread/linuxthreads.old:
 	$(do_rm) $(addprefix $(libpthread_OUT)/*., o os oS a)
 	$(do_rm) $(addprefix $(libpthread_OUT)/*., o os oS a)

+ 2 - 2
libpthread/linuxthreads.old/sysdeps/sh64/Makefile.arch

@@ -17,7 +17,7 @@ libpthread-so-y+=$(libpthread_ARCH_OBJ:.o=.os)
 
 
 libpthread-multi-y+=$(libpthread_ARCH_SRC)
 libpthread-multi-y+=$(libpthread_ARCH_SRC)
 
 
-objclean-y+=libpthread_arch_clean
+objclean-y += CLEAN_$($(top_builddir),,$(libpthread_ARCH_OUT))
 
 
 # We need to build as SHcompact for tas..
 # We need to build as SHcompact for tas..
 $(libpthread_ARCH_OBJ): %.o : %.c
 $(libpthread_ARCH_OBJ): %.o : %.c
@@ -26,5 +26,5 @@ $(libpthread_ARCH_OBJ): %.o : %.c
 $(libpthread_ARCH_OBJ:.o=.os): %.os : %.c
 $(libpthread_ARCH_OBJ:.o=.os): %.os : %.c
 	$(compile.c:32media=compact)
 	$(compile.c:32media=compact)
 
 
-libpthread_arch_clean:
+CLEAN_$($(top_builddir),,$(libpthread_ARCH_OUT)):
 	$(do_rm) $(addprefix $(libpthread_ARCH_OUT)/*., o os)
 	$(do_rm) $(addprefix $(libpthread_ARCH_OUT)/*., o os)

+ 4 - 4
libpthread/linuxthreads.old_db/Makefile.in

@@ -68,11 +68,11 @@ linuxthreads_db_headers := $(top_builddir)include/thread_db.h
 $(linuxthreads_db_headers): $(wildcard $(addprefix $(top_builddir)include/config/linuxthreads/,old.h new.h))
 $(linuxthreads_db_headers): $(wildcard $(addprefix $(top_builddir)include/config/linuxthreads/,old.h new.h))
 headers-$(PTHREADS_DEBUG_SUPPORT) += $(linuxthreads_db_headers)
 headers-$(PTHREADS_DEBUG_SUPPORT) += $(linuxthreads_db_headers)
 
 
-objclean-y += libthread_db_clean
+objclean-y += CLEAN_libpthread/linuxthreads.old_db
-headers_clean-y += linuxthreads_db_headers_clean
+headers_clean-y += HEADERCLEAN_libpthread/linuxthreads.old_db
 
 
-linuxthreads_db_headers_clean:
+HEADERCLEAN_libpthread/linuxthreads.old_db:
 	$(do_rm) $(linuxthreads_db_headers)
 	$(do_rm) $(linuxthreads_db_headers)
 
 
-libthread_db_clean:
+CLEAN_libpthread/linuxthreads.old_db:
 	$(do_rm) $(addprefix $(libthread_db_OUT)/*., o os oS a)
 	$(do_rm) $(addprefix $(libthread_db_OUT)/*., o os oS a)

+ 4 - 4
libpthread/linuxthreads/Makefile.in

@@ -132,10 +132,10 @@ linuxthreads_headers := $(top_builddir)include/pthread.h \
 $(linuxthreads_headers): $(wildcard $(addprefix $(top_builddir)include/config/linuxthreads/,old.h new.h))
 $(linuxthreads_headers): $(wildcard $(addprefix $(top_builddir)include/config/linuxthreads/,old.h new.h))
 headers-$(UCLIBC_HAS_THREADS) += $(linuxthreads_headers)
 headers-$(UCLIBC_HAS_THREADS) += $(linuxthreads_headers)
 
 
-objclean-y += libpthread_clean
+objclean-y += CLEAN_libpthread/linuxthreads
-headers_clean-y += linuxthreads_headers_clean
+headers_clean-y += HEADERCLEAN_libpthread/linuxthreads
-linuxthreads_headers_clean:
+HEADERCLEAN_libpthread/linuxthreads:
 	$(do_rm) $(linuxthreads_headers)
 	$(do_rm) $(linuxthreads_headers)
 
 
-libpthread_clean:
+CLEAN_libpthread/linuxthreads:
 	$(do_rm) $(addprefix $(libpthread_OUT)/,$(foreach e, o os oS a,$(foreach d, *. */*. */*/*. */*/*/*.,$(d)$(e))))
 	$(do_rm) $(addprefix $(libpthread_OUT)/,$(foreach e, o os oS a,$(foreach d, *. */*. */*/*. */*/*/*.,$(d)$(e))))

+ 4 - 4
libpthread/linuxthreads_db/Makefile.in

@@ -68,11 +68,11 @@ linuxthreads_db_headers := $(top_builddir)include/thread_db.h
 $(linuxthreads_db_headers): $(wildcard $(addprefix $(top_builddir)include/config/linuxthreads/,old.h new.h))
 $(linuxthreads_db_headers): $(wildcard $(addprefix $(top_builddir)include/config/linuxthreads/,old.h new.h))
 headers-$(PTHREADS_DEBUG_SUPPORT) += $(linuxthreads_db_headers)
 headers-$(PTHREADS_DEBUG_SUPPORT) += $(linuxthreads_db_headers)
 
 
-objclean-y += libthread_db_clean
+objclean-y += CLEAN_libpthread/linuxthreads_db
-headers_clean-y += linuxthreads_db_headers_clean
+headers_clean-y += HEADERCLEAN_libpthread/linuxthreads_db
 
 
-linuxthreads_db_headers_clean:
+HEADERCLEAN_libpthread/linuxthreads_db:
 	$(do_rm) $(linuxthreads_db_headers)
 	$(do_rm) $(linuxthreads_db_headers)
 
 
-libthread_db_clean:
+CLEAN_libpthread/linuxthreads_db:
 	$(do_rm) $(addprefix $(libthread_db_OUT)/*., o os oS a)
 	$(do_rm) $(addprefix $(libthread_db_OUT)/*., o os oS a)

+ 2 - 2
libresolv/Makefile.in

@@ -30,7 +30,7 @@ libresolv-so-y := $(libresolv_OBJ:.o=.os)
 
 
 lib-a-$(UCLIBC_HAS_LIBRESOLV_STUB)  += $(top_builddir)lib/libresolv.a
 lib-a-$(UCLIBC_HAS_LIBRESOLV_STUB)  += $(top_builddir)lib/libresolv.a
 lib-so-$(UCLIBC_HAS_LIBRESOLV_STUB) += $(top_builddir)lib/libresolv.so
 lib-so-$(UCLIBC_HAS_LIBRESOLV_STUB) += $(top_builddir)lib/libresolv.so
-objclean-y += libresolv_clean
+objclean-y += CLEAN_libresolv
 
 
 ifeq ($(DOPIC),y)
 ifeq ($(DOPIC),y)
 $(top_builddir)lib/libresolv.so: $(top_builddir)lib/libresolv.a $(libc.depend)
 $(top_builddir)lib/libresolv.so: $(top_builddir)lib/libresolv.a $(libc.depend)
@@ -48,5 +48,5 @@ $(top_builddir)lib/libresolv.a: $(libresolv-a-y)
 	$(Q)$(RM) $@
 	$(Q)$(RM) $@
 	$(do_ar)
 	$(do_ar)
 
 
-libresolv_clean:
+CLEAN_libresolv:
 	$(do_rm) $(addprefix $(libresolv_OUT)/*., o os a)
 	$(do_rm) $(addprefix $(libresolv_OUT)/*., o os a)

+ 2 - 2
librt/Makefile.in

@@ -68,7 +68,7 @@ $(top_builddir)lib/librt.a: $(librt-a-y)
 	$(Q)$(RM) $@
 	$(Q)$(RM) $@
 	$(do_ar)
 	$(do_ar)
 
 
-objclean-y += librt_clean
+objclean-y += CLEAN_librt
 
 
-librt_clean:
+CLEAN_librt:
 	$(do_rm) $(addprefix $(librt_OUT)/*., o os oS a)
 	$(do_rm) $(addprefix $(librt_OUT)/*., o os oS a)

+ 2 - 2
libutil/Makefile.in

@@ -37,7 +37,7 @@ libutil-so-y := $(libutil_OBJ:.o=.os)
 
 
 lib-a-$(UCLIBC_HAS_LIBUTIL) += $(top_builddir)lib/libutil.a
 lib-a-$(UCLIBC_HAS_LIBUTIL) += $(top_builddir)lib/libutil.a
 lib-so-$(UCLIBC_HAS_LIBUTIL) += $(top_builddir)lib/libutil.so
 lib-so-$(UCLIBC_HAS_LIBUTIL) += $(top_builddir)lib/libutil.so
-objclean-y += libutil_clean
+objclean-y += CLEAN_libutil
 
 
 ifeq ($(DOMULTI),n)
 ifeq ($(DOMULTI),n)
 ifeq ($(DOPIC),y)
 ifeq ($(DOPIC),y)
@@ -64,5 +64,5 @@ $(top_builddir)lib/libutil.a: $(libutil-a-y)
 	$(Q)$(RM) $@
 	$(Q)$(RM) $@
 	$(do_ar)
 	$(do_ar)
 
 
-libutil_clean:
+CLEAN_libutil:
 	$(do_rm) $(addprefix $(libutil_OUT)/*., o os oS a)
 	$(do_rm) $(addprefix $(libutil_OUT)/*., o os oS a)

+ 1 - 1
test/Rules.mak

@@ -84,7 +84,7 @@ LDFLAGS += -B$(top_builddir)lib -Wl,-rpath,$(top_builddir)lib -Wl,-rpath-link,$(
 UCLIBC_LDSO_ABSPATH=$(shell pwd)
 UCLIBC_LDSO_ABSPATH=$(shell pwd)
 ifdef TEST_INSTALLED_UCLIBC
 ifdef TEST_INSTALLED_UCLIBC
 LDFLAGS += -Wl,-rpath,./
 LDFLAGS += -Wl,-rpath,./
-UCLIBC_LDSO_ABSPATH=$(SHARED_LIB_LOADER_PREFIX)
+UCLIBC_LDSO_ABSPATH=$(RUNTIME_PREFIX)$(MULTILIB_DIR)
 endif
 endif
 
 
 ifeq ($(findstring -static,$(LDFLAGS)),)
 ifeq ($(findstring -static,$(LDFLAGS)),)

+ 3 - 3
utils/Makefile.in

@@ -125,9 +125,9 @@ ifeq ($(UCLIBC_HAS_LOCALE),y)
 endif
 endif
 
 
 
 
-objclean-y += utils_clean
+objclean-y += CLEAN_utils
 
 
-utils_clean:
+CLEAN_utils:
 	$(do_rm) $(addprefix $(utils_OUT)/, ldconfig ldd iconv locale *.host)
 	$(do_rm) $(addprefix $(utils_OUT)/, ldconfig ldd iconv locale *.host)
-	# This is a hack..
+	$(Q)# This is a hack..
 	$(Q)$(RM) $(utils_OUT)/.*.dep
 	$(Q)$(RM) $(utils_OUT)/.*.dep