uClibc cleanup: - use full version string (0.9.30.1), instead of base (0.9.30) + extra (.1) - remove support for 0.9.28 and snapshots (building from SVN to be added later)
SVN-Revision: 15368
This commit is contained in:
		@@ -29,10 +29,6 @@ else
 | 
				
			|||||||
  LIBGCC_VERSION:=<LIBGCC_VERSION>
 | 
					  LIBGCC_VERSION:=<LIBGCC_VERSION>
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
ifneq ($(LIBC_VERSION),0.9.28)
 | 
					 | 
				
			||||||
  LIBC_VERSION:=$(LIBC_VERSION)$(LIBC_PATCHVER)
 | 
					 | 
				
			||||||
endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
CONFIG_PACKAGE_base-files$(TARGET):=$(CONFIG_PACKAGE_base-files)
 | 
					CONFIG_PACKAGE_base-files$(TARGET):=$(CONFIG_PACKAGE_base-files)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
define Package/base-files$(TARGET)
 | 
					define Package/base-files$(TARGET)
 | 
				
			||||||
@@ -216,10 +212,10 @@ use_nsswitch=$(if $(CONFIG_USE_GLIBC)$(CONFIG_EGLIBC_OPTION_EGLIBC_NSSWITCH),lib
 | 
				
			|||||||
define Package/glibc/install
 | 
					define Package/glibc/install
 | 
				
			||||||
	$(INSTALL_DIR) $(1)/lib
 | 
						$(INSTALL_DIR) $(1)/lib
 | 
				
			||||||
	$(CP) $(TOOLCHAIN_DIR)/lib/ld*.so.* $(1)/lib/
 | 
						$(CP) $(TOOLCHAIN_DIR)/lib/ld*.so.* $(1)/lib/
 | 
				
			||||||
	$(CP) $(TOOLCHAIN_DIR)/lib/ld-$(LIBC_VERSION).so $(1)/lib/
 | 
						$(CP) $(TOOLCHAIN_DIR)/lib/ld-$(LIBC_SO_VERSION).so $(1)/lib/
 | 
				
			||||||
	for file in libanl libc libcidn libcrypt libdl libm $(use_libnsl) $(use_nsswitch) libresolv $(use_libutil); do \
 | 
						for file in libanl libc libcidn libcrypt libdl libm $(use_libnsl) $(use_nsswitch) libresolv $(use_libutil); do \
 | 
				
			||||||
		$(CP) $(TOOLCHAIN_DIR)/lib/$$$$file.so.* $(1)/lib/; \
 | 
							$(CP) $(TOOLCHAIN_DIR)/lib/$$$$file.so.* $(1)/lib/; \
 | 
				
			||||||
		$(CP) $(TOOLCHAIN_DIR)/lib/$$$$file-$(LIBC_VERSION).so $(1)/lib/; \
 | 
							$(CP) $(TOOLCHAIN_DIR)/lib/$$$$file-$(LIBC_SO_VERSION).so $(1)/lib/; \
 | 
				
			||||||
	done
 | 
						done
 | 
				
			||||||
endef
 | 
					endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -231,7 +227,7 @@ define Package/uClibc/install
 | 
				
			|||||||
	$(INSTALL_DIR) $(1)/lib
 | 
						$(INSTALL_DIR) $(1)/lib
 | 
				
			||||||
	for file in ld$(LIB_SUFFIX)-uClibc libc libcrypt libdl libm libnsl libresolv libuClibc libutil; do \
 | 
						for file in ld$(LIB_SUFFIX)-uClibc libc libcrypt libdl libm libnsl libresolv libuClibc libutil; do \
 | 
				
			||||||
		$(CP) $(TOOLCHAIN_DIR)/lib/$$$$file.so.* $(1)/lib/; \
 | 
							$(CP) $(TOOLCHAIN_DIR)/lib/$$$$file.so.* $(1)/lib/; \
 | 
				
			||||||
		$(CP) $(TOOLCHAIN_DIR)/lib/$$$$file-$(LIBC_VERSION).so $(1)/lib/; \
 | 
							$(CP) $(TOOLCHAIN_DIR)/lib/$$$$file-$(LIBC_SO_VERSION).so $(1)/lib/; \
 | 
				
			||||||
	done
 | 
						done
 | 
				
			||||||
endef
 | 
					endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -242,13 +238,13 @@ endef
 | 
				
			|||||||
define Package/libpthread/install
 | 
					define Package/libpthread/install
 | 
				
			||||||
	$(INSTALL_DIR) $(1)/lib
 | 
						$(INSTALL_DIR) $(1)/lib
 | 
				
			||||||
	$(CP) $(TOOLCHAIN_DIR)/lib/libpthread.so.* $(1)/lib/
 | 
						$(CP) $(TOOLCHAIN_DIR)/lib/libpthread.so.* $(1)/lib/
 | 
				
			||||||
	$(CP) $(TOOLCHAIN_DIR)/lib/libpthread-$(LIBC_VERSION).so $(1)/lib/
 | 
						$(CP) $(TOOLCHAIN_DIR)/lib/libpthread-$(LIBC_SO_VERSION).so $(1)/lib/
 | 
				
			||||||
endef
 | 
					endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
define Package/librt/install
 | 
					define Package/librt/install
 | 
				
			||||||
	$(INSTALL_DIR) $(1)/lib
 | 
						$(INSTALL_DIR) $(1)/lib
 | 
				
			||||||
	$(CP) $(TOOLCHAIN_DIR)/lib/librt.so.* $(1)/lib/
 | 
						$(CP) $(TOOLCHAIN_DIR)/lib/librt.so.* $(1)/lib/
 | 
				
			||||||
	$(CP) $(TOOLCHAIN_DIR)/lib/librt-$(LIBC_VERSION).so $(1)/lib/
 | 
						$(CP) $(TOOLCHAIN_DIR)/lib/librt-$(LIBC_SO_VERSION).so $(1)/lib/
 | 
				
			||||||
endef
 | 
					endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
define Package/ldd/install
 | 
					define Package/ldd/install
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -77,7 +77,7 @@ define Host/SetToolchainInfo
 | 
				
			|||||||
	$(SED) 's,^\(LIBC_TYPE\)=.*,\1=$(PKG_NAME),' $(TOOLCHAIN_DIR)/info.mk
 | 
						$(SED) 's,^\(LIBC_TYPE\)=.*,\1=$(PKG_NAME),' $(TOOLCHAIN_DIR)/info.mk
 | 
				
			||||||
	$(SED) 's,^\(LIBC_URL\)=.*,\1=http://www.eglibc.org/,' $(TOOLCHAIN_DIR)/info.mk
 | 
						$(SED) 's,^\(LIBC_URL\)=.*,\1=http://www.eglibc.org/,' $(TOOLCHAIN_DIR)/info.mk
 | 
				
			||||||
	$(SED) 's,^\(LIBC_VERSION\)=.*,\1=$(PKG_VERSION),' $(TOOLCHAIN_DIR)/info.mk
 | 
						$(SED) 's,^\(LIBC_VERSION\)=.*,\1=$(PKG_VERSION),' $(TOOLCHAIN_DIR)/info.mk
 | 
				
			||||||
	$(SED) 's,^\(LIBC_PATCHVER\)=.*,\1=$(PKG_EXTRAVERSION),' $(TOOLCHAIN_DIR)/info.mk
 | 
						$(SED) 's,^\(LIBC_SO_VERSION\)=.*,\1=$(PKG_VERSION),' $(TOOLCHAIN_DIR)/info.mk
 | 
				
			||||||
endef
 | 
					endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
define Stage1/Configure
 | 
					define Stage1/Configure
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -88,7 +88,7 @@ define Host/SetToolchainInfo
 | 
				
			|||||||
	$(SED) 's,^\(LIBC_TYPE\)=.*,\1=$(PKG_NAME),' $(TOOLCHAIN_DIR)/info.mk
 | 
						$(SED) 's,^\(LIBC_TYPE\)=.*,\1=$(PKG_NAME),' $(TOOLCHAIN_DIR)/info.mk
 | 
				
			||||||
	$(SED) 's,^\(LIBC_URL\)=.*,\1=http://www.gnu.org/software/libc/,' $(TOOLCHAIN_DIR)/info.mk
 | 
						$(SED) 's,^\(LIBC_URL\)=.*,\1=http://www.gnu.org/software/libc/,' $(TOOLCHAIN_DIR)/info.mk
 | 
				
			||||||
	$(SED) 's,^\(LIBC_VERSION\)=.*,\1=$(PKG_VERSION),' $(TOOLCHAIN_DIR)/info.mk
 | 
						$(SED) 's,^\(LIBC_VERSION\)=.*,\1=$(PKG_VERSION),' $(TOOLCHAIN_DIR)/info.mk
 | 
				
			||||||
	$(SED) 's,^\(LIBC_PATCHVER\)=.*,\1=,' $(TOOLCHAIN_DIR)/info.mk
 | 
						$(SED) 's,^\(LIBC_SO_VERSION\)=.*,\1=$(PKG_VERSION),' $(TOOLCHAIN_DIR)/info.mk
 | 
				
			||||||
endef
 | 
					endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
define Stage1/Configure
 | 
					define Stage1/Configure
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,4 +3,4 @@ GCC_VERSION=unknown
 | 
				
			|||||||
LIBC_TYPE=unknown
 | 
					LIBC_TYPE=unknown
 | 
				
			||||||
LIBC_URL=unknown
 | 
					LIBC_URL=unknown
 | 
				
			||||||
LIBC_VERSION=unknown
 | 
					LIBC_VERSION=unknown
 | 
				
			||||||
LIBC_PATCHVER=
 | 
					LIBC_SO_VERSION=unknown
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,37 +7,15 @@ choice
 | 
				
			|||||||
	help
 | 
						help
 | 
				
			||||||
	  Select the version of uClibc you wish to use.
 | 
						  Select the version of uClibc you wish to use.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	config UCLIBC_VERSION_SNAPSHOT
 | 
					 | 
				
			||||||
		depends BROKEN
 | 
					 | 
				
			||||||
		bool "uClibc snapshot"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	config UCLIBC_VERSION_0_9_28
 | 
					 | 
				
			||||||
		bool "uClibc 0.9.28"
 | 
					 | 
				
			||||||
		depends !(mips64 || mips64el)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	config UCLIBC_VERSION_0_9_29
 | 
						config UCLIBC_VERSION_0_9_29
 | 
				
			||||||
		bool "uClibc 0.9.29"
 | 
							bool "uClibc 0.9.29"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	config UCLIBC_VERSION_0_9_30
 | 
						config UCLIBC_VERSION_0_9_30_1
 | 
				
			||||||
		bool "uClibc 0.9.30"
 | 
							bool "uClibc 0.9.30.1"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						config UCLIBC_VERSION_NPTL
 | 
				
			||||||
 | 
							bool "uClibc NPTL branch"
 | 
				
			||||||
 | 
							depends BROKEN
 | 
				
			||||||
 | 
					
 | 
				
			||||||
endchoice
 | 
					endchoice
 | 
				
			||||||
 | 
					
 | 
				
			||||||
config UCLIBC_VERSION_NPTL
 | 
					 | 
				
			||||||
	bool "Use NPTL branch"
 | 
					 | 
				
			||||||
	depends on TOOLCHAINOPTS && USE_UCLIBC
 | 
					 | 
				
			||||||
	depends on UCLIBC_VERSION_0_9_30
 | 
					 | 
				
			||||||
	depends BROKEN
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
config UCLIBC_EXTRA_VERSION
 | 
					 | 
				
			||||||
	string
 | 
					 | 
				
			||||||
	prompt "Extra uClibc version"
 | 
					 | 
				
			||||||
	depends on TOOLCHAINOPTS && USE_UCLIBC
 | 
					 | 
				
			||||||
	default "snapshot"   if UCLIBC_VERSION_SNAPSHOT
 | 
					 | 
				
			||||||
	default ".2"         if UCLIBC_VERSION_0_9_28
 | 
					 | 
				
			||||||
	default ".1"         if UCLIBC_VERSION_0_9_30 && !UCLIBC_VERSION_NPTL
 | 
					 | 
				
			||||||
	default ""
 | 
					 | 
				
			||||||
	help
 | 
					 | 
				
			||||||
	    Default for version 0.9.28 is ".02", for daily snapshot it's just "snapshot"
 | 
					 | 
				
			||||||
	    For all other versions the default string is empty.
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,8 @@
 | 
				
			|||||||
config UCLIBC_VERSION
 | 
					config UCLIBC_VERSION
 | 
				
			||||||
	string
 | 
						string
 | 
				
			||||||
	depends on USE_UCLIBC
 | 
						depends on USE_UCLIBC
 | 
				
			||||||
	default ""           if UCLIBC_VERSION_snapshot
 | 
						default "0.9.29"       if UCLIBC_VERSION_0_9_29
 | 
				
			||||||
	default "0.9.28"     if UCLIBC_VERSION_0_9_28
 | 
						default "0.9.30.1"     if UCLIBC_VERSION_0_9_30_1
 | 
				
			||||||
	default "0.9.29"     if UCLIBC_VERSION_0_9_29
 | 
						default "0.9.30+nptl"  if UCLIBC_VERSION_NPTL
 | 
				
			||||||
	default "0.9.30"     if UCLIBC_VERSION_0_9_30
 | 
					 | 
				
			||||||
	default "0.9.29"
 | 
						default "0.9.29"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,44 +9,26 @@ include $(INCLUDE_DIR)/target.mk
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
PKG_NAME:=uClibc
 | 
					PKG_NAME:=uClibc
 | 
				
			||||||
PKG_VERSION:=$(call qstrip,$(CONFIG_UCLIBC_VERSION))
 | 
					PKG_VERSION:=$(call qstrip,$(CONFIG_UCLIBC_VERSION))
 | 
				
			||||||
PKG_EXTRAVERSION:=$(call qstrip,$(CONFIG_UCLIBC_EXTRA_VERSION))
 | 
					 | 
				
			||||||
PKG_VERSION_SNAPSHOT:=$(call qstrip,$(CONFIG_UCLIBC_VERSION_SNAPSHOT))
 | 
					 | 
				
			||||||
ifeq ($(CONFIG_UCLIBC_VERSION_NPTL),y)
 | 
					ifeq ($(CONFIG_UCLIBC_VERSION_NPTL),y)
 | 
				
			||||||
  PKG_SOURCE_URL:=http://www.uclibc.org/svn/branches/uClibc-nptl
 | 
					  PKG_SOURCE_URL:=http://www.uclibc.org/svn/branches/uClibc-nptl
 | 
				
			||||||
  PKG_SOURCE_PROTO:=svn
 | 
					  PKG_SOURCE_PROTO:=svn
 | 
				
			||||||
  PKG_SOURCE_VERSION:=25804
 | 
					  PKG_SOURCE_VERSION:=25804
 | 
				
			||||||
  PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)+nptl
 | 
					  PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
 | 
				
			||||||
  PKG_SOURCE:=$(PKG_NAME)-nptl-r$(PKG_SOURCE_VERSION).tar.gz
 | 
					  PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-r$(PKG_SOURCE_VERSION).tar.gz
 | 
				
			||||||
  PKG_EXTRAVERSION:=-svn
 | 
					  LIBC_SO_VERSION:=0.9.30-svn
 | 
				
			||||||
else
 | 
					 | 
				
			||||||
ifeq ($(PKG_VERSION_SNAPSHOT),y)
 | 
					 | 
				
			||||||
  PKG_SOURCE_URL:=http://www.uclibc.org/downloads/snapshots
 | 
					 | 
				
			||||||
  PKG_SOURCE:=uClibc-snapshot.tar.bz2
 | 
					 | 
				
			||||||
else
 | 
					else
 | 
				
			||||||
  PKG_SOURCE_URL:=http://www.uclibc.org/downloads
 | 
					  PKG_SOURCE_URL:=http://www.uclibc.org/downloads
 | 
				
			||||||
  PKG_SOURCE:=uClibc-$(PKG_VERSION)$(PKG_EXTRAVERSION).tar.bz2
 | 
					  PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 | 
				
			||||||
 | 
					  LIBC_SO_VERSION:=$(PKG_VERSION)
 | 
				
			||||||
endif
 | 
					endif
 | 
				
			||||||
endif
 | 
					PATCH_DIR:=./patches-$(PKG_VERSION)
 | 
				
			||||||
