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 14 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.
       Otherwise you have to delete /var/run/utmp on x86_64 hosts when
       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
 

+ 1 - 2
Makefile.help

@@ -56,7 +56,6 @@ help:
 	@echo '			  (usually "/")'
 	@echo '  DEVEL_PREFIX=		- Prefix for the libdir containing static objects'
 	@echo '			  and the include dir (usually "/usr")'
-	@echo '  SHARED_LIB_LOADER_PREFIX=	- Directory where the shared loader resides.'
-	@echo '			  (usually "/lib")'
+	@echo '  MULTILIB_DIR=		- Directory component for libraries (default "lib").'
 	@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...
 #--------------------------------------------------------------
 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 \
 	defconfig allyesconfig allnoconfig \
 	release dist tags help
@@ -148,9 +148,9 @@ endif
 
 $(target-headers-sysdep): | $(top_builddir)include/bits $(top_builddir)include/sys
 
-sysdep_common_headers-clean:
-	$(RM) $(ALL_HEADERS_COMMON)
-headers_clean-y += sysdep_common_headers-clean
+HEADERCLEAN_common:
+	$(do_rm) $(ALL_HEADERS_COMMON)
+headers_clean-y += HEADERCLEAN_common
 
 # The headers. Arch specific headers are specified via ARCH_HEADERS in
 # libc/sysdeps/linux/$(TARGET_ARCH)/Makefile.arch which appends those via
@@ -194,9 +194,10 @@ $(LOCAL_INSTALL_PATH):
 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)
 
 # 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:
 	### ucontext.h
 
-install_headers: headers $(top_builddir)extra/scripts/unifdef
-	$(INSTALL) -d $(PREFIX)$(DEVEL_PREFIX)include
+ifneq ($(findstring install,$(MAKECMDGOALS)),)
+$(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_srcdir)extra/scripts/install_headers.sh include $(PREFIX)$(DEVEL_PREFIX)include
 	cd $(PREFIX)$(DEVEL_PREFIX)include && $(RM) -r $(HEADERS_RM-)
@@ -300,77 +305,75 @@ else
 endif
 
 # Installs development library links.
-install_dev: install_headers install_runtime
-	$(INSTALL) -d $(PREFIX)$(DEVEL_PREFIX)lib
-	-$(INSTALL) -m 644 lib/*.[ao] $(PREFIX)$(DEVEL_PREFIX)lib/
+install_dev: install_headers install_runtime | $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)
+	-$(INSTALL) -m 644 $(top_builddir)lib/*.[ao] $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/
 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 \
 		$(LN) -sf $(RUNTIME_PREFIX_LIB_FROM_DEVEL_PREFIX_LIB)$$i.$(MAJOR_VERSION) \
-		$(PREFIX)$(DEVEL_PREFIX)lib/$$i; \
+		$(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/$$i; \
 	done
 ifeq ($(HARDWIRED_ABSPATH),y)
-	if [ -f $(top_builddir)lib/libc.so -a -f $(PREFIX)$(RUNTIME_PREFIX)lib/$(SHARED_MAJORNAME) ] ; then \
-		$(RM) $(PREFIX)$(DEVEL_PREFIX)lib/libc.so; \
-		$(SED) -e 's:$(NONSHARED_LIBNAME):$(DEVEL_PREFIX)lib/$(NONSHARED_LIBNAME):' \
-		    -e 's:$(SHARED_MAJORNAME):$(RUNTIME_PREFIX)lib/$(SHARED_MAJORNAME):' \
-		    -e 's:$(UCLIBC_LDSO):$(RUNTIME_PREFIX)lib/$(UCLIBC_LDSO):' \
-		    $(top_builddir)lib/libc.so > $(PREFIX)$(DEVEL_PREFIX)lib/libc.so; \
+	if [ -f $(top_builddir)lib/libc.so -a -f $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(SHARED_MAJORNAME) ] ; then \
+		$(RM) $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so; \
+		$(SED) -e 's:$(NONSHARED_LIBNAME):$(DEVEL_PREFIX)$(MULTILIB_DIR)/$(NONSHARED_LIBNAME):' \
+		    -e 's:$(SHARED_MAJORNAME):$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(SHARED_MAJORNAME):' \
+		    -e 's:$(UCLIBC_LDSO):$(RUNTIME_PREFIX)$(MULTILIB_DIR)/$(UCLIBC_LDSO):' \
+		    $(top_builddir)lib/libc.so > $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libc.so; \
 	fi
 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
 ifeq ($(UCLIBC_HAS_THREADS),y)
 ifneq ($(LINUXTHREADS_OLD),y)
 ifeq ($(HARDWIRED_ABSPATH),y)
-	if [ -f $(top_builddir)lib/libpthread.so -a -f $(PREFIX)$(RUNTIME_PREFIX)lib/libpthread.so.$(MAJOR_VERSION) ] ; then \
-		$(RM) $(PREFIX)$(DEVEL_PREFIX)lib/libpthread.so; \
-		cp $(top_srcdir)extra/scripts/format.lds $(PREFIX)$(DEVEL_PREFIX)lib/libpthread.so; \
-		echo "GROUP ( $(RUNTIME_PREFIX)lib/libpthread.so.$(MAJOR_VERSION) $(DEVEL_PREFIX)lib/libpthread_nonshared.a )" \
-			>> $(PREFIX)$(DEVEL_PREFIX)lib/libpthread.so; \
+	if [ -f $(top_builddir)lib/libpthread.so -a -f $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)/libpthread.so.$(MAJOR_VERSION) ] ; then \
+		$(RM) $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libpthread.so; \
+		cp $(top_srcdir)extra/scripts/format.lds $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libpthread.so; \
+		echo "GROUP ( $(RUNTIME_PREFIX)$(MULTILIB_DIR)/libpthread.so.$(MAJOR_VERSION) $(DEVEL_PREFIX)$(MULTILIB_DIR)/libpthread_nonshared.a )" \
+			>> $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/libpthread.so; \
 	fi
 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
 ifeq ($(PTHREADS_DEBUG_SUPPORT),y)
 	$(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
 ifeq ($(DOPIC),y)
 #	# If we build shared libraries then the static libs are PIC...
 #	# Make _pic.a symlinks to make mklibs.py and similar tools happy.
-	if [ -d lib ] ; then \
-		for i in `find lib/ -type f -name 'lib*.a' | $(SED) -e 's/lib\///'` ; do \
-			$(LN) -sf $$i $(PREFIX)$(DEVEL_PREFIX)lib/`echo $$i \
+	if [ -d $(top_builddir)lib ] ; then \
+		for i in `cd $(top_builddir) && find lib/ -type f -name 'lib*.a' | $(SED) -e 's/lib\///'` ; do \
+			$(LN) -sf $$i $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR)/`echo $$i \
 				| $(SED) -e 's/\.a$$/_pic.a/'`; \
 		done ; \
 	fi
 endif
 endif
 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 \
-			$(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$$//'` \
-			  $(PREFIX)$(DEVEL_PREFIX)lib; \
+			  $(PREFIX)$(DEVEL_PREFIX)$(MULTILIB_DIR); \
 		fi; \
 	done
 endif
 
 # Installs run-time libraries
-install_runtime: all
+install_runtime: all | $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)
 ifeq ($(HAVE_SHARED),y)
-	$(INSTALL) -d $(PREFIX)$(RUNTIME_PREFIX)lib
-	$(INSTALL) -m 755 lib/lib*-$(VERSION).so \
-		$(PREFIX)$(RUNTIME_PREFIX)lib
-	(cd lib && $(TAR) -cf - *.so.*) | $(TAR) -xf - -C $(PREFIX)$(RUNTIME_PREFIX)lib
-	@if [ -x lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so ] ; then \
+	$(INSTALL) -m 755 $(top_builddir)lib/lib*-$(VERSION).so \
+		$(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)
+	(cd $(top_builddir)lib && $(TAR) -cf - *.so.*) | $(TAR) -xf - -C $(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR)
+	@if [ -x $(top_builddir)lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so ] ; then \
 		set -e; \
 		$(SHELL_SET_X); \
-		$(INSTALL) -m 755 lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so \
-			$(PREFIX)$(RUNTIME_PREFIX)lib; \
+		$(INSTALL) -m 755 $(top_builddir)lib/$(UCLIBC_LDSO_NAME)-$(VERSION).so \
+			$(PREFIX)$(RUNTIME_PREFIX)$(MULTILIB_DIR); \
 	fi
 endif
 
@@ -446,7 +449,7 @@ include_clean:
 
 clean: include_clean
 	$(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
 	@$(RM) $(top_builddir)include/linux $(top_builddir)include/asm*
 	$(Q)$(RM) $(top_builddir)extra/scripts/unifdef
@@ -459,11 +462,12 @@ distclean: clean
 	$(MAKE) -C extra/config distclean
 
 dist release:
-	$(RM) -r ../uClibc-$(VERSION) ../uClibc-$(VERSION).tar.bz2
-	mkdir -p ../uClibc-$(VERSION)
-	git archive HEAD |(cd  ../uClibc-$(VERSION) && $(TAR) xf -)
-	$(TAR) cjf ../uClibc-$(VERSION).tar.bz2 -C .. uClibc-$(VERSION)
-	du -b ../uClibc-$(VERSION).tar.bz2
+	$(RM) ../uClibc-$(VERSION).tar
+	git archive HEAD --format=tar --prefix=uClibc-$(VERSION)/ \
+		> ../uClibc-$(VERSION).tar
+	cat ../uClibc-$(VERSION).tar | bzip2 -c9 > ../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
 	$(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_gen       = echo "  "GEN $(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.i = true
@@ -181,6 +181,9 @@ maybe_exec = \
 		$(cmd_$(1)); \
 		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
 
@@ -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.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_t_strip   = $(STRIPTOOL) $(STRIP_FLAGS) $@
 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 "#include <features.h>" >> $@
 	$(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
 	$(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))
 RUNTIME_PREFIX:=$(strip $(subst //,/, $(subst ,/, $(call qstrip,$(RUNTIME_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)))))
-export RUNTIME_PREFIX DEVEL_PREFIX KERNEL_HEADERS
+export RUNTIME_PREFIX DEVEL_PREFIX KERNEL_HEADERS MULTILIB_DIR
 
 
 # Now config hard core
 MAJOR_VERSION := 0
 MINOR_VERSION := 9
-SUBLEVEL      := 30
+SUBLEVEL      := 32
 EXTRAVERSION  :=-git
 VERSION       := $(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL)
 ifneq ($(EXTRAVERSION),)

+ 16 - 59
extra/Configs/Config.in

@@ -254,7 +254,7 @@ config ARCH_HAS_NO_LDSO
 	default n
 
 config HAVE_SHARED
-	bool "Enable support for shared libraries"
+	bool "Enable shared libraries"
 	depends on !ARCH_HAS_NO_SHARED
 	default y
 	help
@@ -286,7 +286,7 @@ config LDSO_LDD_SUPPORT
 	  Enable all the code needed to support traditional ldd,
 	  which executes the shared library loader to resolve all dependencies
 	  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.
 	  Most people will answer Y.
 
@@ -401,7 +401,6 @@ config LDSO_GNU_HASH_SUPPORT
 
 choice
 	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
 	help
 	  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
 	  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
 
 config UCLIBC_HAS_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
 	bool "Build pthreads debugging support"
 	default n
@@ -1747,14 +1715,6 @@ config UCLIBC_HAS_GNU_GETOPT
 
 	  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
 	bool "Support getopt_long/getopt_long_only"
 	depends on !UCLIBC_HAS_GNU_GETOPT
@@ -1891,23 +1851,6 @@ endmenu
 
 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
 	string "uClibc runtime library directory"
 	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
 	  '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
 	bool "Hardwire absolute paths into linker scripts"
 	default y

+ 2 - 0
extra/config/confdata.c

@@ -402,6 +402,8 @@ int conf_write(const char *name)
 	char *env;
 
 	dirname[0] = 0;
+	if (name == NULL)
+		name = conf_get_configname();
 	if (name && name[0]) {
 		struct stat st;
 		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}' \
 		$< > $@
 
-objclean-y += locale_clean
+objclean-y += CLEAN_extra/locale
 
 # 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) \
 		$(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)
 
 lib-so-y += $(ldso)
-objclean-y += $(UCLIBC_LDSO_NAME)_clean
+objclean-y += CLEAN_ldso/ldso
 
 $(ldso): $(ldso:.$(MAJOR_VERSION)=)
 $(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) $@
 	$(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))))

+ 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-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)
 	$(call link.so,$(libdl_FULL_NAME),$(MAJOR_VERSION))
@@ -55,5 +55,5 @@ $(top_builddir)lib/libdl.a: $(libdl-a-y)
 	$(Q)$(RM) $@
 	$(do_ar)
 
-libdl_clean:
+CLEAN_ldso/libdl:
 	$(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-gdb-y += $(top_builddir)lib/libc.gdb
 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'
 
@@ -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)
 	$(call link-flat.so,$(@:.gdb=),$(UCLIBC_SHARED_FLAT_ID))
 
-libc_clean:
+CLEAN_libc:
 	$(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)
 
-objclean-y += inet_clean
+objclean-y += CLEAN_libc/inet
 
-inet_clean:
+CLEAN_libc/inet:
 	$(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;
 
 		/* send packet */