PATCH_DIR:=$(firstword $(wildcard ./patches-$(PKG_VERSION)$(PKG_EXTRAVERSION) ./patches-$(PKG_VERSION)))
 | 
					CONFIG_DIR:=./config-$(PKG_VERSION)
 | 
				
			||||||
CONFIG_DIR:=$(firstword $(wildcard ./config-$(PKG_VERSION)$(PKG_EXTRAVERSION) ./config-$(PKG_VERSION)))
 | 
					 | 
				
			||||||
PATCH_DIR:=$(if $(CONFIG_UCLIBC_VERSION_NPTL),./patches-nptl,$(PATCH_DIR))
 | 
					 | 
				
			||||||
CONFIG_DIR:=$(if $(CONFIG_UCLIBC_VERSION_NPTL),./config-nptl,$(CONFIG_DIR))
 | 
					 | 
				
			||||||
PATCH_DIR:=$(if $(PKG_VERSION_SNAPSHOT),,$(PATCH_DIR))
 | 
					 | 
				
			||||||
CONFIG_DIR:=$(if $(PKG_VERSION_SNAPSHOT),./config-0.9.30,$(CONFIG_DIR))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
PKG_MD5SUM_0.9.28.2 = 959f25286e317f0d9e2103445c5a14c2
 | 
					 | 
				
			||||||
PKG_MD5SUM_0.9.28.3 = 428405a36b4662980d9343b32089b5a6
 | 
					 | 
				
			||||||
PKG_MD5SUM_0.9.29 = 61dc55f43b17a38a074f347e74095b20
 | 
					PKG_MD5SUM_0.9.29 = 61dc55f43b17a38a074f347e74095b20
 | 
				
			||||||
PKG_MD5SUM_0.9.30 = e5766e2566e0297adebebbcc0aba1f2d
 | 
					PKG_MD5SUM_0.9.30.1 = 1a4b84e5536ad8170563ffa88c34679c
 | 
				
			||||||
PKG_MD5SUM=$(PKG_MD5SUM_$(PKG_VERSION)$(PKG_EXTRAVERSION))
 | 
					PKG_MD5SUM=$(PKG_MD5SUM_$(PKG_VERSION))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME)-$(PKG_VERSION)
 | 
				
			||||||
ifeq ($(PKG_VERSION_SNAPSHOT),y)
 | 
					 | 
				
			||||||
  UCLIBC_SUBDIR:=uClibc-$(PKG_EXTRAVERSION)
 | 
					 | 
				
			||||||
else
 | 
					 | 
				
			||||||
  UCLIBC_SUBDIR:=uClibc-$(PKG_VERSION)$(if $(CONFIG_UCLIBC_VERSION_NPTL),+nptl,$(PKG_EXTRAVERSION))
 | 
					 | 
				
			||||||
endif
 | 
					 | 
				
			||||||
HOST_BUILD_DIR:=$(BUILD_DIR_TOOLCHAIN)/$(UCLIBC_SUBDIR)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
include $(INCLUDE_DIR)/toolchain-build.mk
 | 
					include $(INCLUDE_DIR)/toolchain-build.mk
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -73,42 +55,16 @@ define Host/SetToolchainInfo
 | 
				
			|||||||
	$(SED) 's,^\(LIBC_TYPE\)=.*,\1=$(PKG_NAME),' $(TOOLCHAIN_DIR)/info.mk
 | 
						$(SED) 's,^\(LIBC_TYPE\)=.*,\1=$(PKG_NAME),' $(TOOLCHAIN_DIR)/info.mk
 | 
				
			||||||
	$(SED) 's,^\(LIBC_URL\)=.*,\1=http://www.uclibc.org/,' $(TOOLCHAIN_DIR)/info.mk
 | 
						$(SED) 's,^\(LIBC_URL\)=.*,\1=http://www.uclibc.org/,' $(TOOLCHAIN_DIR)/info.mk
 | 
				
			||||||
	$(SED) 's,^\(LIBC_VERSION\)=.*,\1=$(PKG_VERSION),' $(TOOLCHAIN_DIR)/info.mk
 | 
						$(SED) 's,^\(LIBC_VERSION\)=.*,\1=$(PKG_VERSION),' $(TOOLCHAIN_DIR)/info.mk
 | 
				
			||||||
	$(SED) 's,^\(LIBC_PATCHVER\)=.*,\1=$(PKG_EXTRAVERSION),' $(TOOLCHAIN_DIR)/info.mk
 | 
						$(SED) 's,^\(LIBC_SO_VERSION\)=.*,\1=$(LIBC_SO_VERSION),' $(TOOLCHAIN_DIR)/info.mk
 | 
				
			||||||
endef
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
define Host/Prepare/Snapshot
 | 
					 | 
				
			||||||
	$(PKG_UNPACK)
 | 
					 | 
				
			||||||
	rm -Rf $(HOST_BUILD_DIR)
 | 
					 | 
				
			||||||
	$(Host/Patch)
 | 
					 | 
				
			||||||
	$(if $(QUILT),touch $(HOST_BUILD_DIR)/.quilt_used)
 | 
					 | 
				
			||||||
endef
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
define Host/Prepare/V_0_9_28
 | 
					 | 
				
			||||||
	$(SED) 's,^KERNEL_SOURCE=.*,KERNEL_SOURCE=\"$(BUILD_DIR_TOOLCHAIN)/linux\",g' \
 | 
					 | 
				
			||||||
		$(HOST_BUILD_DIR)/.config
 | 
					 | 
				
			||||||
 ifeq ($(CONFIG_SOFT_FLOAT),y)
 | 
					 | 
				
			||||||
	$(SED) 's,.*HAS_FPU.*,HAS_FPU=n\nUCLIBC_HAS_FLOATS=y\nUCLIBC_HAS_SOFT_FLOAT=y,g' $(HOST_BUILD_DIR)/.config
 | 
					 | 
				
			||||||
 endif
 | 
					 | 
				
			||||||
 ifeq ($(CONFIG_C99_MATH),y)
 | 
					 | 
				
			||||||
	$(SED) 's,.*DO_C99_MATH.*,DO_C99_MATH=y,g' $(HOST_BUILD_DIR)/.config
 | 
					 | 
				
			||||||
 endif
 | 
					 | 
				
			||||||
endef
 | 
					endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GEN_CONFIG=$(SCRIPT_DIR)/kconfig.pl -n $(if $(wildcard $(CONFIG_DIR)/common),'+' $(CONFIG_DIR)/common) ./$(CONFIG_DIR)/$(ARCH)$(if $(wildcard $(CONFIG_DIR)/$(ARCH).$(BOARD)),.$(BOARD))
 | 
					GEN_CONFIG=$(SCRIPT_DIR)/kconfig.pl -n $(if $(wildcard $(CONFIG_DIR)/common),'+' $(CONFIG_DIR)/common) ./$(CONFIG_DIR)/$(ARCH)$(if $(wildcard $(CONFIG_DIR)/$(ARCH).$(BOARD)),.$(BOARD))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
define Host/Prepare
 | 
					define Host/Prepare
 | 
				
			||||||
	$(call Host/SetToolchainInfo)
 | 
						$(call Host/SetToolchainInfo)
 | 
				
			||||||
	@echo prepare uClibc version $(PKG_VERSION)$(PKG_EXTRAVERSION)  
 | 
					 | 
				
			||||||
 ifeq ($(PKG_VERSION_SNAPSHOT),y)
 | 
					 | 
				
			||||||
	$(call Host/Prepare/Snapshot)
 | 
					 | 
				
			||||||
 else
 | 
					 | 
				
			||||||
	$(call Host/Prepare/Default)
 | 
						$(call Host/Prepare/Default)
 | 
				
			||||||
 endif
 | 
						ln -snf $(PKG_NAME)-$(PKG_VERSION) $(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME)
 | 
				
			||||||
	ln -snf $(UCLIBC_SUBDIR) $(BUILD_DIR_TOOLCHAIN)/$(PKG_NAME)
 | 
					 | 
				
			||||||
	$(GEN_CONFIG) > $(HOST_BUILD_DIR)/.config
 | 
						$(GEN_CONFIG) > $(HOST_BUILD_DIR)/.config
 | 
				
			||||||
 ifeq ($(PKG_VERSION),0.9.28)
 | 
					 | 
				
			||||||
	$(call Host/Prepare/V_0_9_28)
 | 
					 | 
				
			||||||
 endif
 | 
					 | 
				
			||||||
	$(SED) 's,^KERNEL_HEADERS=.*,KERNEL_HEADERS=\"$(BUILD_DIR_TOOLCHAIN)/linux-dev/usr/include\",g' \
 | 
						$(SED) 's,^KERNEL_HEADERS=.*,KERNEL_HEADERS=\"$(BUILD_DIR_TOOLCHAIN)/linux-dev/usr/include\",g' \
 | 
				
			||||||
		-e 's,^.*UCLIBC_HAS_FPU.*,UCLIBC_HAS_FPU=$(if $(CONFIG_SOFT_FLOAT),n,y),g' \
 | 
							-e 's,^.*UCLIBC_HAS_FPU.*,UCLIBC_HAS_FPU=$(if $(CONFIG_SOFT_FLOAT),n,y),g' \
 | 
				
			||||||
		-e 's,^.*UCLIBC_HAS_SOFT_FLOAT.*,UCLIBC_HAS_SOFT_FLOAT=$(if $(CONFIG_SOFT_FLOAT),y,n),g' \
 | 
							-e 's,^.*UCLIBC_HAS_SOFT_FLOAT.*,UCLIBC_HAS_SOFT_FLOAT=$(if $(CONFIG_SOFT_FLOAT),y,n),g' \
 | 
				
			||||||
@@ -126,7 +82,7 @@ define Host/Prepare
 | 
				
			|||||||
		CC="$(TARGET_CC)" \
 | 
							CC="$(TARGET_CC)" \
 | 
				
			||||||
		CPU_CFLAGS="$(TARGET_CFLAGS)" \
 | 
							CPU_CFLAGS="$(TARGET_CFLAGS)" \
 | 
				
			||||||
		pregen \
 | 
							pregen \
 | 
				
			||||||
		$(if $(CONFIG_UCLIBC_VERSION_0_9_28),install_dev,install_headers)
 | 
							install_headers
 | 
				
			||||||
endef
 | 
					endef
 | 
				
			||||||
 | 
					
 | 
				
			||||||
define Host/Configure
 | 
					define Host/Configure
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,16 +0,0 @@
 | 
				
			|||||||
ARCH_LITTLE_ENDIAN=y
 | 
					 | 
				
			||||||
ARCH_SUPPORTS_LITTLE_ENDIAN=y
 | 
					 | 
				
			||||||
# CONFIG_ARM1136JF_S is not set
 | 
					 | 
				
			||||||
# CONFIG_ARM610 is not set
 | 
					 | 
				
			||||||
# CONFIG_ARM710 is not set
 | 
					 | 
				
			||||||
# CONFIG_ARM720T is not set
 | 
					 | 
				
			||||||
# CONFIG_ARM920T is not set
 | 
					 | 
				
			||||||
# CONFIG_ARM922T is not set
 | 
					 | 
				
			||||||
# CONFIG_ARM926T is not set
 | 
					 | 
				
			||||||
# CONFIG_ARM_SA110 is not set
 | 
					 | 
				
			||||||
# CONFIG_ARM_SA1100 is not set
 | 
					 | 
				
			||||||
CONFIG_ARM_XSCALE=y
 | 
					 | 
				
			||||||
# CONFIG_GENERIC_ARM is not set
 | 
					 | 
				
			||||||
KERNEL_SOURCE="./toolchain_build_arm/linux"
 | 
					 | 
				
			||||||
TARGET_ARCH="arm"
 | 
					 | 
				
			||||||
TARGET_arm=y
 | 
					 | 
				
			||||||
@@ -1,17 +0,0 @@
 | 
				
			|||||||
ARCH_BIG_ENDIAN=y
 | 
					 | 
				
			||||||
ARCH_SUPPORTS_BIG_ENDIAN=y
 | 
					 | 
				
			||||||
ARCH_SUPPORTS_LITTLE_ENDIAN=y
 | 
					 | 
				
			||||||
# CONFIG_ARM1136JF_S is not set
 | 
					 | 
				
			||||||
# CONFIG_ARM610 is not set
 | 
					 | 
				
			||||||
# CONFIG_ARM710 is not set
 | 
					 | 
				
			||||||
# CONFIG_ARM720T is not set
 | 
					 | 
				
			||||||
# CONFIG_ARM920T is not set
 | 
					 | 
				
			||||||
# CONFIG_ARM922T is not set
 | 
					 | 
				
			||||||
# CONFIG_ARM926T is not set
 | 
					 | 
				
			||||||
# CONFIG_ARM_SA110 is not set
 | 
					 | 
				
			||||||
# CONFIG_ARM_SA1100 is not set
 | 
					 | 
				
			||||||
CONFIG_ARM_XSCALE=y
 | 
					 | 
				
			||||||
# CONFIG_GENERIC_ARM is not set
 | 
					 | 
				
			||||||
KERNEL_SOURCE="./toolchain_build_armeb/linux"
 | 
					 | 
				
			||||||
TARGET_ARCH="arm"
 | 
					 | 
				
			||||||
TARGET_arm=y
 | 
					 | 
				
			||||||
@@ -1,12 +0,0 @@
 | 
				
			|||||||
ARCH_BIG_ENDIAN=y
 | 
					 | 
				
			||||||
ARCH_SUPPORTS_BIG_ENDIAN=y
 | 
					 | 
				
			||||||
CONFIG_AP7000=y
 | 
					 | 
				
			||||||
FORCE_SHAREABLE_TEXT_SEGMENTS=y
 | 
					 | 
				
			||||||
KERNEL_SOURCE="./toolchain_build_avr32/linux"
 | 
					 | 
				
			||||||
LINKRELAX=y
 | 
					 | 
				
			||||||
TARGET_ARCH="avr32"
 | 
					 | 
				
			||||||
TARGET_avr32=y
 | 
					 | 
				
			||||||
UCLIBC_COMPLETELY_PIC=y
 | 
					 | 
				
			||||||
# UCLIBC_HAS_SCANF_GLIBC_A_FLAG is not set
 | 
					 | 
				
			||||||
# UCLIBC_HAS_STRING_ARCH_OPT is not set
 | 
					 | 
				
			||||||
UNIX98PTY_ONLY=y
 | 
					 | 
				
			||||||
@@ -1,122 +0,0 @@
 | 
				
			|||||||
# ARCH_BIG_ENDIAN is not set
 | 
					 | 
				
			||||||
ARCH_HAS_MMU=y
 | 
					 | 
				
			||||||
# ARCH_HAS_NO_LDSO is not set
 | 
					 | 
				
			||||||
# ARCH_HAS_NO_MMU is not set
 | 
					 | 
				
			||||||
# ARCH_LITTLE_ENDIAN is not set
 | 
					 | 
				
			||||||
# ARCH_SUPPORTS_BIG_ENDIAN is not set
 | 
					 | 
				
			||||||
# ARCH_SUPPORTS_LITTLE_ENDIAN is not set
 | 
					 | 
				
			||||||
ASSUME_DEVPTS=y
 | 
					 | 
				
			||||||
BUILD_UCLIBC_LDSO=y
 | 
					 | 
				
			||||||
CROSS_COMPILER_PREFIX=""
 | 
					 | 
				
			||||||
C_SYMBOL_PREFIX=""
 | 
					 | 
				
			||||||
DEVEL_PREFIX="/usr/"
 | 
					 | 
				
			||||||
# DL_FINI_CRT_COMPAT is not set
 | 
					 | 
				
			||||||
# DOASSERTS is not set
 | 
					 | 
				
			||||||
# DODEBUG is not set
 | 
					 | 
				
			||||||
# DODEBUG_PT is not set
 | 
					 | 
				
			||||||
DOPIC=y
 | 
					 | 
				
			||||||
DO_C99_MATH=y
 | 
					 | 
				
			||||||
# FORCE_SHAREABLE_TEXT_SEGMENTS is not set
 | 
					 | 
				
			||||||
# HAS_FPU is not set
 | 
					 | 
				
			||||||
# HAS_NO_THREADS is not set
 | 
					 | 
				
			||||||
HAS_SHADOW=y
 | 
					 | 
				
			||||||
HAVE_DOT_CONFIG=y
 | 
					 | 
				
			||||||
HAVE_ELF=y
 | 
					 | 
				
			||||||
# HAVE_NO_PIC is not set
 | 
					 | 
				
			||||||
# HAVE_NO_SHARED is not set
 | 
					 | 
				
			||||||