-		DPRINTF("On try %d, sending query to port %d\n",
-				retries_left, NAMESERVER_PORT);
+#ifdef DEBUG
+		{
+			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);
 		if (fd < 0) /* paranoia */
 			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)
 
-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)

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

@@ -17,7 +17,7 @@ MISC_ASSERT_OBJ := $(MISC_ASSERT_OUT)/__assert.o
 
 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)

+ 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)
 
-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)

+ 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)
 
-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)

+ 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-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)

+ 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)
 
-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)

+ 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
 
-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)

+ 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)
 
-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)

+ 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)
 
-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)

+ 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)
 
-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)

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

@@ -17,7 +17,7 @@ MISC_GNU_OBJ := $(MISC_GNU_OUT)/obstack.o
 
 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)

+ 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
 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)

+ 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)
 
-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)

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

@@ -17,7 +17,7 @@ MISC_MNTENT_OBJ := $(MISC_MNTENT_OUT)/mntent.o
 
 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)

+ 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)/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)

+ 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)
 
-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)

+ 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)
 
-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)

+ 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
 
-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)

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

@@ -19,7 +19,7 @@ ifeq ($(UCLIBC_HAS_SYSLOG),y)
 libc-y += $(MISC_SYSLOG_OBJ)
 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)

+ 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)
 
-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)

+ 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)
 
-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)

+ 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)
 
-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)

+ 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)
 
-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)

+ 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)
 
-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)

+ 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)
 
-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)

+ 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)
 
-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)

+ 2 - 2
libc/pwd_grp/Makefile.in

@@ -27,7 +27,7 @@ PWDGRP_OBJ := $(patsubst %.c,$(PWDGRP_OUT)/%.o,$(CSRC))
 
 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)

+ 2 - 2
libc/signal/Makefile.in

@@ -32,7 +32,7 @@ SIGNAL_OBJ := $(patsubst %.c,$(SIGNAL_OUT)/%.o,$(CSRC-y))
 
 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)

+ 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
 endif
 
-objclean-y += stdio_clean
+objclean-y += CLEAN_libc/stdio
 
-stdio_clean:
+CLEAN_libc/stdio:
 	$(do_rm) $(addprefix $(STDIO_OUT)/*., o os oS)

+ 4 - 4
libc/stdio/_vfprintf.c

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

+ 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)
 
-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)

+ 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)
 
-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)

+ 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)
 
-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)
 
 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-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))

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

@@ -18,12 +18,12 @@ ARCH_OBJS := $(ARCH_COBJ) $(ARCH_SOBJ)
 crt-y          := FORCE
 libc-y         += $(ARCH_OBJS)
 libc-nomulti-y += $(ARCH_SOBJ)
-objclean-y     += arch_clean
+objclean-y     += CLEAN_$(subst $(top_builddir),,$(ARCH_OUT))
 
 CFLAGS-crti.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)
 
 ifneq ($(ARCH_HEADERS),)
@@ -34,8 +34,8 @@ $(ARCH_HEADERS_OUT):
 	$(do_ln) -fs $(call rel_srcdir)libc/sysdeps/linux/$(TARGET_ARCH)/$(@F) $@
 
 headers-y += $(ARCH_HEADERS_OUT)
-headers_clean-y += arch_headers_clean
-arch_headers_clean:
+headers_clean-y += HEADERCLEAN_$(subst $(top_builddir),,$(ARCH_OUT))
+HEADERCLEAN_$(subst $(top_builddir),,$(ARCH_OUT)):
 	$(RM) $(ARCH_HEADERS_OUT)
 
 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
 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)

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

@@ -46,6 +46,11 @@
 # define __ASSUME_GETCWD_SYSCALL	1
 #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.  */
 #if __LINUX_KERNEL_VERSION >= 131398
 # 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;
 }
 