HAVE_SHARED=y
 | 
					 | 
				
			||||||
KERNEL_SOURCE=""
 | 
					 | 
				
			||||||
LDSO_BASE_FILENAME="ld.so"
 | 
					 | 
				
			||||||
LDSO_CACHE_SUPPORT=y
 | 
					 | 
				
			||||||
LDSO_LDD_SUPPORT=y
 | 
					 | 
				
			||||||
# LDSO_PRELOAD_FILE_SUPPORT is not set
 | 
					 | 
				
			||||||
LDSO_RUNPATH=y
 | 
					 | 
				
			||||||
# MALLOC is not set
 | 
					 | 
				
			||||||
MALLOC_GLIBC_COMPAT=y
 | 
					 | 
				
			||||||
# MALLOC_SIMPLE is not set
 | 
					 | 
				
			||||||
MALLOC_STANDARD=y
 | 
					 | 
				
			||||||
# PTHREADS_DEBUG_SUPPORT is not set
 | 
					 | 
				
			||||||
RUNTIME_PREFIX="/"
 | 
					 | 
				
			||||||
SHARED_LIB_LOADER_PREFIX="/lib"
 | 
					 | 
				
			||||||
# SUPPORT_LD_DEBUG is not set
 | 
					 | 
				
			||||||
# SUPPORT_LD_DEBUG_EARLY is not set
 | 
					 | 
				
			||||||
# TARGET_alpha is not set
 | 
					 | 
				
			||||||
# TARGET_arm is not set
 | 
					 | 
				
			||||||
# TARGET_avr32 is not set
 | 
					 | 
				
			||||||
# TARGET_bfin is not set
 | 
					 | 
				
			||||||
# TARGET_cris is not set
 | 
					 | 
				
			||||||
# TARGET_e1 is not set
 | 
					 | 
				
			||||||
# TARGET_frv is not set
 | 
					 | 
				
			||||||
# TARGET_h8300 is not set
 | 
					 | 
				
			||||||
# TARGET_i386 is not set
 | 
					 | 
				
			||||||
# TARGET_i960 is not set
 | 
					 | 
				
			||||||
# TARGET_m68k is not set
 | 
					 | 
				
			||||||
# TARGET_microblaze is not set
 | 
					 | 
				
			||||||
# TARGET_mips is not set
 | 
					 | 
				
			||||||
# TARGET_nios is not set
 | 
					 | 
				
			||||||
# TARGET_nios2 is not set
 | 
					 | 
				
			||||||
# TARGET_powerpc is not set
 | 
					 | 
				
			||||||
# TARGET_sh is not set
 | 
					 | 
				
			||||||
# TARGET_sh64 is not set
 | 
					 | 
				
			||||||
# TARGET_sparc is not set
 | 
					 | 
				
			||||||
# TARGET_v850 is not set
 | 
					 | 
				
			||||||
# TARGET_x86_64 is not set
 | 
					 | 
				
			||||||
UCLIBC_CTOR_DTOR=y
 | 
					 | 
				
			||||||
UCLIBC_DYNAMIC_ATEXIT=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_CTYPE_CHECKED=y
 | 
					 | 
				
			||||||
# UCLIBC_HAS_CTYPE_ENFORCED is not set
 | 
					 | 
				
			||||||
UCLIBC_HAS_CTYPE_SIGNED=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_CTYPE_TABLES=y
 | 
					 | 
				
			||||||
# UCLIBC_HAS_CTYPE_UNSAFE is not set
 | 
					 | 
				
			||||||
UCLIBC_HAS_ERRNO_MESSAGES=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_FLOATS=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE=y
 | 
					 | 
				
			||||||
# UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set
 | 
					 | 
				
			||||||
UCLIBC_HAS_FTW=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_FULL_RPC=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_GLIBC_CUSTOM_STREAMS=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_GLOB=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_GNU_GETOPT=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_HEXADECIMAL_FLOATS=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_IPV6=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_LFS=y
 | 
					 | 
				
			||||||
# UCLIBC_HAS_LOCALE is not set
 | 
					 | 
				
			||||||
UCLIBC_HAS_PRINTF_M_SPEC=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_REGEX=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_RPC=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_SCANF_GLIBC_A_FLAG=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_SIGNUM_MESSAGES=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_SOFT_FLOAT=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y
 | 
					 | 
				
			||||||
# UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set
 | 
					 | 
				
			||||||
# UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set
 | 
					 | 
				
			||||||
# UCLIBC_HAS_STDIO_BUFSIZ_256 is not set
 | 
					 | 
				
			||||||
UCLIBC_HAS_STDIO_BUFSIZ_4096=y
 | 
					 | 
				
			||||||
# UCLIBC_HAS_STDIO_BUFSIZ_512 is not set
 | 
					 | 
				
			||||||
# UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set
 | 
					 | 
				
			||||||
# UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set
 | 
					 | 
				
			||||||
# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set
 | 
					 | 
				
			||||||
# UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set
 | 
					 | 
				
			||||||
UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_STDIO_GETC_MACRO=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_STDIO_PUTC_MACRO=y
 | 
					 | 
				
			||||||
# UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set
 | 
					 | 
				
			||||||
UCLIBC_HAS_STRING_ARCH_OPT=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_STRING_GENERIC_OPT=y
 | 
					 | 
				
			||||||
# UCLIBC_HAS_SYS_ERRLIST is not set
 | 
					 | 
				
			||||||
# UCLIBC_HAS_SYS_SIGLIST is not set
 | 
					 | 
				
			||||||
UCLIBC_HAS_THREADS=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_TM_EXTENSIONS=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_TZ_CACHING=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_TZ_FILE=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_TZ_FILE_READ_MANY=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_WCHAR=y
 | 
					 | 
				
			||||||
UCLIBC_HAS_WORDEXP=y
 | 
					 | 
				
			||||||
# UCLIBC_MJN3_ONLY is not set
 | 
					 | 
				
			||||||
UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9
 | 
					 | 
				
			||||||
# UCLIBC_SECURITY is not set
 | 
					 | 
				
			||||||
# UCLIBC_STATIC_LDCONFIG is not set
 | 
					 | 
				
			||||||
UCLIBC_TZ_FILE_PATH="/etc/TZ"
 | 
					 | 
				
			||||||
# UNIX98PTY_ONLY is not set
 | 
					 | 
				
			||||||
WARNINGS="-Wall"
 | 
					 | 
				
			||||||
@@ -1,7 +0,0 @@
 | 
				
			|||||||
ARCH_LITTLE_ENDIAN=y
 | 
					 | 
				
			||||||
ARCH_SUPPORTS_LITTLE_ENDIAN=y
 | 
					 | 
				
			||||||
CONFIG_CRIS=y
 | 
					 | 
				
			||||||
KERNEL_SOURCE="../linux"
 | 
					 | 
				
			||||||
TARGET_ARCH="cris"
 | 
					 | 
				
			||||||
TARGET_cris=y
 | 
					 | 
				
			||||||
# UCLIBC_CTOR_DTOR is not set
 | 
					 | 
				
			||||||
@@ -1,29 +0,0 @@
 | 
				
			|||||||
ARCH_LITTLE_ENDIAN=y
 | 
					 | 
				
			||||||
ARCH_SUPPORTS_LITTLE_ENDIAN=y
 | 
					 | 
				
			||||||
# CONFIG_386 is not set
 | 
					 | 
				
			||||||
CONFIG_486=y
 | 
					 | 
				
			||||||
# CONFIG_586 is not set
 | 
					 | 
				
			||||||
# CONFIG_586MMX is not set
 | 
					 | 
				
			||||||
# CONFIG_686 is not set
 | 
					 | 
				
			||||||
# CONFIG_CRUSOE is not set
 | 
					 | 
				
			||||||
# CONFIG_CYRIXIII is not set
 | 
					 | 
				
			||||||
# CONFIG_ELAN is not set
 | 
					 | 
				
			||||||
# CONFIG_GENERIC_386 is not set
 | 
					 | 
				
			||||||
# CONFIG_K6 is not set
 | 
					 | 
				
			||||||
# CONFIG_K7 is not set
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_1 is not set
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_2 is not set
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_3 is not set
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_4 is not set
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_MIPS32 is not set
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_MIPS64 is not set
 | 
					 | 
				
			||||||
# CONFIG_NEHEMIAH is not set
 | 
					 | 
				
			||||||
# CONFIG_PENTIUM4 is not set
 | 
					 | 
				
			||||||
# CONFIG_PENTIUMII is not set
 | 
					 | 
				
			||||||
# CONFIG_PENTIUMIII is not set
 | 
					 | 
				
			||||||
# CONFIG_WINCHIP2 is not set
 | 
					 | 
				
			||||||
# CONFIG_WINCHIPC6 is not set
 | 
					 | 
				
			||||||
HAS_FPU=y
 | 
					 | 
				
			||||||
KERNEL_SOURCE="./toolchain_build_i386/linux"
 | 
					 | 
				
			||||||
TARGET_ARCH="i386"
 | 
					 | 
				
			||||||
TARGET_i386=y
 | 
					 | 
				
			||||||
@@ -1,15 +0,0 @@
 | 
				
			|||||||
ARCH_BIG_ENDIAN=y
 | 
					 | 
				
			||||||
ARCH_CFLAGS="-mno-split-addresses"
 | 
					 | 
				
			||||||
ARCH_SUPPORTS_BIG_ENDIAN=y
 | 
					 | 
				
			||||||
ARCH_SUPPORTS_LITTLE_ENDIAN=y
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_1 is not set
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_2 is not set
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_3 is not set
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_4 is not set
 | 
					 | 
				
			||||||
CONFIG_MIPS_ISA_MIPS32=y
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_MIPS64 is not set
 | 
					 | 
				
			||||||
DL_FINI_CRT_COMPAT=y
 | 
					 | 
				
			||||||
HAS_FPU=y
 | 
					 | 
				
			||||||
KERNEL_SOURCE="./toolchain_build_mips/linux"
 | 
					 | 
				
			||||||
TARGET_ARCH="mips"
 | 
					 | 
				
			||||||
TARGET_mips=y
 | 
					 | 
				
			||||||
@@ -1,15 +0,0 @@
 | 
				
			|||||||
ARCH_CFLAGS="-mno-split-addresses"
 | 
					 | 
				
			||||||
ARCH_LITTLE_ENDIAN=y
 | 
					 | 
				
			||||||
ARCH_SUPPORTS_BIG_ENDIAN=y
 | 
					 | 
				
			||||||
ARCH_SUPPORTS_LITTLE_ENDIAN=y
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_1 is not set
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_2 is not set
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_3 is not set
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_4 is not set
 | 
					 | 
				
			||||||
CONFIG_MIPS_ISA_MIPS32=y
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_MIPS64 is not set
 | 
					 | 
				
			||||||
DL_FINI_CRT_COMPAT=y
 | 
					 | 
				
			||||||
HAS_FPU=y
 | 
					 | 
				
			||||||
KERNEL_SOURCE="./toolchain_build_mipsel/linux"
 | 
					 | 
				
			||||||
TARGET_ARCH="mips"
 | 
					 | 
				
			||||||
TARGET_mips=y
 | 
					 | 
				
			||||||
@@ -1,13 +0,0 @@
 | 
				
			|||||||
ARCH_BIG_ENDIAN=y
 | 
					 | 
				
			||||||
ARCH_SUPPORTS_BIG_ENDIAN=y
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_1 is not set
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_2 is not set
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_3 is not set
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_4 is not set
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_MIPS32 is not set
 | 
					 | 
				
			||||||
# CONFIG_MIPS_ISA_MIPS64 is not set
 | 
					 | 
				
			||||||
DL_FINI_CRT_COMPAT=y
 | 
					 | 
				
			||||||
HAS_FPU=y
 | 
					 | 
				
			||||||
KERNEL_SOURCE="./toolchain_build_powerpc/linux"
 | 
					 | 
				
			||||||
TARGET_ARCH="powerpc"
 | 
					 | 
				
			||||||
TARGET_powerpc=y
 | 
					 | 
				
			||||||
@@ -1,7 +0,0 @@
 | 
				
			|||||||
ARCH_LITTLE_ENDIAN=y
 | 
					 | 
				
			||||||
ARCH_SUPPORTS_LITTLE_ENDIAN=y
 | 
					 | 
				
			||||||
HAS_FPU=y
 | 
					 | 
				
			||||||
HAS_NO_THREADS=y
 | 
					 | 
				
			||||||
KERNEL_SOURCE="./toolchain_build_x86_64/linux"
 | 
					 | 
				
			||||||
TARGET_ARCH="x86_64"
 | 
					 | 
				
			||||||
TARGET_x86_64=y
 | 
					 | 
				
			||||||
@@ -1,51 +0,0 @@
 | 
				
			|||||||
diff -ur uClibc-0.9.28.2/libc/sysdeps/linux/common/bits/uClibc_pthread.h uClibc-0.9.28.1/libc/sysdeps/linux/common/bits/uClibc_pthread.h
 | 
					 | 
				
			||||||
--- uClibc-0.9.28.2/libc/sysdeps/linux/common/bits/uClibc_pthread.h	2007-02-22 00:28:41.000000000 +0100
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28.1/libc/sysdeps/linux/common/bits/uClibc_pthread.h	2007-01-26 00:54:19.000000000 +0100
 | 
					 | 
				
			||||||
@@ -24,27 +23,27 @@
 | 
					 | 
				
			||||||
 #define _UCLIBC_PTHREAD_H
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 #ifndef _PTHREAD_H
 | 
					 | 
				
			||||||
-# error "Always include <pthread.h> rather than <bits/uClibc_pthread.h>"
 | 
					 | 
				
			||||||
+#error Always include <pthread.h> rather than <bits/uClibc_pthread.h>
 | 
					 | 
				
			||||||
 #endif
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-#if defined _LIBC
 | 
					 | 
				
			||||||
-/* Threading functions internal to uClibc.  Make these thread functions
 | 
					 | 
				
			||||||
- * weak so that we can elide them from single-threaded processes.  */
 | 
					 | 
				
			||||||
-extern int weak_function __pthread_mutex_init (pthread_mutex_t *__mutex,
 | 
					 | 
				
			||||||
-		__const pthread_mutexattr_t *__mutex_attr);
 | 
					 | 
				
			||||||
-extern int weak_function __pthread_mutex_destroy (pthread_mutex_t *__mutex);
 | 
					 | 
				
			||||||
-extern int weak_function __pthread_mutex_lock (pthread_mutex_t *__mutex);
 | 
					 | 
				
			||||||
-extern int weak_function __pthread_mutex_unlock (pthread_mutex_t *__mutex);
 | 
					 | 
				
			||||||
-extern void __uclibc_mutex_unlock (void *) attribute_hidden;
 | 
					 | 
				
			||||||
-extern int weak_function __pthread_mutex_trylock (pthread_mutex_t *__mutex);
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
-struct _pthread_cleanup_buffer;
 | 
					 | 
				
			||||||
-extern void weak_function _pthread_cleanup_push_defer (
 | 
					 | 
				
			||||||
-		struct _pthread_cleanup_buffer *__buffer,
 | 
					 | 
				
			||||||
-		void (*__routine) (void *), void *__arg);
 | 
					 | 
				
			||||||
-extern void weak_function _pthread_cleanup_pop_restore (
 | 
					 | 
				
			||||||
-		struct _pthread_cleanup_buffer *__buffer,
 | 
					 | 
				
			||||||
-		int __execute);
 | 
					 | 
				
			||||||
-#endif
 | 
					 | 
				
			||||||
+#if defined _LIBC
 | 
					 | 
				
			||||||
+/* Threading functions internal to uClibc.  Make these thread functions
 | 
					 | 
				
			||||||
+ * weak so that we can elide them from single-threaded processes.  */
 | 
					 | 
				
			||||||
+extern int __pthread_mutex_init (pthread_mutex_t *__mutex,
 | 
					 | 
				
			||||||
+		__const pthread_mutexattr_t *__mutex_attr);
 | 
					 | 
				
			||||||
+extern int __pthread_mutex_destroy (pthread_mutex_t *__mutex);
 | 
					 | 
				
			||||||
+extern int __pthread_mutex_lock (pthread_mutex_t *__mutex);
 | 
					 | 
				
			||||||
+extern int __pthread_mutex_unlock (pthread_mutex_t *__mutex);
 | 
					 | 
				
			||||||
+extern void __uclibc_mutex_unlock (void *) attribute_hidden;
 | 
					 | 
				
			||||||