-#if defined __UCLIBC_HAS_LFS__ && ! defined __NR_getdents64
-attribute_hidden strong_alias(__getdents,__getdents64)
-#endif
-
 #elif __WORDSIZE == 32
 
 extern __typeof(__getdents) __getdents64 attribute_hidden;
@@ -167,4 +163,8 @@ ssize_t __getdents (int fd, char *buf, size_t nbytes)
 
 #endif
 
+#if defined __UCLIBC_HAS_LFS__ && ! defined __NR_getdents64
+attribute_hidden strong_alias(__getdents,__getdents64)
+#endif
+
 #endif

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

@@ -19,6 +19,7 @@
 
 #include <sys/syscall.h>
 #include <sys/poll.h>
+#include <bits/kernel-features.h>
 
 #ifdef __UCLIBC_HAS_THREADS_NATIVE__
 #include <sysdep-cancel.h>
@@ -26,6 +27,8 @@
 #define SINGLE_THREAD_P 1
 #endif
 
+#if defined __ASSUME_POLL_SYSCALL && defined __NR_poll
+
 libc_hidden_proto(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_aligned	0x50
 #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.
-   Copyright (C) 2000 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2004 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    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_NOFOLLOW	0100000	/* Do not follow links.	 */
 # define O_DIRECT	0200000	/* Direct disk access.	*/
+# define O_NOATIME	01000000 /* Do not set atime.  */
+# define O_CLOEXEC	02000000 /* set close_on_exec */
 #endif
 
 /* 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_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_GETOWN	9	/* Set owner of socket (receiver of SIGIO).  */
 #endif

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

@@ -9,287 +9,98 @@
 #include <errno.h>
 #include <asm/traps.h>
 
-#define __syscall_return(type, res) \
-do { \
-	if ((unsigned long)(res) >= (unsigned long)(-125)) { \
-                                                                        \
-                /* avoid using res which is declared to be in           \
-                    register r2; errno might expand to a function       \
-                    call and clobber it.                          */    \
-                                                                        \
-		int __err = -(res); \
-		errno = __err; \
-		res = -1; \
-	} \
-	return (type) (res); \
-} while (0)
+#define __syscall_return(type, res)					\
+	do {								\
+		if (unlikely(INTERNAL_SYSCALL_ERROR_P(res, ))) {	\
+			__set_errno(INTERNAL_SYSCALL_ERRNO(res, ));	\
+			res = (unsigned long) -1;			\
+		}							\
+		return (type) (res);					\
+	} while (0)
 
-#define _syscall0(type,name) \
-type name(void) \
-{ \
-    long __res;                                             \
-                                                            \
-    __asm__ __volatile__ (                                  \
-                                                            \
-        "    \n\t"                                          \
-                                                            \
-        "    movi    r2,    %2\n\t"   /* TRAP_ID_SYSCALL */ \
-        "    movi    r3,    %1\n\t"   /* __NR_##name     */ \
-                                                            \
-        "    trap\n\t"                                      \
-        "    mov     %0,    r2\n\t"   /* syscall rtn     */ \
-                                                            \
-        "    \n\t"                                          \
-                                                            \
-        :   "=r" (__res)              /* %0              */ \
-                                                            \
-        :   "i" (__NR_##name)         /* %1              */ \
-          , "i" (TRAP_ID_SYSCALL)     /* %2              */ \
-                                                            \
-        :   "r2"                      /* Clobbered       */ \
-          , "r3"                      /* Clobbered       */ \
-        );                                                  \
-                                                            \
-__syscall_return(type,__res); \
-}
+#define INTERNAL_SYSCALL_NCS(name, err, nr, args...)			\
+	({								\
+		long __res;						\
+		__asm__ __volatile__ (					\
+			"movi    r2,    %2\n\t"   /* TRAP_ID_SYSCALL */ \
+			"movi    r3,    %1\n\t"   /* __NR_##name     */	\
+			ASM_ARGS_##nr					\
+			"trap\n\t"					\
+			"mov     %0,    r2\n\t"   /* syscall return  */	\
+			:   "=r" (__res)          /* %0              */	\
+			:   "i" (name)            /* %1              */	\
+			  , "i" (TRAP_ID_SYSCALL) /* %2              */	\
+			  MAP_ARGS_##nr (args)    /* %3-%8           */	\
+			:   "r2"					\
+			  , "r3"					\
+			  CLOB_ARGS_##nr          /* Clobbered       */ \
+		);							\
+		__res;							\
+	})
 
-#define _syscall1(type,name,atype,a) \
-type name(atype a) \
-{ \
-    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 INTERNAL_SYSCALL_ERROR_P(val, err)	\
+	((unsigned long)(val) >= (unsigned long)(-125))
 
-#define _syscall2(type,name,atype,a,btype,b) \
-type name(atype a,btype b) \
-{ \
-    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 ASM_ARGS_0
+#define MAP_ARGS_0()
+#define CLOB_ARGS_0
 
-#define _syscall3(type,name,atype,a,btype,b,ctype,c) \
-type name(atype a,btype b,ctype c) \
-{ \
-    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        */ \
-        "    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 ASM_ARGS_1		\
+	"mov     r4,    %3\n\t"
+#define MAP_ARGS_1(a)		\
+	, "r" ((long) a)
+#define CLOB_ARGS_1		\
+	, "r4"
 
-#define _syscall4(type,name,atype,a,btype,b,ctype,c,dtype,d) \
-type name (atype a, btype b, ctype c, dtype d) \
-{ \
-    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        */ \
-        "    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 ASM_ARGS_2		\
+	ASM_ARGS_1		\
+	"mov     r5,    %4\n\t"
+#define MAP_ARGS_2(a, b)	\
+	MAP_ARGS_1(a)		\
+	, "r" ((long) b)
+#define CLOB_ARGS_2		\
+	CLOB_ARGS_1		\
+	, "r5"
 
-#define _syscall5(type,name,atype,a,btype,b,ctype,c,dtype,d,etype,e) \
-type name (atype a,btype b,ctype c,dtype d,etype e) \
-{ \
-    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        */ \
-        "    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 ASM_ARGS_3		\
+	ASM_ARGS_2		\
+	"mov     r6,    %5\n\t"
+#define MAP_ARGS_3(a, b, c)	\
+	MAP_ARGS_2(a, b)	\
+	, "r" ((long) c)
+#define CLOB_ARGS_3		\
+	CLOB_ARGS_2		\
+	, "r6"
 
-#define _syscall6(type,name,atype,a,btype,b,ctype,c,dtype,d,etype,e,ftype,f) \
-type name (atype a,btype b,ctype c,dtype d,etype e,ftype f) \
-{ \
-    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        */ \
-        "    mov     r6,    %5\n\t"   /* (long) c        */ \
-        "    mov     r7,    %6\n\t"   /* (long) c        */ \
-        "    mov     r8,    %7\n\t"   /* (long) e        */ \
-        "    mov     r9,    %8\n\t"   /* (long) f        */ \
-                                                            \
-        "    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              */ \
-          , "r" ((long) f)            /* %8              */ \
-                                                            \
-        :   "r2"                      /* Clobbered       */ \
-          , "r3"                      /* Clobbered       */ \
-          , "r4"                      /* Clobbered       */ \
-          , "r5"                      /* Clobbered       */ \
-          , "r6"                      /* Clobbered       */ \
-          , "r7"                      /* Clobbered       */ \
-          , "r8"                      /* Clobbered       */ \
-          , "r9"                      /* Clobbered       */ \
-        );                                                  \
-                                                            \
-__syscall_return(type,__res); \
-}
+#define ASM_ARGS_4		\
+	ASM_ARGS_3		\
+	"mov     r7,    %6\n\t"
+#define MAP_ARGS_4(a, b, c, d)	\
+	MAP_ARGS_3(a, b, c)	\
+	, "r" ((long) d)
+#define CLOB_ARGS_4		\
+	CLOB_ARGS_3		\
+	, "r7"
+
+#define ASM_ARGS_5		\
+	ASM_ARGS_4		\
+	"mov     r8,    %7\n\t"
+#define MAP_ARGS_5(a, b, c, d, e)	\
+	MAP_ARGS_4(a, b, c, d)		\
+	, "r" ((long) e)
+#define CLOB_ARGS_5		\
+	CLOB_ARGS_4		\
+	, "r8"
+
+#define ASM_ARGS_6		\
+	ASM_ARGS_5		\
+	"mov     r9,    %8\n\t"
+#define MAP_ARGS_6(a, b, c, d, e, f)	\
+	MAP_ARGS_5(a, b, c, d, e)	\
+	, "r" ((long) f)
+#define CLOB_ARGS_6		\
+	CLOB_ARGS_5		\
+	, "r9"
 
 #endif /* __ASSEMBLER__ */
 #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)
 
-objclean-y += termios_clean
+objclean-y += CLEAN_libc/termios
 
-termios_clean:
+CLEAN_libc/termios:
 	$(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)
 
-objclean-y += unistd_clean
+objclean-y += CLEAN_libc/unistd
 
-unistd_clean:
+CLEAN_libc/unistd:
 	$(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-so-$(UCLIBC_HAS_CRYPT) += $(top_builddir)lib/libcrypt.so
-objclean-y += libcrypt_clean
+objclean-y += CLEAN_libcrypt
 
 ifeq ($(DOMULTI),n)
 ifeq ($(DOPIC),y)
@@ -61,5 +61,5 @@ $(top_builddir)lib/libcrypt.a: $(libcrypt-a-y)
 	$(Q)$(RM) $@
 	$(do_ar)
 
-libcrypt_clean:
+CLEAN_libcrypt:
 	$(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-so-$(UCLIBC_HAS_GETTEXT_AWARENESS) += $(top_builddir)lib/libintl.so
-objclean-y += libintl_clean
+objclean-y += CLEAN_libintl
 
 ifeq ($(DOMULTI),n)
 ifeq ($(DOPIC),y)
@@ -72,5 +72,5 @@ $(libintl_MOBJ): $(libintl_MSRC)
 $(libintl_MOBJ:.o=.os): $(libintl_MSRC)
 	$(compile.m)
 
-libintl_clean:
+CLEAN_libintl:
 	$(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-so-$(UCLIBC_HAS_FLOATS) += $(top_builddir)lib/libm.so
-objclean-y += libm_clean
+objclean-y += CLEAN_libm
 
 ifeq ($(DOMULTI),n)
 ifeq ($(DOPIC),y)
@@ -316,5 +316,5 @@ $(libm_MOBJ_FL:.o=.i): $(libm_MSRC_FL)
 $(libm_MOBJ_LD:.o=.i): $(libm_MSRC_LD)
 	$(compile.mi)
 
-libm_clean:
+CLEAN_libm:
 	$(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-so-$(UCLIBC_HAS_LIBNSL_STUB) += $(top_builddir)lib/libnsl.so
-objclean-y += libnsl_clean
+objclean-y += CLEAN_libnsl
 
 ifeq ($(DOPIC),y)
 $(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) $@
 	$(do_ar)
 
-libnsl_clean:
+CLEAN_libnsl:
 	$(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))
 headers-$(UCLIBC_HAS_THREADS) += $(linuxthreads_headers)
 
-objclean-y += libpthread_clean
-headers_clean-y += linuxthreads_headers_clean
-linuxthreads_headers_clean:
+objclean-y += CLEAN_libpthread/linuxthreads.old
+headers_clean-y += HEADERCLEAN_libpthread/linuxthreads.old
+HEADERCLEAN_libpthread/linuxthreads.old:
 	$(do_rm) $(linuxthreads_headers)
 
-libpthread_clean:
+CLEAN_libpthread/linuxthreads.old:
 	$(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)
 
-objclean-y+=libpthread_arch_clean
+objclean-y += CLEAN_$($(top_builddir),,$(libpthread_ARCH_OUT))
 
 # We need to build as SHcompact for tas..
 $(libpthread_ARCH_OBJ): %.o : %.c
@@ -26,5 +26,5 @@ $(libpthread_ARCH_OBJ): %.o : %.c
 $(libpthread_ARCH_OBJ:.o=.os): %.os : %.c
 	$(compile.c:32media=compact)
 
-libpthread_arch_clean:
+CLEAN_$($(top_builddir),,$(libpthread_ARCH_OUT)):
 	$(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))
 headers-$(PTHREADS_DEBUG_SUPPORT) += $(linuxthreads_db_headers)
 
-objclean-y += libthread_db_clean
-headers_clean-y += linuxthreads_db_headers_clean
+objclean-y += CLEAN_libpthread/linuxthreads.old_db
+headers_clean-y += HEADERCLEAN_libpthread/linuxthreads.old_db
 
-linuxthreads_db_headers_clean:
+HEADERCLEAN_libpthread/linuxthreads.old_db:
 	$(do_rm) $(linuxthreads_db_headers)
 
-libthread_db_clean:
+CLEAN_libpthread/linuxthreads.old_db:
 	$(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))
 headers-$(UCLIBC_HAS_THREADS) += $(linuxthreads_headers)
 
-objclean-y += libpthread_clean
-headers_clean-y += linuxthreads_headers_clean
-linuxthreads_headers_clean:
+objclean-y += CLEAN_libpthread/linuxthreads
+headers_clean-y += HEADERCLEAN_libpthread/linuxthreads
+HEADERCLEAN_libpthread/linuxthreads:
 	$(do_rm) $(linuxthreads_headers)
 
-libpthread_clean:
+CLEAN_libpthread/linuxthreads:
 	$(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))
 headers-$(PTHREADS_DEBUG_SUPPORT) += $(linuxthreads_db_headers)
 
-objclean-y += libthread_db_clean
-headers_clean-y += linuxthreads_db_headers_clean
+objclean-y += CLEAN_libpthread/linuxthreads_db
+headers_clean-y += HEADERCLEAN_libpthread/linuxthreads_db
 
-linuxthreads_db_headers_clean:
+HEADERCLEAN_libpthread/linuxthreads_db:
 	$(do_rm) $(linuxthreads_db_headers)
 
-libthread_db_clean:
+CLEAN_libpthread/linuxthreads_db:
 	$(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-so-$(UCLIBC_HAS_LIBRESOLV_STUB) += $(top_builddir)lib/libresolv.so
-objclean-y += libresolv_clean
+objclean-y += CLEAN_libresolv
 
 ifeq ($(DOPIC),y)
 $(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) $@
 	$(do_ar)
 
-libresolv_clean:
+CLEAN_libresolv:
 	$(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) $@
 	$(do_ar)
 
-objclean-y += librt_clean
+objclean-y += CLEAN_librt
 
-librt_clean:
+CLEAN_librt:
 	$(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-so-$(UCLIBC_HAS_LIBUTIL) += $(top_builddir)lib/libutil.so
-objclean-y += libutil_clean
+objclean-y += CLEAN_libutil
 
 ifeq ($(DOMULTI),n)
 ifeq ($(DOPIC),y)
@@ -64,5 +64,5 @@ $(top_builddir)lib/libutil.a: $(libutil-a-y)
 	$(Q)$(RM) $@
 	$(do_ar)
 
-libutil_clean:
+CLEAN_libutil:
 	$(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)
 ifdef TEST_INSTALLED_UCLIBC
 LDFLAGS += -Wl,-rpath,./
-UCLIBC_LDSO_ABSPATH=$(SHARED_LIB_LOADER_PREFIX)
+UCLIBC_LDSO_ABSPATH=$(RUNTIME_PREFIX)$(MULTILIB_DIR)
 endif
 
 ifeq ($(findstring -static,$(LDFLAGS)),)

+ 3 - 3
utils/Makefile.in

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