+extern int __pthread_mutex_trylock (pthread_mutex_t *__mutex);
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+struct _pthread_cleanup_buffer;
 | 
					 | 
				
			||||||
+extern void _pthread_cleanup_push_defer (
 | 
					 | 
				
			||||||
+		struct _pthread_cleanup_buffer *__buffer,
 | 
					 | 
				
			||||||
+		void (*__routine) (void *), void *__arg);
 | 
					 | 
				
			||||||
+extern void _pthread_cleanup_pop_restore (
 | 
					 | 
				
			||||||
+		struct _pthread_cleanup_buffer *__buffer,
 | 
					 | 
				
			||||||
+		int __execute);
 | 
					 | 
				
			||||||
+#endif
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 #endif
 | 
					 | 
				
			||||||
@@ -1,12 +0,0 @@
 | 
				
			|||||||
diff -urN uClibc.old/libm/Makefile uClibc.dev/libm/Makefile
 | 
					 | 
				
			||||||
--- uClibc.old/libm/Makefile	2005-08-18 00:49:41.000000000 +0200
 | 
					 | 
				
			||||||
+++ uClibc.dev/libm/Makefile	2005-10-22 00:56:03.106683500 +0200
 | 
					 | 
				
			||||||
@@ -81,6 +81,8 @@
 | 
					 | 
				
			||||||
 	 w_cosh.c w_exp.c s_fabs.c s_floor.c w_fmod.c s_frexp.c \
 | 
					 | 
				
			||||||
 	 s_ldexp.c w_log.c w_log10.c s_modf.c w_pow.c s_sin.c \
 | 
					 | 
				
			||||||
 	 w_sinh.c w_sqrt.c s_tan.c s_tanh.c
 | 
					 | 
				
			||||||
+# extra stuff required for some apps
 | 
					 | 
				
			||||||
+CSRC+= fpmacros.c nan.c s_rint.c e_hypot.c w_hypot.c s_floorf.c
 | 
					 | 
				
			||||||
 CSRC+=   s_expm1.c s_scalbn.c s_copysign.c e_acos.c e_asin.c e_atan2.c \
 | 
					 | 
				
			||||||
 	 k_cos.c e_cosh.c e_exp.c e_fmod.c e_log.c e_log10.c e_pow.c \
 | 
					 | 
				
			||||||
 	 k_sin.c e_sinh.c e_sqrt.c k_tan.c e_rem_pio2.c k_rem_pio2.c \
 | 
					 | 
				
			||||||
@@ -1,29 +0,0 @@
 | 
				
			|||||||
Fix portability of build infrastructure
 | 
					 | 
				
			||||||
* cp -d -> cp -P
 | 
					 | 
				
			||||||
* tar --exclude is a GNU tar feature
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--- uClibc-0.9.28/Makefile.orig	Sun Jun 11 19:08:56 2006
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28/Makefile	Sun Jun 11 19:12:05 2006
 | 
					 | 
				
			||||||
@@ -158,12 +158,7 @@ install_dev:
 | 
					 | 
				
			||||||
 	$(INSTALL) -d $(PREFIX)$(DEVEL_PREFIX)lib
 | 
					 | 
				
			||||||
 	$(INSTALL) -d $(PREFIX)$(DEVEL_PREFIX)include
 | 
					 | 
				
			||||||
 	-$(INSTALL) -m 644 lib/*.[ao] $(PREFIX)$(DEVEL_PREFIX)lib/
 | 
					 | 
				
			||||||
-	if [ "$(KERNEL_SOURCE)" = "$(DEVEL_PREFIX)" ] ; then \
 | 
					 | 
				
			||||||
-		extra_exclude="--exclude include/linux --exclude include/asm'*'" ; \
 | 
					 | 
				
			||||||
-	else \
 | 
					 | 
				
			||||||
-		extra_exclude="" ; \
 | 
					 | 
				
			||||||
-	fi ; \
 | 
					 | 
				
			||||||
-	tar -chf - include --exclude .svn --exclude CVS $$extra_exclude \
 | 
					 | 
				
			||||||
+	tar -chf - include \
 | 
					 | 
				
			||||||
 		| tar -xf - -C $(PREFIX)$(DEVEL_PREFIX)
 | 
					 | 
				
			||||||
 ifneq ($(strip $(UCLIBC_HAS_FLOATS)),y)
 | 
					 | 
				
			||||||
 	# Remove floating point related headers since float support is disabled.
 | 
					 | 
				
			||||||
@@ -253,7 +248,7 @@ ifeq ($(strip $(HAVE_SHARED)),y)
 | 
					 | 
				
			||||||
 	$(INSTALL) -d $(PREFIX)$(RUNTIME_PREFIX)lib
 | 
					 | 
				
			||||||
 	$(INSTALL) -m 644 lib/lib*-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so \
 | 
					 | 
				
			||||||
 		$(PREFIX)$(RUNTIME_PREFIX)lib
 | 
					 | 
				
			||||||
-	cp -dRf lib/*.so.* $(PREFIX)$(RUNTIME_PREFIX)lib
 | 
					 | 
				
			||||||
+	cp -pRf lib/*.so.* $(PREFIX)$(RUNTIME_PREFIX)lib
 | 
					 | 
				
			||||||
 	@if [ -x lib/ld-uClibc-$(MAJOR_VERSION).$(MINOR_VERSION).$(SUBLEVEL).so ] ; then \
 | 
					 | 
				
			||||||
 	    set -e; \
 | 
					 | 
				
			||||||
 		$(SHELL_SET_X); \
 | 
					 | 
				
			||||||
@@ -1,52 +0,0 @@
 | 
				
			|||||||
diff -urN uClibc.old/libc/Makefile uClibc.dev/libc/Makefile
 | 
					 | 
				
			||||||
--- uClibc.old/libc/Makefile	2005-08-18 00:49:48.000000000 +0200
 | 
					 | 
				
			||||||
+++ uClibc.dev/libc/Makefile	2007-01-22 01:21:40.000000000 +0100
 | 
					 | 
				
			||||||
@@ -70,7 +70,6 @@
 | 
					 | 
				
			||||||
 		$(AR) $(ARFLAGS) $(LIBNAME) $$objs || exit 1 ; \
 | 
					 | 
				
			||||||
 	done
 | 
					 | 
				
			||||||
 	cp $(LIBNAME) shared_$(LIBNAME)
 | 
					 | 
				
			||||||
-	$(AR) $(ARFLAGS) $(LIBNAME) misc/internals/static.o
 | 
					 | 
				
			||||||
 	$(RANLIB) $(LIBNAME)
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 $(LIBNAME_TARGET): $(LIBNAME)
 | 
					 | 
				
			||||||
diff -urN uClibc.old/libc/misc/internals/Makefile uClibc.dev/libc/misc/internals/Makefile
 | 
					 | 
				
			||||||
--- uClibc.old/libc/misc/internals/Makefile	2005-08-18 00:49:48.000000000 +0200
 | 
					 | 
				
			||||||
+++ uClibc.dev/libc/misc/internals/Makefile	2007-01-22 01:11:46.000000000 +0100
 | 
					 | 
				
			||||||
@@ -31,7 +31,7 @@
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 OBJ_LIST=../../obj.misc.internals
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-all: $(OBJ_LIST) interp.o static.o
 | 
					 | 
				
			||||||
+all: $(OBJ_LIST) interp.o
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 $(OBJ_LIST): $(OBJS)
 | 
					 | 
				
			||||||
 	echo $(patsubst %, misc/internals/%, $(OBJS)) > $(OBJ_LIST)
 | 
					 | 
				
			||||||
@@ -44,7 +44,7 @@
 | 
					 | 
				
			||||||
 		"(\".interp\"))) =\""$(SHARED_LIB_LOADER_PREFIX)/$(UCLIBC_LDSO)"\";" >> interp.c
 | 
					 | 
				
			||||||
 	echo "#endif" >> interp.c
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-$(COBJS) interp.o static.o: %.o : %.c
 | 
					 | 
				
			||||||
+$(COBJS) interp.o: %.o : %.c
 | 
					 | 
				
			||||||
 	$(CC) $(CFLAGS) -c $< -o $@
 | 
					 | 
				
			||||||
 	$(STRIPTOOL) -x -R .note -R .comment $*.o
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
diff -urN uClibc.old/libc/misc/internals/static.c uClibc.dev/libc/misc/internals/static.c
 | 
					 | 
				
			||||||
--- uClibc.old/libc/misc/internals/static.c	2005-08-18 00:49:48.000000000 +0200
 | 
					 | 
				
			||||||
+++ uClibc.dev/libc/misc/internals/static.c	1970-01-01 01:00:00.000000000 +0100
 | 
					 | 
				
			||||||
@@ -1,4 +0,0 @@
 | 
					 | 
				
			||||||
-#include <stddef.h>
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
-/* Force static libraries to know about ... */
 | 
					 | 
				
			||||||
-void *__libc_stack_end=NULL;
 | 
					 | 
				
			||||||
diff -urN uClibc.old/libc/misc/internals/__uClibc_main.c uClibc.dev/libc/misc/internals/__uClibc_main.c
 | 
					 | 
				
			||||||
--- uClibc.old/libc/misc/internals/__uClibc_main.c	2005-08-18 00:49:48.000000000 +0200
 | 
					 | 
				
			||||||
+++ uClibc.dev/libc/misc/internals/__uClibc_main.c	2007-01-22 01:20:23.000000000 +0100
 | 
					 | 
				
			||||||
@@ -32,7 +32,7 @@
 | 
					 | 
				
			||||||
 /*
 | 
					 | 
				
			||||||
  * Prototypes.
 | 
					 | 
				
			||||||
  */
 | 
					 | 
				
			||||||
-extern void *__libc_stack_end;
 | 
					 | 
				
			||||||
+void *__libc_stack_end;
 | 
					 | 
				
			||||||
 extern void weak_function _stdio_init(void);
 | 
					 | 
				
			||||||
 extern int *weak_const_function __errno_location(void);
 | 
					 | 
				
			||||||
 extern int *weak_const_function __h_errno_location(void);
 | 
					 | 
				
			||||||
@@ -1,18 +0,0 @@
 | 
				
			|||||||
--- uClibc-0.9.28.2-old/libc/sysdeps/linux/i386/bits/kernel_types.h	2004-02-06 08:07:16.000000000 +0100
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28.2-new/libc/sysdeps/linux/i386/bits/kernel_types.h	2009-01-18 07:24:34.994293859 +0100
 | 
					 | 
				
			||||||
@@ -4,7 +4,14 @@
 | 
					 | 
				
			||||||
  * our private content, and not the kernel header, will win.
 | 
					 | 
				
			||||||
  *  -Erik
 | 
					 | 
				
			||||||
  */
 | 
					 | 
				
			||||||
-#ifndef __ARCH_I386_POSIX_TYPES_H
 | 
					 | 
				
			||||||
+#if !defined(__ARCH_I386_POSIX_TYPES_H) && \
 | 
					 | 
				
			||||||
+    !defined(_ASM_X86_64_POSIX_TYPES_H) && \
 | 
					 | 
				
			||||||
+    !defined(_ASM_X86_POSIX_TYPES_32_H) && \
 | 
					 | 
				
			||||||
+    !defined(_ASM_X86_POSIX_TYPES_64_H)
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+#define _ASM_X86_POSIX_TYPES_32_H
 | 
					 | 
				
			||||||
+#define _ASM_X86_POSIX_TYPES_64_H
 | 
					 | 
				
			||||||
+#define _ASM_X86_64_POSIX_TYPES_H
 | 
					 | 
				
			||||||
 #define __ARCH_I386_POSIX_TYPES_H
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 typedef unsigned short	__kernel_dev_t;
 | 
					 | 
				
			||||||
@@ -1,34 +0,0 @@
 | 
				
			|||||||
diff -urN uClibc-0.9.28.2.orig/libc/sysdeps/linux/cris/bits/syscalls.h uClibc-0.9.28.2/libc/sysdeps/linux/cris/bits/syscalls.h
 | 
					 | 
				
			||||||
--- uClibc-0.9.28.2.orig/libc/sysdeps/linux/cris/bits/syscalls.h	2007-05-15 19:45:43.000000000 +0200
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28.2/libc/sysdeps/linux/cris/bits/syscalls.h	2007-05-15 19:47:20.000000000 +0200
 | 
					 | 
				
			||||||
@@ -62,6 +62,30 @@
 | 
					 | 
				
			||||||
 return (type) (INLINE_SYSCALL(name, 5, arg1, arg2, arg3, arg4, arg5)); \
 | 
					 | 
				
			||||||
 }
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
+#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
 | 
					 | 
				
			||||||
+	  type5,arg5,type6,arg6) \
 | 
					 | 
				
			||||||
+type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5,type6 arg6) \
 | 
					 | 
				
			||||||
+{ \
 | 
					 | 
				
			||||||
+  register long __a __asm__ ("r10") = (long) arg1; \
 | 
					 | 
				
			||||||
+  register long __b __asm__ ("r11") = (long) arg2; \
 | 
					 | 
				
			||||||
+  register long __c __asm__ ("r12") = (long) arg3; \
 | 
					 | 
				
			||||||
+  register long __d __asm__ ("r13") = (long) arg4; \
 | 
					 | 
				
			||||||
+  register long __n_ __asm__ ("r9") = (__NR_##name); \
 | 
					 | 
				
			||||||
+  __asm__ __volatile__ (".ifnc %0%1%3%4%5,$r10$r9$r11$r12$r13\n\t" \
 | 
					 | 
				
			||||||
+			".err\n\t" \
 | 
					 | 
				
			||||||
+			".endif\n\t" \
 | 
					 | 
				
			||||||
+			"move %6,$mof\n\tmove %7,$srp\n\t" \
 | 
					 | 
				
			||||||
+			"break 13" \
 | 
					 | 
				
			||||||
+			: "=r" (__a) \
 | 
					 | 
				
			||||||
+			: "r" (__n_), "0" (__a), "r" (__b), \
 | 
					 | 
				
			||||||
+			  "r" (__c), "r" (__d), "g" (arg5), "g" (arg6)\
 | 
					 | 
				
			||||||
+			: "srp"); \
 | 
					 | 
				
			||||||
+  if (__a >= 0) \
 | 
					 | 
				
			||||||
+     return (type) __a; \
 | 
					 | 
				
			||||||
+   __set_errno ( -__a); \
 | 
					 | 
				
			||||||
+  return (type) -1; \
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
 #undef INLINE_SYSCALL
 | 
					 | 
				
			||||||
 #define INLINE_SYSCALL(name, nr, args...)	\
 | 
					 | 
				
			||||||
   ({						\
 | 
					 | 
				
			||||||
@@ -1,24 +0,0 @@
 | 
				
			|||||||
diff -urN uClibc-0.9.28.2.orig/ldso/include/dl-syscall.h uClibc-0.9.28.2/ldso/include/dl-syscall.h
 | 
					 | 
				
			||||||
--- uClibc-0.9.28.2.orig/ldso/include/dl-syscall.h	2007-05-22 20:39:28.000000000 +0200
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28.2/ldso/include/dl-syscall.h	2007-05-22 20:41:30.000000000 +0200
 | 
					 | 
				
			||||||
@@ -155,8 +155,9 @@
 | 
					 | 
				
			||||||
 static inline void * _dl_mmap(void * addr, unsigned long size, int prot,
 | 
					 | 
				
			||||||
                               int flags, int fd, unsigned long offset)
 | 
					 | 
				
			||||||
 {
 | 
					 | 
				
			||||||
-	if (offset & ((1 << MMAP2_PAGE_SHIFT) - 1))
 | 
					 | 
				
			||||||
+	if (offset & ((1 << MMAP2_PAGE_SHIFT) - 1)){
 | 
					 | 
				
			||||||
 		return MAP_FAILED;
 | 
					 | 
				
			||||||
+	}
 | 
					 | 
				
			||||||
 	return __syscall_mmap2(addr, size, prot, flags,
 | 
					 | 
				
			||||||
 	                       fd, (off_t) (offset >> MMAP2_PAGE_SHIFT));
 | 
					 | 
				
			||||||
 }
 | 
					 | 
				
			||||||
diff -urN uClibc-0.9.28.2.orig/libc/sysdeps/linux/cris/bits/uClibc_page.h uClibc-0.9.28.2/libc/sysdeps/linux/cris/bits/uClibc_page.h
 | 
					 | 
				
			||||||
--- uClibc-0.9.28.2.orig/libc/sysdeps/linux/cris/bits/uClibc_page.h	2007-05-22 20:39:28.000000000 +0200
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28.2/libc/sysdeps/linux/cris/bits/uClibc_page.h	2007-05-22 20:42:25.000000000 +0200
 | 
					 | 
				
			||||||
@@ -24,5 +24,5 @@
 | 
					 | 
				
			||||||
 #define PAGE_SHIFT	13
 | 
					 | 
				
			||||||
 #define PAGE_SIZE	(1UL << PAGE_SHIFT)
 | 
					 | 
				
			||||||
 #define PAGE_MASK	(~(PAGE_SIZE-1))
 | 
					 | 
				
			||||||
-
 | 
					 | 
				
			||||||
+#define MMAP2_PAGE_SHIFT PAGE_SHIFT
 | 
					 | 
				
			||||||
 #endif /* _UCLIBC_PAGE_H */
 | 
					 | 
				
			||||||
@@ -1,31 +0,0 @@
 | 
				
			|||||||
diff -urN uClibc-0.9.28.2.orig/libc/sysdeps/linux/cris/crt0.c uClibc-0.9.28.2/libc/sysdeps/linux/cris/crt0.c
 | 
					 | 
				
			||||||
--- uClibc-0.9.28.2.orig/libc/sysdeps/linux/cris/crt0.c	2007-05-18 00:27:56.000000000 +0200
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28.2/libc/sysdeps/linux/cris/crt0.c	2007-05-18 00:32:08.000000000 +0200
 | 
					 | 
				
			||||||
@@ -31,11 +31,10 @@
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 #include <features.h>
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-extern void __uClibc_main(int argc, char **argv, char **envp)
 | 
					 | 
				
			||||||
-         __attribute__ ((__noreturn__));
 | 
					 | 
				
			||||||
-extern void __uClibc_start_main(int argc, char **argv, char **envp, 
 | 
					 | 
				
			||||||
-	void (*app_init)(void), void (*app_fini)(void))
 | 
					 | 
				
			||||||
-         __attribute__ ((__noreturn__));
 | 
					 | 
				
			||||||
+extern void __uClibc_main(int (*main)(int, char **, char **), int argc,
 | 
					 | 
				
			||||||
+		    char **argv, void (*app_init)(void), void (*app_fini)(void),
 | 
					 | 
				
			||||||
+		    void (*rtld_fini)(void), void *stack_end) __attribute__ ((__noreturn__)); 
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
 extern void weak_function _init(void);
 | 
					 | 
				
			||||||
 extern void weak_function _fini(void);
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
@@ -64,10 +63,5 @@
 | 
					 | 
				
			||||||
 		 */
 | 
					 | 
				
			||||||
 		--environ;
 | 
					 | 
				
			||||||
 	
 | 
					 | 
				
			||||||
-#if defined L_crt0 || ! defined __UCLIBC_CTOR_DTOR__
 | 
					 | 
				
			||||||
-	/* Leave control to the libc */
 | 
					 | 
				
			||||||
-	__uClibc_main(argc, argv, environ);
 | 
					 | 
				
			||||||
-#else
 | 
					 | 
				
			||||||
-	__uClibc_start_main(argc, argv, environ, _init, _fini);
 | 
					 | 
				
			||||||
-#endif
 | 
					 | 
				
			||||||
+	__uClibc_main(__mainp, argc, argv, 0, 0, 0, 0);
 | 
					 | 
				
			||||||
 }
 | 
					 | 
				
			||||||
@@ -1,11 +0,0 @@
 | 
				
			|||||||
--- uClibc-0.9.28.2.orig/libc/sysdeps/linux/cris/sysdep.S	2007-06-10 23:00:19.000000000 +0200
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28.2/libc/sysdeps/linux/cris/sysdep.S	2007-06-10 23:01:23.000000000 +0200
 | 
					 | 
				
			||||||
@@ -25,7 +25,7 @@
 | 
					 | 
				
			||||||
 	.type	C_SYMBOL_NAME(errno),@object
 | 
					 | 
				
			||||||
 	.lcomm	C_SYMBOL_NAME(errno),4
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-	errno = _errno
 | 
					 | 
				
			||||||
+	//errno = _errno
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 	/* weak_alias (errno, _errno) */
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
@@ -1,28 +0,0 @@
 | 
				
			|||||||
From 7b2f125425cf777e7937b533217588e27952b87d Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Haavard Skinnemoen <hskinnemoen@atmel.com>
 | 
					 | 
				
			||||||
Date: Mon, 7 Aug 2006 11:12:50 +0200
 | 
					 | 
				
			||||||
Subject: [PATCH] Let optimized stringops override default ones
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The default, slow stringops must be archived _before_ the optimized
 | 
					 | 
				
			||||||
stringops if there is to be any point doing the optimizations in the
 | 
					 | 
				
			||||||
first place.
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 libc/Makefile |    2 +-
 | 
					 | 
				
			||||||
 1 files changed, 1 insertions(+), 1 deletions(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
diff --git a/libc/Makefile b/libc/Makefile
 | 
					 | 
				
			||||||
index 31e4bab..687eac5 100644
 | 
					 | 
				
			||||||
--- a/libc/Makefile
 | 
					 | 
				
			||||||
+++ b/libc/Makefile
 | 
					 | 
				
			||||||
@@ -59,7 +59,7 @@ # will evaluate to no files :(.
 | 
					 | 
				
			||||||
 	$(AR) dN 2 $(LIBNAME) $$objs && \
 | 
					 | 
				
			||||||
 	$(AR) dN 2 $(LIBNAME) $$objs
 | 
					 | 
				
			||||||
 	@for objfile in obj.signal \
 | 
					 | 
				
			||||||
-	                obj.string.generic obj.string.$(TARGET_ARCH) obj.string \
 | 
					 | 
				
			||||||
+	                obj.string obj.string.generic obj.string.$(TARGET_ARCH) \
 | 
					 | 
				
			||||||
 	                obj.sysdeps.common obj.sysdeps.$(TARGET_ARCH) ; do \
 | 
					 | 
				
			||||||
 		if [ -e $$objfile ] ; then \
 | 
					 | 
				
			||||||
 			if [ "$(MAKE_IS_SILENT)" = "n" ] ; then \
 | 
					 | 
				
			||||||
-- 
 | 
					 | 
				
			||||||
1.4.1.1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@@ -1,19 +0,0 @@
 | 
				
			|||||||
Subject: [PATCH] Fix getrusage argument type
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The first argument to getrusage is of type __rusage_who_t, not int.
 | 
					 | 
				
			||||||
This patch fixes that.
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 libc/sysdeps/linux/common/getrusage.c |    2 +-
 | 
					 | 
				
			||||||
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Index: uClibc-0.9.28/libc/sysdeps/linux/common/getrusage.c
 | 
					 | 
				
			||||||
===================================================================
 | 
					 | 
				
			||||||
--- uClibc-0.9.28.orig/libc/sysdeps/linux/common/getrusage.c	2006-02-07 17:18:22.000000000 +0100
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28/libc/sysdeps/linux/common/getrusage.c	2006-02-07 17:18:31.000000000 +0100
 | 
					 | 
				
			||||||
@@ -10,4 +10,4 @@
 | 
					 | 
				
			||||||
 #include "syscalls.h"
 | 
					 | 
				
			||||||
 #include <unistd.h>
 | 
					 | 
				
			||||||
 #include <wait.h>
 | 
					 | 
				
			||||||
-_syscall2(int, getrusage, int, who, struct rusage *, usage);
 | 
					 | 
				
			||||||
+_syscall2(int, getrusage, __rusage_who_t, who, struct rusage *, usage);
 | 
					 | 
				
			||||||
@@ -1,24 +0,0 @@
 | 
				
			|||||||
Subject: [PATCH] Fix __libc_fcntl64 prototype in __syscall_fcntl.c
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__libc_fcntl64 is a varargs function and should be declared as such.
 | 
					 | 
				
			||||||
Otherwise, the gcc compiler for AVR32, and perhaps other architectures,
 | 
					 | 
				
			||||||
will use the wrong calling convention.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 libc/sysdeps/linux/common/__syscall_fcntl.c |    2 +-
 | 
					 | 
				
			||||||
 1 file changed, 1 insertion(+), 1 deletion(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Index: uClibc-0.9.28/libc/sysdeps/linux/common/__syscall_fcntl.c
 | 
					 | 
				
			||||||
===================================================================
 | 
					 | 
				
			||||||
--- uClibc-0.9.28.orig/libc/sysdeps/linux/common/__syscall_fcntl.c	2006-02-07 16:48:32.000000000 +0100
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28/libc/sysdeps/linux/common/__syscall_fcntl.c	2006-02-07 17:19:09.000000000 +0100
 | 
					 | 
				
			||||||
@@ -12,7 +12,7 @@
 | 
					 | 
				
			||||||
 #include <fcntl.h>
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 #if defined __UCLIBC_HAS_LFS__ && defined __NR_fcntl64
 | 
					 | 
				
			||||||
-extern int __libc_fcntl64(int fd, int cmd, long arg);
 | 
					 | 
				
			||||||
+extern int __libc_fcntl64(int fd, int cmd, ...);
 | 
					 | 
				
			||||||
 #endif
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 #define __NR___syscall_fcntl __NR_fcntl
 | 
					 | 
				
			||||||
@@ -1,30 +0,0 @@
 | 
				
			|||||||
From nobody Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
From: Håvard Skinnemoen <hskinnemoen@atmel.com>
 | 
					 | 
				
			||||||
Date: Fri Apr 7 17:10:32 2006 +0200
 | 
					 | 
				
			||||||
Subject: [PATCH] Fix broken __libc_open declaration in open64.c
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
__libc_open is a vararg function and should therefore be declared as
 | 
					 | 
				
			||||||
such. Fixes bug #4190.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 libc/sysdeps/linux/common/open64.c |    2 +-
 | 
					 | 
				
			||||||
 1 files changed, 1 insertions(+), 1 deletions(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
70f2c81903327a8a346e370830932b80045ab04e
 | 
					 | 
				
			||||||
diff --git a/libc/sysdeps/linux/common/open64.c b/libc/sysdeps/linux/common/open64.c
 | 
					 | 
				
			||||||
index 543aa13..d9a27a7 100644
 | 
					 | 
				
			||||||
--- a/libc/sysdeps/linux/common/open64.c
 | 
					 | 
				
			||||||
+++ b/libc/sysdeps/linux/common/open64.c
 | 
					 | 
				
			||||||
@@ -26,7 +26,7 @@
 | 
					 | 
				
			||||||
 #endif
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 #ifdef __UCLIBC_HAS_LFS__
 | 
					 | 
				
			||||||
-extern int __libc_open (__const char *file, int oflag, mode_t mode);
 | 
					 | 
				
			||||||
+extern int __libc_open (__const char *file, int oflag, ...);
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 /* Open FILE with access OFLAG.  If OFLAG includes O_CREAT,
 | 
					 | 
				
			||||||
    a third argument is the file protection.  */
 | 
					 | 
				
			||||||
-- 
 | 
					 | 
				
			||||||
1.2.4
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,40 +0,0 @@
 | 
				
			|||||||
From nobody Mon Sep 17 00:00:00 2001
 | 
					 | 
				
			||||||
Subject: [PATCH] Make linkrelax configurable
 | 
					 | 
				
			||||||
From: Håvard Skinnemoen <hskinnemoen@atmel.com>
 | 
					 | 
				
			||||||
Date: 1133951618 +0100
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Add a linkrelax option to the configure system which will give
 | 
					 | 
				
			||||||
appropriate options to the compiler, assembler and linker to enable
 | 
					 | 
				
			||||||
link-time optimizations.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 Rules.mak                  |    2 ++
 | 
					 | 
				
			||||||
 extra/Configs/Config.avr32 |    4 ++++
 | 
					 | 
				
			||||||
 2 files changed, 6 insertions(+)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Index: uClibc-0.9.28/Rules.mak
 | 
					 | 
				
			||||||
===================================================================
 | 
					 | 
				
			||||||
--- uClibc-0.9.28.orig/Rules.mak	2006-02-08 17:58:53.000000000 +0100
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28/Rules.mak	2006-02-08 17:59:07.000000000 +0100
 | 
					 | 
				
			||||||
@@ -233,6 +233,8 @@ endif
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 ifeq ($(strip $(TARGET_ARCH)),avr32)
 | 
					 | 
				
			||||||
 	CPU_CFLAGS-$(CONFIG_AP7000)	+= -mcpu=ap7000
 | 
					 | 
				
			||||||
+	CPU_CFLAGS-$(LINKRELAX)		+= -masm-addr-pseudos -Wa,--pic,--linkrelax
 | 
					 | 
				
			||||||
+	CPU_LDFLAGS-$(LINKRELAX)	+= --relax
 | 
					 | 
				
			||||||
 endif
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 # Keep the check_gcc from being needlessly executed
 | 
					 | 
				
			||||||
Index: uClibc-0.9.28/extra/Configs/Config.avr32
 | 
					 | 
				
			||||||
===================================================================
 | 
					 | 
				
			||||||
--- uClibc-0.9.28.orig/extra/Configs/Config.avr32	2006-02-08 17:58:53.000000000 +0100
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28/extra/Configs/Config.avr32	2006-02-08 17:59:07.000000000 +0100
 | 
					 | 
				
			||||||
@@ -36,3 +36,7 @@ config CONFIG_AP7000
 | 
					 | 
				
			||||||
 	bool "AP7000"
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 endchoice
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+config LINKRELAX
 | 
					 | 
				
			||||||
+	bool "Enable linker optimizations"
 | 
					 | 
				
			||||||
+	default n
 | 
					 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,27 +0,0 @@
 | 
				
			|||||||
Subject: [PATCH] Don't include create_module() for AVR32
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
The create_module() system call is obsolete in Linux 2.6, so the
 | 
					 | 
				
			||||||
AVR32 kernel doesn't even have it.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Come to think about it, this should be completely unnecessary as the
 | 
					 | 
				
			||||||
create_module function is only a stub when __NR_create_module is
 | 
					 | 
				
			||||||
undefined.
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 libc/sysdeps/linux/common/create_module.c |    3 ++-
 | 
					 | 
				
			||||||
 1 file changed, 2 insertions(+), 1 deletion(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Index: uClibc-0.9.28/libc/sysdeps/linux/common/create_module.c
 | 
					 | 
				
			||||||
===================================================================
 | 
					 | 
				
			||||||
--- uClibc-0.9.28.orig/libc/sysdeps/linux/common/create_module.c	2006-02-07 16:48:38.000000000 +0100
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28/libc/sysdeps/linux/common/create_module.c	2006-02-07 17:17:14.000000000 +0100
 | 
					 | 
				
			||||||
@@ -61,7 +61,8 @@ unsigned long create_module(const char *
 | 
					 | 
				
			||||||
 {
 | 
					 | 
				
			||||||
   return __create_module(name, size, 0, 0);
 | 
					 | 
				
			||||||
 }
 | 
					 | 
				
			||||||
-#else
 | 
					 | 
				
			||||||
+/* create_module is obsolete in Linux 2.6, so AVR32 doesn't have it */
 | 
					 | 
				
			||||||
+#elif !defined(__avr32__)
 | 
					 | 
				
			||||||
 /* Sparc, MIPS, etc don't mistake return values for errors. */ 
 | 
					 | 
				
			||||||
 _syscall2(unsigned long, create_module, const char *, name, size_t, size);
 | 
					 | 
				
			||||||
 #endif
 | 
					 | 
				
			||||||
@@ -1,526 +0,0 @@
 | 
				
			|||||||
Subject: [PATCH] ldso: AVR32 support
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This implements the AVR32-specific parts of the dynamic linker.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 ldso/ldso/avr32/dl-debug.h    |   45 +++++++++
 | 
					 | 
				
			||||||
 ldso/ldso/avr32/dl-startup.h  |  110 ++++++++++++++++++++++++
 | 
					 | 
				
			||||||
 ldso/ldso/avr32/dl-syscalls.h |    5 +
 | 
					 | 
				
			||||||
 ldso/ldso/avr32/dl-sysdep.h   |  103 ++++++++++++++++++++++
 | 
					 | 
				
			||||||
 ldso/ldso/avr32/elfinterp.c   |  191 ++++++++++++++++++++++++++++++++++++++++++
 | 
					 | 
				
			||||||
 ldso/ldso/avr32/resolve.S     |   28 ++++++
 | 
					 | 
				
			||||||
 6 files changed, 482 insertions(+)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Index: uClibc-0.9.28/ldso/ldso/avr32/dl-debug.h
 | 
					 | 
				
			||||||
===================================================================
 | 
					 | 
				
			||||||
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28/ldso/ldso/avr32/dl-debug.h	2006-05-05 09:30:43.000000000 +0200
 | 
					 | 
				
			||||||
@@ -0,0 +1,45 @@
 | 
					 | 
				
			||||||
+/*
 | 
					 | 
				
			||||||
+ * AVR32 ELF shared libary loader support
 | 
					 | 
				
			||||||
+ *
 | 
					 | 
				
			||||||
+ * Copyright (C) 2005 Atmel Norway
 | 
					 | 
				
			||||||
+ * All rights reserved.
 | 
					 | 
				
			||||||
+ *
 | 
					 | 
				
			||||||
+ * Redistribution and use in source and binary forms, with or without
 | 
					 | 
				
			||||||
+ * modification, are permitted provided that the following conditions
 | 
					 | 
				
			||||||
+ * are met:
 | 
					 | 
				
			||||||
+ * 1. Redistributions of source code must retain the above copyright
 | 
					 | 
				
			||||||
+ *    notice, this list of conditions and the following disclaimer.
 | 
					 | 
				
			||||||
+ * 2. The name of the above contributors may not be
 | 
					 | 
				
			||||||
+ *    used to endorse or promote products derived from this software
 | 
					 | 
				
			||||||
+ *    without specific prior written permission.
 | 
					 | 
				
			||||||
+ *
 | 
					 | 
				
			||||||
+ * THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND
 | 
					 | 
				
			||||||
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
					 | 
				
			||||||
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
					 | 
				
			||||||
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE
 | 
					 | 
				
			||||||
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
					 | 
				
			||||||
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
					 | 
				
			||||||
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
					 | 
				
			||||||
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
					 | 
				
			||||||
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
					 | 
				
			||||||
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
					 | 
				
			||||||
+ * SUCH DAMAGE.
 | 
					 | 
				
			||||||
+ */
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+static const char *_dl_reltypes_tab[] = {
 | 
					 | 
				
			||||||
+    "R_AVR32_NONE",
 | 
					 | 
				
			||||||
+    "R_AVR32_32", "R_AVR32_16", "R_AVR32_8",
 | 
					 | 
				
			||||||
+    "R_AVR32_32_PCREL", "R_AVR32_16_PCREL", "R_AVR32_8_PCREL",
 | 
					 | 
				
			||||||
+    "R_AVR32_DIFF32", "R_AVR32_DIFF16", "R_AVR32_DIFF8",
 | 
					 | 
				
			||||||
+    "R_AVR32_GOT32", "R_AVR32_GOT16", "R_AVR32_GOT8",
 | 
					 | 
				
			||||||
+    "R_AVR32_21S", "R_AVR32_16U", "R_AVR32_16S", "R_AVR32_8S", "R_AVR32_8S_EXT",
 | 
					 | 
				
			||||||
+    "R_AVR32_22H_PCREL", "R_AVR32_18W_PCREL", "R_AVR32_16B_PCREL",
 | 
					 | 
				
			||||||
+    "R_AVR32_16N_PCREL", "R_AVR32_14UW_PCREL", "R_AVR32_11H_PCREL",
 | 
					 | 
				
			||||||
+    "R_AVR32_10UW_PCREL", "R_AVR32_9H_PCREL", "R_AVR32_9UW_PCREL",
 | 
					 | 
				
			||||||
+    "R_AVR32_HI16", "R_AVR32_LO16",
 | 
					 | 
				
			||||||
+    "R_AVR32_GOTPC", "R_AVR32_GOTCALL", "R_AVR32_LDA_GOT",
 | 
					 | 
				
			||||||
+    "R_AVR32_GOT21S", "R_AVR32_GOT18SW", "R_AVR32_GOT16S", "R_AVR32_GOT7UW",
 | 
					 | 
				
			||||||
+    "R_AVR32_32_CPENT", "R_AVR32_CPCALL", "R_AVR32_16_CP", "R_AVR32_9W_CP",
 | 
					 | 
				
			||||||
+    "R_AVR32_RELATIVE", "R_AVR32_GLOB_DAT", "R_AVR32_JMP_SLOT",
 | 
					 | 
				
			||||||
+    "R_AVR32_ALIGN",
 | 
					 | 
				
			||||||
+};
 | 
					 | 
				
			||||||
Index: uClibc-0.9.28/ldso/ldso/avr32/dl-startup.h
 | 
					 | 
				
			||||||
===================================================================
 | 
					 | 
				
			||||||
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28/ldso/ldso/avr32/dl-startup.h	2006-05-05 09:29:45.000000000 +0200
 | 
					 | 
				
			||||||
@@ -0,0 +1,110 @@
 | 
					 | 
				
			||||||
+/* vi: set sw=4 ts=4: */
 | 
					 | 
				
			||||||
+/*
 | 
					 | 
				
			||||||
+ * Architecture specific code used by dl-startup.c
 | 
					 | 
				
			||||||
+ * Copyright (C) 2005 Atmel Norway
 | 
					 | 
				
			||||||
+ */
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+/* This is the library loader's main entry point. Let _dl_boot2 do its
 | 
					 | 
				
			||||||
+ * initializations and jump to the application's entry point
 | 
					 | 
				
			||||||
+ * afterwards. */
 | 
					 | 
				
			||||||
+asm(	"	.text\n"
 | 
					 | 
				
			||||||
+	"	.global	_start\n"
 | 
					 | 
				
			||||||
+	"	.type	_start,@function\n"
 | 
					 | 
				
			||||||
+	"_start:\n"
 | 
					 | 
				
			||||||
+	/* All arguments are on the stack initially */
 | 
					 | 
				
			||||||
+	"	mov	r12, sp\n"
 | 
					 | 
				
			||||||
+	"	rcall	_dl_start\n"
 | 
					 | 
				
			||||||
+	/* Returns user entry point in r12. Save it. */
 | 
					 | 
				
			||||||
+	"	mov	r0, r12\n"
 | 
					 | 
				
			||||||
+	/* We're PIC, so get the Global Offset Table */
 | 
					 | 
				
			||||||
+	"	lddpc	r6, .L_GOT\n"
 | 
					 | 
				
			||||||
+	".L_RGOT:\n"
 | 
					 | 
				
			||||||
+	"	rsub	r6, pc\n"
 | 
					 | 
				
			||||||
+	/* Adjust argc and argv according to _dl_skip_args */
 | 
					 | 
				
			||||||
+	"	ld.w	r1, r6[_dl_skip_args@got]\n"
 | 
					 | 
				
			||||||
+	"	ld.w	r1, r1[0]\n"
 | 
					 | 
				
			||||||
+	"	ld.w	r2, sp++\n"
 | 
					 | 
				
			||||||
+	"	sub	r2, r1\n"
 | 
					 | 
				
			||||||
+	"	add	sp, sp, r1 << 2\n"
 | 
					 | 
				
			||||||
+	"	st.w	--sp, r2\n"
 | 
					 | 
				
			||||||
+	/* Load the finalizer function */
 | 
					 | 
				
			||||||
+	"	ld.w	r12, r6[_dl_fini@got]\n"
 | 
					 | 
				
			||||||
+	/* Jump to the user's entry point */
 | 
					 | 
				
			||||||
+	"	mov	pc, r0\n\n"
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+	"	.align	2\n"
 | 
					 | 
				
			||||||
+	".L_GOT:"
 | 
					 | 
				
			||||||
+	"	.long	.L_RGOT - _GLOBAL_OFFSET_TABLE_\n"
 | 
					 | 
				
			||||||
+	"	.size	_start, . - _start\n"
 | 
					 | 
				
			||||||
+	"	.previous\n");
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+/* Get a pointer to the argv array.  On many platforms this can be just
 | 
					 | 
				
			||||||
+ * the address if the first argument, on other platforms we need to
 | 
					 | 
				
			||||||
+ * do something a little more subtle here. */
 | 
					 | 
				
			||||||
+#define GET_ARGV(ARGVP, ARGS) ARGVP = ((unsigned long *)ARGS + 1)
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+/* We can't call functions before the GOT has been initialized */
 | 
					 | 
				
			||||||
+#define NO_FUNCS_BEFORE_BOOTSTRAP
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+/*
 | 
					 | 
				
			||||||
+ * Relocate the GOT during dynamic loader bootstrap.  This will add
 | 
					 | 
				
			||||||
+ * the load address to all entries in the GOT, which is necessary
 | 
					 | 
				
			||||||
+ * because the linker doesn't generate R_AVR32_RELATIVE relocs for the
 | 
					 | 
				
			||||||
+ * GOT.
 | 
					 | 
				
			||||||
+ */
 | 
					 | 
				
			||||||
+static __always_inline
 | 
					 | 
				
			||||||
+void PERFORM_BOOTSTRAP_GOT(struct elf_resolve *tpnt)
 | 
					 | 
				
			||||||
+{
 | 
					 | 
				
			||||||
+	Elf32_Addr i, nr_got;
 | 
					 | 
				
			||||||
+	register Elf32_Addr *__r6 __asm__("r6");
 | 
					 | 
				
			||||||
+	Elf32_Addr *got = __r6;
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+	nr_got = tpnt->dynamic_info[DT_AVR32_GOTSZ_IDX] / sizeof(*got);
 | 
					 | 
				
			||||||
+	for (i = 2; i < nr_got; i++)
 | 
					 | 
				
			||||||
+		got[i] += tpnt->loadaddr;
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+#define PERFORM_BOOTSTRAP_GOT(tpnt) PERFORM_BOOTSTRAP_GOT(tpnt)
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+/* Handle relocation of the symbols in the dynamic loader. */
 | 
					 | 
				
			||||||
+static __always_inline
 | 
					 | 
				
			||||||
+void PERFORM_BOOTSTRAP_RELOC(ELF_RELOC *rpnt, unsigned long *reloc_addr,
 | 
					 | 
				
			||||||
+			     unsigned long symbol_addr,
 | 
					 | 
				
			||||||
+			     unsigned long load_addr, Elf32_Sym *symtab)
 | 
					 | 
				
			||||||
+{
 | 
					 | 
				
			||||||
+	switch(ELF32_R_TYPE(rpnt->r_info)) {
 | 
					 | 
				
			||||||
+	case R_AVR32_NONE:
 | 
					 | 
				
			||||||
+		break;
 | 
					 | 
				
			||||||
+	case R_AVR32_GLOB_DAT:
 | 
					 | 
				
			||||||
+	case R_AVR32_JMP_SLOT:
 | 
					 | 
				
			||||||
+		*reloc_addr = symbol_addr;
 | 
					 | 
				
			||||||
+		break;
 | 
					 | 
				
			||||||
+	case R_AVR32_RELATIVE:
 | 
					 | 
				
			||||||
+		SEND_STDERR_DEBUG("Applying RELATIVE relocation: ");
 | 
					 | 
				
			||||||
+		SEND_ADDRESS_STDERR_DEBUG(load_addr, 0);
 | 
					 | 
				
			||||||
+		SEND_STDERR_DEBUG(" + ");
 | 
					 | 
				
			||||||
+		SEND_ADDRESS_STDERR_DEBUG(rpnt->r_addend, 1);
 | 
					 | 
				
			||||||
+		*reloc_addr = load_addr + rpnt->r_addend;
 | 
					 | 
				
			||||||
+		break;
 | 
					 | 
				
			||||||
+	default:
 | 
					 | 
				
			||||||
+		SEND_STDERR("BOOTSTRAP_RELOC: unhandled reloc_type ");
 | 
					 | 
				
			||||||
+		SEND_NUMBER_STDERR(ELF32_R_TYPE(rpnt->r_info), 1);
 | 
					 | 
				
			||||||
+		SEND_STDERR("REL, SYMBOL, LOAD: ");
 | 
					 | 
				
			||||||
+		SEND_ADDRESS_STDERR(reloc_addr, 0);
 | 
					 | 
				
			||||||
+		SEND_STDERR(", ");
 | 
					 | 
				
			||||||
+		SEND_ADDRESS_STDERR(symbol_addr, 0);
 | 
					 | 
				
			||||||
+		SEND_STDERR(", ");
 | 
					 | 
				
			||||||
+		SEND_ADDRESS_STDERR(load_addr, 1);
 | 
					 | 
				
			||||||
+		_dl_exit(1);
 | 
					 | 
				
			||||||
+	}
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+/* Transfer control to the user's application, once the dynamic loader
 | 
					 | 
				
			||||||
+ * is done. This routine has to exit the current function, then call
 | 
					 | 
				
			||||||
+ * the _dl_elf_main function.
 | 
					 | 
				
			||||||
+ *
 | 
					 | 
				
			||||||
+ * Since our _dl_boot will simply call whatever is returned by
 | 
					 | 
				
			||||||
+ * _dl_boot2, we can just return the address we're supposed to
 | 
					 | 
				
			||||||
+ * call.  */
 | 
					 | 
				
			||||||
+#define START()	return _dl_elf_main;
 | 
					 | 
				
			||||||
Index: uClibc-0.9.28/ldso/ldso/avr32/dl-syscalls.h
 | 
					 | 
				
			||||||
===================================================================
 | 
					 | 
				
			||||||
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28/ldso/ldso/avr32/dl-syscalls.h	2006-05-05 09:29:25.000000000 +0200
 | 
					 | 
				
			||||||
@@ -0,0 +1,5 @@
 | 
					 | 
				
			||||||
+/* We can't use the real errno in ldso, since it has not yet
 | 
					 | 
				
			||||||
+ * been dynamicly linked in yet. */
 | 
					 | 
				
			||||||
+extern int _dl_errno;
 | 
					 | 
				
			||||||
+#define __set_errno(X) {(_dl_errno) = (X);}
 | 
					 | 
				
			||||||
+#include "sys/syscall.h"
 | 
					 | 
				
			||||||
Index: uClibc-0.9.28/ldso/ldso/avr32/dl-sysdep.h
 | 
					 | 
				
			||||||
===================================================================
 | 
					 | 
				
			||||||
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28/ldso/ldso/avr32/dl-sysdep.h	2006-05-05 09:30:43.000000000 +0200
 | 
					 | 
				
			||||||
@@ -0,0 +1,103 @@
 | 
					 | 
				
			||||||
+/* vi: set sw=4 ts=4: */
 | 
					 | 
				
			||||||
+/*
 | 
					 | 
				
			||||||
+ * Various assembly language/system dependent hacks that are required
 | 
					 | 
				
			||||||
+ * so that we can minimize the amount of platform specific code.
 | 
					 | 
				
			||||||
+ * Copyright (C) 2004-2005 Atmel Norway
 | 
					 | 
				
			||||||
+ */
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+/* Define this if the system uses RELOCA. */
 | 
					 | 
				
			||||||
+#define ELF_USES_RELOCA
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+#include <elf.h>
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+#define ARCH_NUM 1
 | 
					 | 
				
			||||||
+#define DT_AVR32_GOTSZ_IDX	(DT_NUM + OS_NUM)
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+#define ARCH_DYNAMIC_INFO(dpnt, dynamic, debug_addr)			\
 | 
					 | 
				
			||||||
+	do {								\
 | 
					 | 
				
			||||||
+		if (dpnt->d_tag == DT_AVR32_GOTSZ)			\
 | 
					 | 
				
			||||||
+			dynamic[DT_AVR32_GOTSZ_IDX] = dpnt->d_un.d_val;	\
 | 
					 | 
				
			||||||
+	} while (0)
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+/* Initialization sequence for the application/library GOT. */
 | 
					 | 
				
			||||||
+#define INIT_GOT(GOT_BASE,MODULE)					\
 | 
					 | 
				
			||||||
+	do {								\
 | 
					 | 
				
			||||||
+		unsigned long i, nr_got;				\
 | 
					 | 
				
			||||||
+									\
 | 
					 | 
				
			||||||
+		GOT_BASE[0] = (unsigned long) _dl_linux_resolve;	\
 | 
					 | 
				
			||||||
+		GOT_BASE[1] = (unsigned long) MODULE;			\
 | 
					 | 
				
			||||||
+									\
 | 
					 | 
				
			||||||
+		/* Add load address displacement to all GOT entries */	\
 | 
					 | 
				
			||||||
+		nr_got = MODULE->dynamic_info[DT_AVR32_GOTSZ_IDX] / 4;	\
 | 
					 | 
				
			||||||
+		for (i = 2; i < nr_got; i++)				\
 | 
					 | 
				
			||||||
+			GOT_BASE[i] += (unsigned long)MODULE->loadaddr;	\
 | 
					 | 
				
			||||||
+	} while (0)
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+#define do_rem(result, n, base)	((result) = (n) % (base))
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+/* Here we define the magic numbers that this dynamic loader should accept */
 | 
					 | 
				
			||||||
+#define MAGIC1 EM_AVR32
 | 
					 | 
				
			||||||
+#undef MAGIC2
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+/* Used for error messages */
 | 
					 | 
				
			||||||
+#define ELF_TARGET "AVR32"
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+unsigned long _dl_linux_resolver(unsigned long got_offset, unsigned long *got);
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+/* 4096 bytes alignment */
 | 
					 | 
				
			||||||
+#define PAGE_ALIGN 0xfffff000
 | 
					 | 
				
			||||||
+#define ADDR_ALIGN 0xfff
 | 
					 | 
				
			||||||
+#define OFFS_ALIGN 0x7ffff000
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+#define elf_machine_type_class(type)				\
 | 
					 | 
				
			||||||
+	((type == R_AVR32_JMP_SLOT) * ELF_RTYPE_CLASS_PLT)
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+/* AVR32 doesn't need any COPY relocs */
 | 
					 | 
				
			||||||
+#define DL_NO_COPY_RELOCS
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+/* Return the link-time address of _DYNAMIC.  Conveniently, this is the
 | 
					 | 
				
			||||||
+   first element of the GOT.  This must be inlined in a function which
 | 
					 | 
				
			||||||
+   uses global data.  */
 | 
					 | 
				
			||||||
+static inline Elf32_Addr
 | 
					 | 
				
			||||||
+elf_machine_dynamic (void)
 | 
					 | 
				
			||||||
+{
 | 
					 | 
				
			||||||
+	register Elf32_Addr *got asm ("r6");
 | 
					 | 
				
			||||||
+	return *got;
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+/* Return the run-time load address of the shared object.  */
 | 
					 | 
				
			||||||
+static inline Elf32_Addr
 | 
					 | 
				
			||||||
+elf_machine_load_address (void)
 | 
					 | 
				
			||||||
+{
 | 
					 | 
				
			||||||
+	extern void __dl_start asm("_dl_start");
 | 
					 | 
				
			||||||
+	Elf32_Addr got_addr = (Elf32_Addr) &__dl_start;
 | 
					 | 
				
			||||||
+	Elf32_Addr pcrel_addr;
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+	asm   ("	lddpc	%0, 2f\n"
 | 
					 | 
				
			||||||
+	       "1:	add	%0, pc\n"
 | 
					 | 
				
			||||||
+	       "	rjmp	3f\n"
 | 
					 | 
				
			||||||
+	       "	.align	2\n"
 | 
					 | 
				
			||||||
+	       "2:	.long	_dl_start - 1b\n"
 | 
					 | 
				
			||||||
+	       "3:\n"
 | 
					 | 
				
			||||||
+	       : "=r"(pcrel_addr) : : "cc");
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+	return pcrel_addr - got_addr;
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+/*
 | 
					 | 
				
			||||||
+ * Perform any RELATIVE relocations specified by DT_RELCOUNT.
 | 
					 | 
				
			||||||
+ * Currently, we don't use that tag, but we might in the future as
 | 
					 | 
				
			||||||
+ * this would reduce the startup time somewhat (although probably not by much).
 | 
					 | 
				
			||||||
+ */
 | 
					 | 
				
			||||||
+static inline void
 | 
					 | 
				
			||||||
+elf_machine_relative (Elf32_Addr load_off, const Elf32_Addr rel_addr,
 | 
					 | 
				
			||||||
+		      Elf32_Word relative_count)
 | 
					 | 
				
			||||||
+{
 | 
					 | 
				
			||||||
+	Elf32_Rela *rpnt = (void *)rel_addr;
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+	do {
 | 
					 | 
				
			||||||
+		Elf32_Addr *reloc_addr;
 | 
					 | 
				
			||||||
+		reloc_addr = (void *)(load_off + (rpnt++)->r_offset);
 | 
					 | 
				
			||||||
+		*reloc_addr = load_off + rpnt->r_addend;
 | 
					 | 
				
			||||||
+	} while (--relative_count);
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
Index: uClibc-0.9.28/ldso/ldso/avr32/elfinterp.c
 | 
					 | 
				
			||||||
===================================================================
 | 
					 | 
				
			||||||
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28/ldso/ldso/avr32/elfinterp.c	2006-05-05 09:30:43.000000000 +0200
 | 
					 | 
				
			||||||
@@ -0,0 +1,191 @@
 | 
					 | 
				
			||||||
+/*
 | 
					 | 
				
			||||||
+ * AVR32 ELF shared library loader suppport
 | 
					 | 
				
			||||||
+ *
 | 
					 | 
				
			||||||
+ * Copyright (C) 2004-2006 Atmel Corporation
 | 
					 | 
				
			||||||
+ *
 | 
					 | 
				
			||||||
+ * All rights reserved.
 | 
					 | 
				
			||||||
+ *
 | 
					 | 
				
			||||||
+ * Redistribution and use in source and binary forms, with or without
 | 
					 | 
				
			||||||
+ * modification, are permitted provided that the following conditions
 | 
					 | 
				
			||||||
+ * are met:
 | 
					 | 
				
			||||||
+ * 1. Redistributions of source code must retain the above copyright
 | 
					 | 
				
			||||||
+ *    notice, this list of conditions and the following disclaimer.
 | 
					 | 
				
			||||||
+ * 2. The name of the above contributors may not be
 | 
					 | 
				
			||||||
+ *    used to endorse or promote products derived from this software
 | 
					 | 
				
			||||||
+ *    without specific prior written permission.
 | 
					 | 
				
			||||||
+ *
 | 
					 | 
				
			||||||
+ * THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND
 | 
					 | 
				
			||||||
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
					 | 
				
			||||||
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
					 | 
				
			||||||
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE
 | 
					 | 
				
			||||||
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
					 | 
				
			||||||
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
					 | 
				
			||||||
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
					 | 
				
			||||||
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
					 | 
				
			||||||
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
					 | 
				
			||||||
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
					 | 
				
			||||||
+ * SUCH DAMAGE.
 | 
					 | 
				
			||||||
+ */
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+unsigned long _dl_linux_resolver(unsigned long got_offset, unsigned long *got)
 | 
					 | 
				
			||||||
+{
 | 
					 | 
				
			||||||
+	struct elf_resolve *tpnt = (struct elf_resolve *)got[1];
 | 
					 | 
				
			||||||
+	Elf32_Sym *sym;
 | 
					 | 
				
			||||||
+	unsigned long local_gotno;
 | 
					 | 
				
			||||||
+	unsigned long gotsym;
 | 
					 | 
				
			||||||
+	unsigned long new_addr;
 | 
					 | 
				
			||||||
+	char *strtab, *symname;
 | 
					 | 
				
			||||||
+	unsigned long *entry;
 | 
					 | 
				
			||||||
+	unsigned long sym_index = got_offset / 4;
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+#if 0
 | 
					 | 
				
			||||||
+	local_gotno = tpnt->dynamic_info[DT_AVR32_LOCAL_GOTNO];
 | 
					 | 
				
			||||||
+	gotsym = tpnt->dynamic_info[DT_AVR32_GOTSYM];
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+	sym = ((Elf32_Sym *)(tpnt->dynamic_info[DT_SYMTAB] + tpnt->loadaddr))
 | 
					 | 
				
			||||||
+		+ sym_index;
 | 
					 | 
				
			||||||
+	strtab = (char *)(tpnt->dynamic_info[DT_STRTAB] + tpnt->loadaddr);
 | 
					 | 
				
			||||||
+	symname = strtab + sym->st_name;
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+#if 0
 | 
					 | 
				
			||||||
+	new_addr = (unsigned long) _dl_find_hash(strtab + sym->st_name,
 | 
					 | 
				
			||||||
+						 tpnt->symbol_scope, tpnt,
 | 
					 | 
				
			||||||
+						 resolver);
 | 
					 | 
				
			||||||
+#endif
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+	entry = (unsigned long *)(got + local_gotno + sym_index - gotsym);
 | 
					 | 
				
			||||||
+	*entry = new_addr;
 | 
					 | 
				
			||||||
+#endif
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+	return new_addr;
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+static int
 | 
					 | 
				
			||||||
+_dl_parse(struct elf_resolve *tpnt, struct dyn_elf *scope,
 | 
					 | 
				
			||||||
+	  unsigned long rel_addr, unsigned long rel_size,
 | 
					 | 
				
			||||||
+	  int (*reloc_func)(struct elf_resolve *tpnt, struct dyn_elf *scope,
 | 
					 | 
				
			||||||
+			    Elf32_Rela *rpnt, Elf32_Sym *symtab, char *strtab))
 | 
					 | 
				
			||||||
+{
 | 
					 | 
				
			||||||
+	Elf32_Sym *symtab;
 | 
					 | 
				
			||||||
+	Elf32_Rela *rpnt;
 | 
					 | 
				
			||||||
+	char *strtab;
 | 
					 | 
				
			||||||
+	int i;
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+	rpnt = (Elf32_Rela *)rel_addr;
 | 
					 | 
				
			||||||
+	rel_size /= sizeof(Elf32_Rela);
 | 
					 | 
				
			||||||
+	symtab = (Elf32_Sym *)tpnt->dynamic_info[DT_SYMTAB];
 | 
					 | 
				
			||||||
+	strtab = (char *)tpnt->dynamic_info[DT_STRTAB];
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+	for (i = 0; i < rel_size; i++, rpnt++) {
 | 
					 | 
				
			||||||
+		int symtab_index, res;
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+		symtab_index = ELF32_R_SYM(rpnt->r_info);
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+		debug_sym(symtab, strtab, symtab_index);
 | 
					 | 
				
			||||||
+		debug_reloc(symtab, strtab, rpnt);
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+		res = reloc_func(tpnt, scope, rpnt, symtab, strtab);
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+		if (res == 0)
 | 
					 | 
				
			||||||
+			continue;
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+		_dl_dprintf(2, "\n%s: ", _dl_progname);
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+		if (symtab_index)
 | 
					 | 
				
			||||||
+			_dl_dprintf(2, "symbol '%s': ",
 | 
					 | 
				
			||||||
+				    strtab + symtab[symtab_index].st_name);
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+		if (res < 0) {
 | 
					 | 
				
			||||||
+			int reloc_type = ELF32_R_TYPE(rpnt->r_info);
 | 
					 | 
				
			||||||
+#if defined(__SUPPORT_LD_DEBUG__)
 | 
					 | 
				
			||||||
+			_dl_dprintf(2, "can't handle reloc type %s\n",
 | 
					 | 
				
			||||||
+				    _dl_reltypes(reloc_type));
 | 
					 | 
				
			||||||
+#else
 | 
					 | 
				
			||||||
+			_dl_dprintf(2, "can't handle reloc type %x\n",
 | 
					 | 
				
			||||||
+				    reloc_type);
 | 
					 | 
				
			||||||
+#endif
 | 
					 | 
				
			||||||
+			_dl_exit(-res);
 | 
					 | 
				
			||||||
+		} else {
 | 
					 | 
				
			||||||
+			_dl_dprintf(2, "can't resolve symbol\n");
 | 
					 | 
				
			||||||
+			return res;
 | 
					 | 
				
			||||||
+		}
 | 
					 | 
				
			||||||
+	}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+	return 0;
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+static int _dl_do_reloc(struct elf_resolve *tpnt, struct dyn_elf *scope,
 | 
					 | 
				
			||||||
+			Elf32_Rela *rpnt, Elf32_Sym *symtab, char *strtab)
 | 
					 | 
				
			||||||
+{
 | 
					 | 
				
			||||||
+	int reloc_type;
 | 
					 | 
				
			||||||
+	int symtab_index;
 | 
					 | 
				
			||||||
+	char *symname;
 | 
					 | 
				
			||||||
+	unsigned long *reloc_addr;
 | 
					 | 
				
			||||||
+	unsigned long symbol_addr;
 | 
					 | 
				
			||||||
+#if defined(__SUPPORT_LD_DEBUG__)
 | 
					 | 
				
			||||||
+	unsigned long old_val;
 | 
					 | 
				
			||||||
+#endif
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+	reloc_addr = (unsigned long *)(tpnt->loadaddr + rpnt->r_offset);
 | 
					 | 
				
			||||||
+	reloc_type = ELF32_R_TYPE(rpnt->r_info);
 | 
					 | 
				
			||||||
+	symtab_index = ELF32_R_SYM(rpnt->r_info);
 | 
					 | 
				
			||||||
+	symbol_addr = 0;
 | 
					 | 
				
			||||||
+	symname = strtab + symtab[symtab_index].st_name;
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+	if (symtab_index) {
 | 
					 | 
				
			||||||
+		symbol_addr = (unsigned long)
 | 
					 | 
				
			||||||
+			_dl_find_hash(strtab + symtab[symtab_index].st_name,
 | 
					 | 
				
			||||||
+				      tpnt->symbol_scope, tpnt,
 | 
					 | 
				
			||||||
+				      elf_machine_type_class(reloc_type));
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+		/* Allow undefined references to weak symbols */
 | 
					 | 
				
			||||||
+		if (!symbol_addr &&
 | 
					 | 
				
			||||||
+		    ELF32_ST_BIND(symtab[symtab_index].st_info) != STB_WEAK) {
 | 
					 | 
				
			||||||
+			_dl_dprintf(2, "%s: can't resolve symbol '%s'\n",
 | 
					 | 
				
			||||||
+				    _dl_progname, symname);
 | 
					 | 
				
			||||||
+			return 0;
 | 
					 | 
				
			||||||
+		}
 | 
					 | 
				
			||||||
+	}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+#if defined(__SUPPORT_LD_DEBUG__)
 | 
					 | 
				
			||||||
+	old_val = *reloc_addr;
 | 
					 | 
				
			||||||
+#endif
 | 
					 | 
				
			||||||
+	switch (reloc_type) {
 | 
					 | 
				
			||||||
+	case R_AVR32_NONE:
 | 
					 | 
				
			||||||
+		break;
 | 
					 | 
				
			||||||
+	case R_AVR32_GLOB_DAT:
 | 
					 | 
				
			||||||
+	case R_AVR32_JMP_SLOT:
 | 
					 | 
				
			||||||
+		*reloc_addr = symbol_addr + rpnt->r_addend;
 | 
					 | 
				
			||||||
+		break;
 | 
					 | 
				
			||||||
+	case R_AVR32_RELATIVE:
 | 
					 | 
				
			||||||
+		*reloc_addr = (unsigned long)tpnt->loadaddr
 | 
					 | 
				
			||||||
+			+ rpnt->r_addend;
 | 
					 | 
				
			||||||
+		break;
 | 
					 | 
				
			||||||
+	default:
 | 
					 | 
				
			||||||
+		return -1;
 | 
					 | 
				
			||||||
+	}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+#if defined(__SUPPORT_LD_DEBUG__)
 | 
					 | 
				
			||||||
+	if (_dl_debug_reloc && _dl_debug_detail)
 | 
					 | 
				
			||||||
+		_dl_dprintf(_dl_debug_file, "\tpatched: %x ==> %x @ %x\n",
 | 
					 | 
				
			||||||
+			    old_val, *reloc_addr);
 | 
					 | 
				
			||||||
+#endif
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+	return 0;
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+void _dl_parse_lazy_relocation_information(struct dyn_elf *rpnt,
 | 
					 | 
				
			||||||
+					   unsigned long rel_addr,
 | 
					 | 
				
			||||||
+					   unsigned long rel_size)
 | 
					 | 
				
			||||||
+{
 | 
					 | 
				
			||||||
+	/* TODO: Might want to support this in order to get faster
 | 
					 | 
				
			||||||
+	 * startup times... */
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+int _dl_parse_relocation_information(struct dyn_elf *rpnt,
 | 
					 | 
				
			||||||
+				     unsigned long rel_addr,
 | 
					 | 
				
			||||||
+				     unsigned long rel_size)
 | 
					 | 
				
			||||||
+{
 | 
					 | 
				
			||||||
+	return _dl_parse(rpnt->dyn, rpnt->dyn->symbol_scope, rel_addr, rel_size,
 | 
					 | 
				
			||||||
+			 _dl_do_reloc);
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
Index: uClibc-0.9.28/ldso/ldso/avr32/resolve.S
 | 
					 | 
				
			||||||
===================================================================
 | 
					 | 
				
			||||||
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28/ldso/ldso/avr32/resolve.S	2006-05-05 09:29:25.000000000 +0200
 | 
					 | 
				
			||||||
@@ -0,0 +1,28 @@
 | 
					 | 
				
			||||||
+/*
 | 
					 | 
				
			||||||
+ * Linux dynamic resolving code for AVR32. Fixes up the GOT entry as
 | 
					 | 
				
			||||||
+ * indicated in register r12 and jumps to the resolved address.
 | 
					 | 
				
			||||||
+ *
 | 
					 | 
				
			||||||
+ * This file is subject to the terms and conditions of the GNU Lesser General
 | 
					 | 
				
			||||||
+ * Public License.  See the file "COPYING.LIB" in the main directory of this
 | 
					 | 
				
			||||||
+ * archive for more details.
 | 
					 | 
				
			||||||
+ *
 | 
					 | 
				
			||||||
+ * Copyright (C) 2004 Atmel Norway
 | 
					 | 
				
			||||||
+ */
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+#define ip r5
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+	.text
 | 
					 | 
				
			||||||
+	.global	_dl_linux_resolve
 | 
					 | 
				
			||||||
+	.type	_dl_linux_resolve,@function
 | 
					 | 
				
			||||||
+_dl_linux_resolve:
 | 
					 | 
				
			||||||
+	/* The PLT code pushed r8 for us. It contains the address of this
 | 
					 | 
				
			||||||
+	   function's GOT entry, that is entry 0. ip contains the address
 | 
					 | 
				
			||||||
+	   of the GOT entry of the function we wanted to call. */
 | 
					 | 
				
			||||||
+	stm	--sp, r9-r12, lr
 | 
					 | 
				
			||||||
+	mov	r11, r8
 | 
					 | 
				
			||||||
+	sub	r12, ip, r8
 | 
					 | 
				
			||||||
+	rcall	_dl_linux_resolver
 | 
					 | 
				
			||||||
+	mov	ip, r12
 | 
					 | 
				
			||||||
+	popm	r8-r12,lr
 | 
					 | 
				
			||||||
+	mov	pc, ip
 | 
					 | 
				
			||||||
+	.size	_dl_linux_resolve, . - _dl_linux_resolve
 | 
					 | 
				
			||||||
@@ -1,40 +0,0 @@
 | 
				
			|||||||
Subject: [PATCH] ldso: AVR32 startup hack
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AVR32 needs to do both PERFORM_BOOTSTRAP_GOT and a full relocation of
 | 
					 | 
				
			||||||
the GOT. I don't quite remember why, but I think it's because some GOT
 | 
					 | 
				
			||||||
entries just need the load address added to them, while the rest need
 | 
					 | 
				
			||||||
the full relocation code.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
This patch should be revisited to figure out whether we're processing
 | 
					 | 
				
			||||||
relocations against undefined symbols and whether that's something we
 | 
					 | 
				
			||||||
should be doing...
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 ldso/ldso/dl-startup.c |    6 ++++--
 | 
					 | 
				
			||||||
 1 file changed, 4 insertions(+), 2 deletions(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Index: uClibc-0.9.28/ldso/ldso/dl-startup.c
 | 
					 | 
				
			||||||
===================================================================
 | 
					 | 
				
			||||||
--- uClibc-0.9.28.orig/ldso/ldso/dl-startup.c	2006-02-07 16:49:27.000000000 +0100
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28/ldso/ldso/dl-startup.c	2006-02-07 17:12:09.000000000 +0100
 | 
					 | 
				
			||||||
@@ -217,7 +217,9 @@ static void * __attribute_used__ _dl_sta
 | 
					 | 
				
			||||||
 	/* some arches (like MIPS) we have to tweak the GOT before relocations */
 | 
					 | 
				
			||||||
 	PERFORM_BOOTSTRAP_GOT(tpnt);
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-#else
 | 
					 | 
				
			||||||
+#endif
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+#if !defined(PERFORM_BOOTSTRAP_GOT) || defined(__avr32__)
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 	/* OK, now do the relocations.  We do not do a lazy binding here, so
 | 
					 | 
				
			||||||
 	   that once we are done, we have considerably more flexibility. */
 | 
					 | 
				
			||||||
@@ -259,7 +261,7 @@ static void * __attribute_used__ _dl_sta
 | 
					 | 
				
			||||||
 				rel_addr += relative_count * sizeof(ELF_RELOC);;
 | 
					 | 
				
			||||||
 			}
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
-			rpnt = (ELF_RELOC *) (rel_addr + load_addr);
 | 
					 | 
				
			||||||
+			rpnt = (ELF_RELOC *) (rel_addr /* + load_addr */);
 | 
					 | 
				
			||||||
 			for (i = 0; i < rel_size; i += sizeof(ELF_RELOC), rpnt++) {
 | 
					 | 
				
			||||||
 				reloc_addr = (unsigned long *) (load_addr + (unsigned long) rpnt->r_offset);
 | 
					 | 
				
			||||||
 				symtab_index = ELF_R_SYM(rpnt->r_info);
 | 
					 | 
				
			||||||
@@ -1,25 +0,0 @@
 | 
				
			|||||||
Subject: [PATCH] ldd: AVR32 support
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Add AVR32-specific definitions to ldd.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 utils/ldd.c |    5 +++++
 | 
					 | 
				
			||||||
 1 file changed, 5 insertions(+)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Index: uClibc-0.9.28/utils/ldd.c
 | 
					 | 
				
			||||||
===================================================================
 | 
					 | 
				
			||||||
--- uClibc-0.9.28.orig/utils/ldd.c	2006-02-07 16:48:02.000000000 +0100
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28/utils/ldd.c	2006-02-07 17:13:00.000000000 +0100
 | 
					 | 
				
			||||||
@@ -56,6 +56,11 @@
 | 
					 | 
				
			||||||
 #define ELFCLASSM	ELFCLASS32
 | 
					 | 
				
			||||||
 #endif
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
+#if defined(__avr32__)
 | 
					 | 
				
			||||||
+#define MATCH_MACHINE(x) (x == EM_AVR32)
 | 
					 | 
				
			||||||
+#define ELFCLASSM	ELFCLASS32
 | 
					 | 
				
			||||||
+#endif
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
 #if defined(__s390__)
 | 
					 | 
				
			||||||
 #define MATCH_MACHINE(x) (x == EM_S390)
 | 
					 | 
				
			||||||
 #define ELFCLASSM	ELFCLASS32
 | 
					 | 
				
			||||||
@@ -1,105 +0,0 @@
 | 
				
			|||||||
Subject: [PATCH] libpthread: AVR32 support
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Implement pt-machine.h for AVR32.
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 libpthread/linuxthreads/sysdeps/avr32/pt-machine.h |   92 +++++++++++++++++++++
 | 
					 | 
				
			||||||
 1 file changed, 92 insertions(+)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Index: uClibc-0.9.28/libpthread/linuxthreads/sysdeps/avr32/pt-machine.h
 | 
					 | 
				
			||||||
===================================================================
 | 
					 | 
				
			||||||
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28/libpthread/linuxthreads/sysdeps/avr32/pt-machine.h	2006-02-07 17:14:47.000000000 +0100
 | 
					 | 
				
			||||||
@@ -0,0 +1,92 @@
 | 
					 | 
				
			||||||
+/* Machine-dependent pthreads configuration and inline functions.
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+   Copyright (C) 2005 Atmel Norway
 | 
					 | 
				
			||||||
+   This file is part of the GNU C Library.
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+   The GNU C Library is free software; you can redistribute it and/or
 | 
					 | 
				
			||||||
+   modify it under the terms of the GNU Lesser General Public License as
 | 
					 | 
				
			||||||
+   published by the Free Software Foundation; either version 2.1 of the
 | 
					 | 
				
			||||||
+   License, or (at your option) any later version.
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+   The GNU C Library is distributed in the hope that it will be useful,
 | 
					 | 
				
			||||||
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					 | 
				
			||||||
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
					 | 
				
			||||||
+   Lesser General Public License for more details.
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+   You should have received a copy of the GNU Lesser General Public
 | 
					 | 
				
			||||||
+   License along with the GNU C Library; see the file COPYING.LIB.  If not,
 | 
					 | 
				
			||||||
+   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 | 
					 | 
				
			||||||
+   Boston, MA 02111-1307, USA.  */
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+#ifndef _PT_MACHINE_H
 | 
					 | 
				
			||||||
+#define _PT_MACHINE_H   1
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+#include <features.h>
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+static inline int
 | 
					 | 
				
			||||||
+_test_and_set (int *p, int v) __THROW
 | 
					 | 
				
			||||||
+{
 | 
					 | 
				
			||||||
+	int result;
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+	__asm__ __volatile__(
 | 
					 | 
				
			||||||
+		"/* Inline test and set */\n"
 | 
					 | 
				
			||||||
+		"1:	ssrf	5\n"
 | 
					 | 
				
			||||||
+		"	ld.w	%0, %2\n"
 | 
					 | 
				
			||||||
+		"	tst	%0, %3\n"
 | 
					 | 
				
			||||||
+		"	breq	2f\n"
 | 
					 | 
				
			||||||
+		"	stcond	%1, %3\n"
 | 
					 | 
				
			||||||
+		"	brne	1b\n"
 | 
					 | 
				
			||||||
+		"2:"
 | 
					 | 
				
			||||||
+		: "=&r"(result), "=m"(*p)
 | 
					 | 
				
			||||||
+		: "m"(*p), "r"(v)
 | 
					 | 
				
			||||||
+		: "memory", "cc");
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+	return result;
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+#ifndef PT_EI
 | 
					 | 
				
			||||||
+# define PT_EI extern inline
 | 
					 | 
				
			||||||
+#endif
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+extern long int testandset (int *spinlock);
 | 
					 | 
				
			||||||
+extern int __compare_and_swap (long int *p, long int oldval, long int newval);
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+/* Spinlock implementation; required.  */
 | 
					 | 
				
			||||||
+PT_EI long int
 | 
					 | 
				
			||||||
+testandset (int *spinlock)
 | 
					 | 
				
			||||||
+{
 | 
					 | 
				
			||||||
+	return _test_and_set(spinlock, 1);
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+/* Get some notion of the current stack.  Need not be exactly the top
 | 
					 | 
				
			||||||
+   of the stack, just something somewhere in the current frame.  */
 | 
					 | 
				
			||||||
+#define CURRENT_STACK_FRAME  stack_pointer
 | 
					 | 
				
			||||||
+register char * stack_pointer __asm__ ("sp");
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+/* Compare-and-swap for semaphores. */
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+#define HAS_COMPARE_AND_SWAP
 | 
					 | 
				
			||||||
+PT_EI int
 | 
					 | 
				
			||||||
+__compare_and_swap(long int *p, long int oldval, long int newval)
 | 
					 | 
				
			||||||
+{
 | 
					 | 
				
			||||||
+	long int result, tmp;
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+	__asm__ __volatile__(
 | 
					 | 
				
			||||||
+		"/* Inline compare and swap */\n"
 | 
					 | 
				
			||||||
+		"1:	ssrf	5\n"
 | 
					 | 
				
			||||||
+		"	ld.w	%1, %3\n"
 | 
					 | 
				
			||||||
+		"	cp.w	%1, %5\n"
 | 
					 | 
				
			||||||
+		"	sreq	%0\n"
 | 
					 | 
				
			||||||
+		"	brne	2f\n"
 | 
					 | 
				
			||||||
+		"	stcond	%2, %4\n"
 | 
					 | 
				
			||||||
+		"	brne	1b\n"
 | 
					 | 
				
			||||||
+		"2:"
 | 
					 | 
				
			||||||
+		: "=&r"(result), "=&r"(tmp), "=m"(*p)
 | 
					 | 
				
			||||||
+		: "m"(*p), "r"(newval), "r"(oldval)
 | 
					 | 
				
			||||||
+		: "cc", "memory");
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+	return result;
 | 
					 | 
				
			||||||
+}
 | 
					 | 
				
			||||||
+
 | 
					 | 
				
			||||||
+#endif /* pt-machine.h */
 | 
					 | 
				
			||||||
@@ -1,54 +0,0 @@
 | 
				
			|||||||
---
 | 
					 | 
				
			||||||
 libc/sysdeps/linux/avr32/bits/fcntl.h |   33 +++++++++++++++++----------------
 | 
					 | 
				
			||||||
 1 file changed, 17 insertions(+), 16 deletions(-)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Index: uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/fcntl.h
 | 
					 | 
				
			||||||
===================================================================
 | 
					 | 
				
			||||||
--- uClibc-0.9.28-avr32.orig/libc/sysdeps/linux/avr32/bits/fcntl.h	2006-11-23 17:38:30.000000000 +0100
 | 
					 | 
				
			||||||
+++ uClibc-0.9.28-avr32/libc/sysdeps/linux/avr32/bits/fcntl.h	2006-11-23 17:52:15.000000000 +0100
 | 
					 | 
				
			||||||
@@ -11,28 +11,29 @@
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 /* open/fcntl - O_SYNC is only implemented on blocks devices and on files
 | 
					 | 
				
			||||||
    located on an ext2 file system */
 | 
					 | 
				
			||||||
-#define O_ACCMODE	  0003
 | 
					 | 
				
			||||||
-#define O_RDONLY	    00
 | 
					 | 
				
			||||||
-#define O_WRONLY	    01
 | 
					 | 
				
			||||||
-#define O_RDWR		    02
 | 
					 | 
				
			||||||
-#define O_CREAT		  0100	/* not fcntl */
 | 
					 | 
				
			||||||
-#define O_EXCL		  0200	/* not fcntl */
 | 
					 | 
				
			||||||
-#define O_NOCTTY	  0400	/* not fcntl */
 | 
					 | 
				
			||||||
-#define O_TRUNC		 01000	/* not fcntl */
 | 
					 | 
				
			||||||
-#define O_APPEND	 02000
 | 
					 | 
				
			||||||
-#define O_NONBLOCK	 04000
 | 
					 | 
				
			||||||
+#define O_ACCMODE	00000003
 | 
					 | 
				
			||||||
+#define O_RDONLY	00000000
 | 
					 | 
				
			||||||
+#define O_WRONLY	00000001
 | 
					 | 
				
			||||||
+#define O_RDWR		00000002
 | 
					 | 
				
			||||||
+#define O_CREAT		00000100	/* not fcntl */
 | 
					 | 
				
			||||||
+#define O_EXCL		00000200	/* not fcntl */
 | 
					 | 
				
			||||||
+#define O_NOCTTY	00000400	/* not fcntl */
 | 
					 | 
				
			||||||
+#define O_TRUNC		00001000	/* not fcntl */
 | 
					 | 
				
			||||||
+#define O_APPEND	00002000
 | 
					 | 
				
			||||||
+#define O_NONBLOCK	00004000
 | 
					 | 
				
			||||||
 #define O_NDELAY	O_NONBLOCK
 | 
					 | 
				
			||||||
-#define O_SYNC		010000
 | 
					 | 
				
			||||||
-#define O_ASYNC		020000
 | 
					 | 
				
			||||||
+#define O_SYNC		00010000
 | 
					 | 
				
			||||||
+#define O_ASYNC		00020000
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 #ifdef __USE_GNU
 | 
					 | 
				
			||||||
-# define O_DIRECTORY	040000	/* must be a directory */
 | 
					 | 
				
			||||||
-# define O_NOFOLLOW	0100000	/* don't follow links */
 | 
					 | 
				
			||||||
-# define O_DIRECT	0200000	/* direct disk access */
 | 
					 | 
				
			||||||
+# define O_DIRECT	00040000	/* must be a directory */
 | 
					 | 
				
			||||||
+# define O_DIRECTORY	00200000	/* direct disk access */
 | 
					 | 
				
			||||||
+# define O_NOFOLLOW	00400000	/* don't follow links */
 | 
					 | 
				
			||||||
+# define O_NOATIME	01000000	/* don't set atime */
 | 
					 | 
				
			||||||
 #endif
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 #ifdef __USE_LARGEFILE64
 | 
					 | 
				
			||||||
-# define O_LARGEFILE	0400000
 | 
					 | 
				
			||||||
+# define O_LARGEFILE	00100000
 | 
					 | 
				
			||||||
 #endif
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 /* For now Linux has synchronisity options for data and read operations.
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user