upgrade to uClibc 0.9.29 - break binary compatibility #1
SVN-Revision: 10010
This commit is contained in:
parent
b131605ed7
commit
66b3d3dcd8
@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/target.mk
|
||||
|
||||
PKG_NAME:=uClibc
|
||||
PKG_VERSION:=0.9.28
|
||||
PKG_EXTRAVERSION:=.2
|
||||
PKG_VERSION:=0.9.29
|
||||
PKG_EXTRAVERSION:=
|
||||
|
||||
PKG_SOURCE:=uClibc-$(PKG_VERSION)$(PKG_EXTRAVERSION).tar.bz2
|
||||
PKG_SOURCE_URL:=http://www.uclibc.org/downloads
|
||||
PKG_MD5SUM:=959f25286e317f0d9e2103445c5a14c2
|
||||
PKG_MD5SUM:=61dc55f43b17a38a074f347e74095b20
|
||||
PKG_CAT:=bzcat
|
||||
|
||||
STAGING_DIR_HOST:=$(TOOLCHAIN_DIR)
|
||||
@ -43,14 +43,33 @@ UCLIBC_TARGET_ARCH:=$(shell echo $(ARCH) | sed -e s'/-.*//' \
|
||||
define Build/Prepare
|
||||
$(call Build/Prepare/Default)
|
||||
$(CP) config/$(ARCH)$(if $(wildcard config/$(ARCH).$(BOARD)),$(BOARD)) $(PKG_BUILD_DIR)/.config
|
||||
$(SED) 's,^KERNEL_SOURCE=.*,KERNEL_SOURCE=\"$(LINUX_HEADERS_DIR)\",g' \
|
||||
-e 's,.*HAS_FPU.*,HAS_FPU=$(if $(CONFIG_SOFT_FLOAT),n\nUCLIBC_HAS_FLOATS=y\nUCLIBC_HAS_SOFT_FLOAT=y,y),g' \
|
||||
$(SED) 's,^KERNEL_HEADERS=.*,KERNEL_HEADERS=\"$(LINUX_HEADERS_DIR)/include\",g' \
|
||||
-e 's,.*UCLIBC_HAS_FPU.*,UCLIBC_HAS_FPU=$(if $(CONFIG_SOFT_FLOAT),n\nUCLIBC_HAS_FLOATS=y\nUCLIBC_HAS_SOFT_FLOAT=y,y),g' \
|
||||
-e 's,^.*UCLIBC_HAS_LFS.*,UCLIBC_HAS_LFS=$(if $(CONFIG_LARGEFILE),y,n),g' \
|
||||
-e 's,.*DO_C99_MATH.*,DO_C99_MATH=$(if $(CONFIG_C99_MATH),y,n),g' \
|
||||
$(PKG_BUILD_DIR)/.config
|
||||
mkdir -p $(BUILD_DIR_HOST)/uClibc_dev/usr/include
|
||||
mkdir -p $(BUILD_DIR_HOST)/uClibc_dev/usr/lib
|
||||
mkdir -p $(BUILD_DIR_HOST)/uClibc_dev/lib
|
||||
# if [ ! -f $(BUILD_DIR_HOST)/uClibc_dev/usr/include/linux/version.h ] ; then \
|
||||
# cp -pLR $(BUILD_DIR_TOOLCHAIN)/linux/include/* $(BUILD_DIR_HOST)/uClibc_dev/usr/include/; \
|
||||
# cp -pLR $(BUILD_DIR_TOOLCHAIN)/linux/include/* $(TOOLCHAIN_DIR)/include/ ; \
|
||||
# cp -pLR $(BUILD_DIR_TOOLCHAIN)/linux/include/* $(PKG_BUILD_DIR)/include/ ; \
|
||||
# fi;
|
||||
if [ ! -f $(BUILD_DIR_HOST)/uClibc_dev/usr/include/linux/version.h ] ; then \
|
||||
cp -pLR $(BUILD_DIR_TOOLCHAIN)/linux/include/asm $(BUILD_DIR_HOST)/uClibc_dev/usr/include/; \
|
||||
cp -pLR $(BUILD_DIR_TOOLCHAIN)/linux/include/asm-$(UCLIBC_TARGET_ARCH) $(BUILD_DIR_HOST)/uClibc_dev/usr/include/; \
|
||||
cp -pLR $(BUILD_DIR_TOOLCHAIN)/linux/include/asm-generic $(BUILD_DIR_HOST)/uClibc_dev/usr/include/; \
|
||||
cp -pLR $(BUILD_DIR_TOOLCHAIN)/linux/include/linux $(BUILD_DIR_HOST)/uClibc_dev/usr/include/; \
|
||||
cp -pLR $(BUILD_DIR_TOOLCHAIN)/linux/include/asm $(TOOLCHAIN_DIR)/include/ ; \
|
||||
cp -pLR $(BUILD_DIR_TOOLCHAIN)/linux/include/asm-$(UCLIBC_TARGET_ARCH) $(TOOLCHAIN_DIR)/include/ ; \
|
||||
cp -pLR $(BUILD_DIR_TOOLCHAIN)/linux/include/asm-generic $(TOOLCHAIN_DIR)/include/ ; \
|
||||
cp -pLR $(BUILD_DIR_TOOLCHAIN)/linux/include/linux $(TOOLCHAIN_DIR)/include/ ; \
|
||||
cp -pLR $(BUILD_DIR_TOOLCHAIN)/linux/include/asm $(PKG_BUILD_DIR)/include/ ; \
|
||||
cp -pLR $(BUILD_DIR_TOOLCHAIN)/linux/include/asm-$(UCLIBC_TARGET_ARCH) $(PKG_BUILD_DIR)/include/ ; \
|
||||
cp -pLR $(BUILD_DIR_TOOLCHAIN)/linux/include/asm-generic $(PKG_BUILD_DIR)/include/ ; \
|
||||
cp -pLR $(BUILD_DIR_TOOLCHAIN)/linux/include/linux $(PKG_BUILD_DIR)/include/ ; \
|
||||
fi;
|
||||
PATH=$(TARGET_PATH) $(MAKE) -C $(PKG_BUILD_DIR) \
|
||||
PREFIX=$(BUILD_DIR_HOST)/uClibc_dev/ \
|
||||
DEVEL_PREFIX=/usr/ \
|
||||
@ -76,6 +95,8 @@ define Build/Compile
|
||||
$(UCLIBC_MAKE) PREFIX=$(STAGING_DIR_HOST)/ install_runtime install_dev
|
||||
$(SED) 's,UCLIBC_VERSION=.*,UCLIBC_VERSION=$(PKG_VERSION),' $(TOOLCHAIN_DIR)/info.mk
|
||||
$(SED) 's,UCLIBC_PATCHVER=.*,UCLIBC_PATCHVER=$(PKG_EXTRAVERSION),' $(TOOLCHAIN_DIR)/info.mk
|
||||
rm -rf $(TOOLCHAIN_DIR)/lib/libc.so
|
||||
ln -s $(TOOLCHAIN_DIR)/lib/libc.so.0 $(TOOLCHAIN_DIR)/lib/libc.so
|
||||
endef
|
||||
|
||||
define Build/Install
|
||||
|
@ -9,8 +9,10 @@ TARGET_arm=y
|
||||
# TARGET_e1 is not set
|
||||
# TARGET_frv is not set
|
||||
# TARGET_h8300 is not set
|
||||
# TARGET_hppa is not set
|
||||
# TARGET_i386 is not set
|
||||
# TARGET_i960 is not set
|
||||
# TARGET_ia64 is not set
|
||||
# TARGET_m68k is not set
|
||||
# TARGET_microblaze is not set
|
||||
# TARGET_mips is not set
|
||||
@ -21,36 +23,44 @@ TARGET_arm=y
|
||||
# TARGET_sh64 is not set
|
||||
# TARGET_sparc is not set
|
||||
# TARGET_v850 is not set
|
||||
# TARGET_vax is not set
|
||||
# TARGET_x86_64 is not set
|
||||
|
||||
#
|
||||
# Target Architecture Features and Options
|
||||
#
|
||||
HAVE_ELF=y
|
||||
ARCH_SUPPORTS_LITTLE_ENDIAN=y
|
||||
TARGET_ARCH="arm"
|
||||
# ARCH_SUPPORTS_BIG_ENDIAN is not set
|
||||
FORCE_OPTIONS_FOR_ARCH=y
|
||||
# CONFIG_ARM_OABI is not set
|
||||
CONFIG_ARM_EABI=y
|
||||
USE_BX=y
|
||||
# CONFIG_GENERIC_ARM is not set
|
||||
# CONFIG_ARM610 is not set
|
||||
# CONFIG_ARM710 is not set
|
||||
# CONFIG_ARM7TDMI is not set
|
||||
# CONFIG_ARM720T is not set
|
||||
# CONFIG_ARM920T is not set
|
||||
# CONFIG_ARM922T is not set
|
||||
# CONFIG_ARM926T is not set
|
||||
# CONFIG_ARM10T is not set
|
||||
# CONFIG_ARM1136JF_S is not set
|
||||
# CONFIG_ARM1176JZ_S is not set
|
||||
# CONFIG_ARM1176JZF_S is not set
|
||||
# CONFIG_ARM_SA110 is not set
|
||||
# CONFIG_ARM_SA1100 is not set
|
||||
CONFIG_ARM_XSCALE=y
|
||||
ARCH_LITTLE_ENDIAN=y
|
||||
# ARCH_BIG_ENDIAN is not set
|
||||
# ARCH_HAS_NO_MMU is not set
|
||||
# CONFIG_ARM_IWMMXT is not set
|
||||
ARCH_ANY_ENDIAN=y
|
||||
# ARCH_WANTS_BIG_ENDIAN is not set
|
||||
ARCH_WANTS_LITTLE_ENDIAN=y
|
||||
ARCH_HAS_MMU=y
|
||||
ARCH_USE_MMU=y
|
||||
UCLIBC_HAS_FLOATS=y
|
||||
# HAS_FPU is not set
|
||||
UCLIBC_HAS_FPU=y
|
||||
UCLIBC_HAS_SOFT_FLOAT=y
|
||||
# DO_C99_MATH is not set
|
||||
KERNEL_SOURCE="./toolchain_build_arm/linux"
|
||||
C_SYMBOL_PREFIX=""
|
||||
KERNEL_HEADERS="./toolchain_build_arm/linux/include"
|
||||
HAVE_DOT_CONFIG=y
|
||||
|
||||
#
|
||||
@ -74,6 +84,7 @@ UCLIBC_CTOR_DTOR=y
|
||||
UCLIBC_HAS_THREADS=y
|
||||
# PTHREADS_DEBUG_SUPPORT is not set
|
||||
UCLIBC_HAS_LFS=y
|
||||
LINUXTHREADS_OLD=y
|
||||
# UCLIBC_STATIC_LDCONFIG is not set
|
||||
# MALLOC is not set
|
||||
# MALLOC_SIMPLE is not set
|
||||
@ -81,6 +92,12 @@ MALLOC_STANDARD=y
|
||||
MALLOC_GLIBC_COMPAT=y
|
||||
UCLIBC_DYNAMIC_ATEXIT=y
|
||||
HAS_SHADOW=y
|
||||
COMPAT_ATEXIT=y
|
||||
# UCLIBC_SUSV3_LEGACY is not set
|
||||
# UCLIBC_SUSV3_LEGACY_MACROS is not set
|
||||
# UCLIBC_HAS_SHADOW is not set
|
||||
# UCLIBC_HAS_PROGRAM_INVOCATION_NAME is not set
|
||||
UCLIBC_HAS___PROGNAME=y
|
||||
# UNIX98PTY_ONLY is not set
|
||||
ASSUME_DEVPTS=y
|
||||
UCLIBC_HAS_TM_EXTENSIONS=y
|
||||
@ -89,12 +106,21 @@ UCLIBC_HAS_TZ_FILE=y
|
||||
UCLIBC_HAS_TZ_FILE_READ_MANY=y
|
||||
UCLIBC_TZ_FILE_PATH="/etc/TZ"
|
||||
|
||||
#
|
||||
# Advanced Library Settings
|
||||
#
|
||||
UCLIBC_PWD_BUFFER_SIZE=256
|
||||
UCLIBC_GRP_BUFFER_SIZE=256
|
||||
|
||||
#
|
||||
# Networking Support
|
||||
#
|
||||
UCLIBC_HAS_IPV6=y
|
||||
UCLIBC_HAS_RPC=y
|
||||
UCLIBC_HAS_FULL_RPC=y
|
||||
# UCLIBC_HAS_REENTRANT_RPC is not set
|
||||
# UCLIBC_USE_NETLINK is not set
|
||||
# UCLIBC_HAS_BSD_RES_CLOSE is not set
|
||||
|
||||
#
|
||||
# String and Stdio Support
|
||||
@ -135,14 +161,19 @@ UCLIBC_HAS_ERRNO_MESSAGES=y
|
||||
UCLIBC_HAS_SIGNUM_MESSAGES=y
|
||||
# UCLIBC_HAS_SYS_SIGLIST is not set
|
||||
UCLIBC_HAS_GNU_GETOPT=y
|
||||
UCLIBC_HAS_GNU_GETSUBOPT=y
|
||||
|
||||
#
|
||||
# Big and Tall
|
||||
#
|
||||
UCLIBC_HAS_REGEX=y
|
||||
UCLIBC_HAS_REGEX_OLD=y
|
||||
UCLIBC_HAS_FNMATCH=y
|
||||
UCLIBC_HAS_FNMATCH_OLD=y
|
||||
UCLIBC_HAS_WORDEXP=y
|
||||
UCLIBC_HAS_FTW=y
|
||||
UCLIBC_HAS_GLOB=y
|
||||
# UCLIBC_HAS_GNU_GLOB is not set
|
||||
|
||||
#
|
||||
# Library Installation Options
|
||||
@ -152,18 +183,29 @@ RUNTIME_PREFIX="/"
|
||||
DEVEL_PREFIX="/usr/"
|
||||
|
||||
#
|
||||
# uClibc security related options
|
||||
# Security options
|
||||
#
|
||||
# UCLIBC_SECURITY is not set
|
||||
# UCLIBC_BUILD_PIE is not set
|
||||
# UCLIBC_HAS_ARC4RANDOM is not set
|
||||
# HAVE_NO_SSP is not set
|
||||
# UCLIBC_HAS_SSP is not set
|
||||
UCLIBC_BUILD_RELRO=y
|
||||
# UCLIBC_BUILD_NOW is not set
|
||||
UCLIBC_BUILD_NOEXECSTACK=y
|
||||
|
||||
#
|
||||
# uClibc development/debugging options
|
||||
#
|
||||
CROSS_COMPILER_PREFIX=""
|
||||
UCLIBC_EXTRA_CFLAGS=""
|
||||
# DODEBUG is not set
|
||||
# DODEBUG_PT is not set
|
||||
DOSTRIP=y
|
||||
# DOASSERTS is not set
|
||||
# SUPPORT_LD_DEBUG is not set
|
||||
# SUPPORT_LD_DEBUG_EARLY is not set
|
||||
# UCLIBC_MALLOC_DEBUGGING is not set
|
||||
WARNINGS="-Wall"
|
||||
# EXTRA_WARNINGS is not set
|
||||
# DOMULTI is not set
|
||||
# UCLIBC_MJN3_ONLY is not set
|
||||
|
@ -9,8 +9,10 @@ TARGET_arm=y
|
||||
# TARGET_e1 is not set
|
||||
# TARGET_frv is not set
|
||||
# TARGET_h8300 is not set
|
||||
# TARGET_hppa is not set
|
||||
# TARGET_i386 is not set
|
||||
# TARGET_i960 is not set
|
||||
# TARGET_ia64 is not set
|
||||
# TARGET_m68k is not set
|
||||
# TARGET_microblaze is not set
|
||||
# TARGET_mips is not set
|
||||
@ -21,36 +23,45 @@ TARGET_arm=y
|
||||
# TARGET_sh64 is not set
|
||||
# TARGET_sparc is not set
|
||||
# TARGET_v850 is not set
|
||||
# TARGET_vax is not set
|
||||
# TARGET_x86_64 is not set
|
||||
|
||||
#
|
||||
# Target Architecture Features and Options
|
||||
#
|
||||
HAVE_ELF=y
|
||||
ARCH_SUPPORTS_LITTLE_ENDIAN=y
|
||||
TARGET_ARCH="arm"
|
||||
ARCH_SUPPORTS_BIG_ENDIAN=y
|
||||
FORCE_OPTIONS_FOR_ARCH=y
|
||||
# CONFIG_ARM_OABI is not set
|
||||
CONFIG_ARM_EABI=y
|
||||
USE_BX=y
|
||||
# CONFIG_GENERIC_ARM is not set
|
||||
# CONFIG_ARM610 is not set
|
||||
# CONFIG_ARM710 is not set
|
||||
# CONFIG_ARM7TDMI is not set
|
||||
# CONFIG_ARM720T is not set
|
||||
# CONFIG_ARM920T is not set
|
||||
# CONFIG_ARM922T is not set
|
||||
# CONFIG_ARM926T is not set
|
||||
# CONFIG_ARM10T is not set
|
||||
# CONFIG_ARM1136JF_S is not set
|
||||
# CONFIG_ARM1176JZ_S is not set
|
||||
# CONFIG_ARM1176JZF_S is not set
|
||||
# CONFIG_ARM_SA110 is not set
|
||||
# CONFIG_ARM_SA1100 is not set
|
||||
CONFIG_ARM_XSCALE=y
|
||||
# ARCH_LITTLE_ENDIAN is not set
|
||||
# CONFIG_ARM_IWMMXT is not set
|
||||
ARCH_ANY_ENDIAN=y
|
||||
ARCH_BIG_ENDIAN=y
|
||||
# ARCH_HAS_NO_MMU is not set
|
||||
ARCH_WANTS_BIG_ENDIAN=y
|
||||
# ARCH_WANTS_LITTLE_ENDIAN is not set
|
||||
ARCH_HAS_MMU=y
|
||||
ARCH_USE_MMU=y
|
||||
UCLIBC_HAS_FLOATS=y
|
||||
# HAS_FPU is not set
|
||||
UCLIBC_HAS_FPU=y
|
||||
UCLIBC_HAS_SOFT_FLOAT=y
|
||||
# DO_C99_MATH is not set
|
||||
KERNEL_SOURCE="./toolchain_build_armeb/linux"
|
||||
C_SYMBOL_PREFIX=""
|
||||
KERNEL_HEADERS="./toolchain_build_armeb/linux/include"
|
||||
HAVE_DOT_CONFIG=y
|
||||
|
||||
#
|
||||
@ -74,6 +85,7 @@ UCLIBC_CTOR_DTOR=y
|
||||
UCLIBC_HAS_THREADS=y
|
||||
# PTHREADS_DEBUG_SUPPORT is not set
|
||||
UCLIBC_HAS_LFS=y
|
||||
LINUXTHREADS_OLD=y
|
||||
# UCLIBC_STATIC_LDCONFIG is not set
|
||||
# MALLOC is not set
|
||||
# MALLOC_SIMPLE is not set
|
||||
@ -81,6 +93,12 @@ MALLOC_STANDARD=y
|
||||
MALLOC_GLIBC_COMPAT=y
|
||||
UCLIBC_DYNAMIC_ATEXIT=y
|
||||
HAS_SHADOW=y
|
||||
COMPAT_ATEXIT=y
|
||||
# UCLIBC_SUSV3_LEGACY is not set
|
||||
# UCLIBC_SUSV3_LEGACY_MACROS is not set
|
||||
# UCLIBC_HAS_SHADOW is not set
|
||||
# UCLIBC_HAS_PROGRAM_INVOCATION_NAME is not set
|
||||
UCLIBC_HAS___PROGNAME=y
|
||||
# UNIX98PTY_ONLY is not set
|
||||
ASSUME_DEVPTS=y
|
||||
UCLIBC_HAS_TM_EXTENSIONS=y
|
||||
@ -89,12 +107,21 @@ UCLIBC_HAS_TZ_FILE=y
|
||||
UCLIBC_HAS_TZ_FILE_READ_MANY=y
|
||||
UCLIBC_TZ_FILE_PATH="/etc/TZ"
|
||||
|
||||
#
|
||||
# Advanced Library Settings
|
||||
#
|
||||
UCLIBC_PWD_BUFFER_SIZE=256
|
||||
UCLIBC_GRP_BUFFER_SIZE=256
|
||||
|
||||
#
|
||||
# Networking Support
|
||||
#
|
||||
UCLIBC_HAS_IPV6=y
|
||||
UCLIBC_HAS_RPC=y
|
||||
UCLIBC_HAS_FULL_RPC=y
|
||||
# UCLIBC_HAS_REENTRANT_RPC is not set
|
||||
# UCLIBC_USE_NETLINK is not set
|
||||
# UCLIBC_HAS_BSD_RES_CLOSE is not set
|
||||
|
||||
#
|
||||
# String and Stdio Support
|
||||
@ -135,14 +162,19 @@ UCLIBC_HAS_ERRNO_MESSAGES=y
|
||||
UCLIBC_HAS_SIGNUM_MESSAGES=y
|
||||
# UCLIBC_HAS_SYS_SIGLIST is not set
|
||||
UCLIBC_HAS_GNU_GETOPT=y
|
||||
UCLIBC_HAS_GNU_GETSUBOPT=y
|
||||
|
||||
#
|
||||
# Big and Tall
|
||||
#
|
||||
UCLIBC_HAS_REGEX=y
|
||||
UCLIBC_HAS_REGEX_OLD=y
|
||||
UCLIBC_HAS_FNMATCH=y
|
||||
UCLIBC_HAS_FNMATCH_OLD=y
|
||||
UCLIBC_HAS_WORDEXP=y
|
||||
UCLIBC_HAS_FTW=y
|
||||
UCLIBC_HAS_GLOB=y
|
||||
# UCLIBC_HAS_GNU_GLOB is not set
|
||||
|
||||
#
|
||||
# Library Installation Options
|
||||
@ -152,18 +184,29 @@ RUNTIME_PREFIX="/"
|
||||
DEVEL_PREFIX="/usr/"
|
||||
|
||||
#
|
||||
# uClibc security related options
|
||||
# Security options
|
||||
#
|
||||
# UCLIBC_SECURITY is not set
|
||||
# UCLIBC_BUILD_PIE is not set
|
||||
# UCLIBC_HAS_ARC4RANDOM is not set
|
||||
# HAVE_NO_SSP is not set
|
||||
# UCLIBC_HAS_SSP is not set
|
||||
UCLIBC_BUILD_RELRO=y
|
||||
# UCLIBC_BUILD_NOW is not set
|
||||
UCLIBC_BUILD_NOEXECSTACK=y
|
||||
|
||||
#
|
||||
# uClibc development/debugging options
|
||||
#
|
||||
CROSS_COMPILER_PREFIX=""
|
||||
UCLIBC_EXTRA_CFLAGS=""
|
||||
# DODEBUG is not set
|
||||
# DODEBUG_PT is not set
|
||||
DOSTRIP=y
|
||||
# DOASSERTS is not set
|
||||
# SUPPORT_LD_DEBUG is not set
|
||||
# SUPPORT_LD_DEBUG_EARLY is not set
|
||||
# UCLIBC_MALLOC_DEBUGGING is not set
|
||||
WARNINGS="-Wall"
|
||||
# EXTRA_WARNINGS is not set
|
||||
# DOMULTI is not set
|
||||
# UCLIBC_MJN3_ONLY is not set
|
||||
|
@ -9,8 +9,10 @@ TARGET_avr32=y
|
||||
# TARGET_e1 is not set
|
||||
# TARGET_frv is not set
|
||||
# TARGET_h8300 is not set
|
||||
# TARGET_hppa is not set
|
||||
# TARGET_i386 is not set
|
||||
# TARGET_i960 is not set
|
||||
# TARGET_ia64 is not set
|
||||
# TARGET_m68k is not set
|
||||
# TARGET_microblaze is not set
|
||||
# TARGET_mips is not set
|
||||
@ -21,14 +23,15 @@ TARGET_avr32=y
|
||||
# TARGET_sh64 is not set
|
||||
# TARGET_sparc is not set
|
||||
# TARGET_v850 is not set
|
||||
# TARGET_vax is not set
|
||||
# TARGET_x86_64 is not set
|
||||
|
||||
#
|
||||
# Target Architecture Features and Options
|
||||
#
|
||||
HAVE_ELF=y
|
||||
TARGET_ARCH="avr32"
|
||||
ARCH_SUPPORTS_BIG_ENDIAN=y
|
||||
ARCH_WANTS_BIG_ENDIAN=y
|
||||
FORCE_OPTIONS_FOR_ARCH=y
|
||||
UCLIBC_COMPLETELY_PIC=y
|
||||
CONFIG_AP7000=y
|
||||
LINKRELAX=y
|
||||
@ -36,12 +39,13 @@ LINKRELAX=y
|
||||
ARCH_BIG_ENDIAN=y
|
||||
# ARCH_HAS_NO_MMU is not set
|
||||
ARCH_HAS_MMU=y
|
||||
ARCH_USE_MMU=y
|
||||
UCLIBC_HAS_FLOATS=y
|
||||
# HAS_FPU is not set
|
||||
UCLIBC_HAS_FPU=y
|
||||
UCLIBC_HAS_SOFT_FLOAT=y
|
||||
# DO_C99_MATH is not set
|
||||
KERNEL_SOURCE="./toolchain_build_avr32/linux"
|
||||
C_SYMBOL_PREFIX=""
|
||||
KERNEL_SOURCE="./toolchain_build_avr32/linux/include"
|
||||
KERNEL_HEADERS="./toolchain_build_avr32/linux/include"
|
||||
HAVE_DOT_CONFIG=y
|
||||
|
||||
#
|
||||
@ -65,6 +69,7 @@ UCLIBC_CTOR_DTOR=y
|
||||
UCLIBC_HAS_THREADS=y
|
||||
# PTHREADS_DEBUG_SUPPORT is not set
|
||||
UCLIBC_HAS_LFS=y
|
||||
LINUXTHREADS_OLD=y
|
||||
# UCLIBC_STATIC_LDCONFIG is not set
|
||||
# MALLOC is not set
|
||||
# MALLOC_SIMPLE is not set
|
||||
@ -72,6 +77,12 @@ MALLOC_STANDARD=y
|
||||
MALLOC_GLIBC_COMPAT=y
|
||||
UCLIBC_DYNAMIC_ATEXIT=y
|
||||
HAS_SHADOW=y
|
||||
COMPAT_ATEXIT=y
|
||||
# UCLIBC_SUSV3_LEGACY is not set
|
||||
# UCLIBC_SUSV3_LEGACY_MACROS is not set
|
||||
# UCLIBC_HAS_SHADOW is not set
|
||||
# UCLIBC_HAS_PROGRAM_INVOCATION_NAME is not set
|
||||
UCLIBC_HAS___PROGNAME=y
|
||||
UNIX98PTY_ONLY=y
|
||||
ASSUME_DEVPTS=y
|
||||
UCLIBC_HAS_TM_EXTENSIONS=y
|
||||
@ -80,12 +91,21 @@ UCLIBC_HAS_TZ_FILE=y
|
||||
UCLIBC_HAS_TZ_FILE_READ_MANY=y
|
||||
UCLIBC_TZ_FILE_PATH="/etc/TZ"
|
||||
|
||||
#
|
||||
# Advanced Library Settings
|
||||
#
|
||||
UCLIBC_PWD_BUFFER_SIZE=256
|
||||
UCLIBC_GRP_BUFFER_SIZE=256
|
||||
|
||||
#
|
||||
# Networking Support
|
||||
#
|
||||
UCLIBC_HAS_IPV6=y
|
||||
UCLIBC_HAS_RPC=y
|
||||
UCLIBC_HAS_FULL_RPC=y
|
||||
# UCLIBC_HAS_REENTRANT_RPC is not set
|
||||
# UCLIBC_USE_NETLINK is not set
|
||||
# UCLIBC_HAS_BSD_RES_CLOSE is not set
|
||||
|
||||
#
|
||||
# String and Stdio Support
|
||||
@ -126,14 +146,19 @@ UCLIBC_HAS_ERRNO_MESSAGES=y
|
||||
UCLIBC_HAS_SIGNUM_MESSAGES=y
|
||||
# UCLIBC_HAS_SYS_SIGLIST is not set
|
||||
UCLIBC_HAS_GNU_GETOPT=y
|
||||
UCLIBC_HAS_GNU_GETSUBOPT=y
|
||||
|
||||
#
|
||||
# Big and Tall
|
||||
#
|
||||
UCLIBC_HAS_REGEX=y
|
||||
UCLIBC_HAS_REGEX_OLD=y
|
||||
UCLIBC_HAS_FNMATCH=y
|
||||
UCLIBC_HAS_FNMATCH_OLD=y
|
||||
UCLIBC_HAS_WORDEXP=y
|
||||
UCLIBC_HAS_FTW=y
|
||||
UCLIBC_HAS_GLOB=y
|
||||
# UCLIBC_HAS_GNU_GLOB is not set
|
||||
|
||||
#
|
||||
# Library Installation Options
|
||||
@ -143,18 +168,29 @@ RUNTIME_PREFIX="/"
|
||||
DEVEL_PREFIX="/usr/"
|
||||
|
||||
#
|
||||
# uClibc security related options
|
||||
# Security options
|
||||
#
|
||||
# UCLIBC_SECURITY is not set
|
||||
# UCLIBC_BUILD_PIE is not set
|
||||
# UCLIBC_HAS_ARC4RANDOM is not set
|
||||
# HAVE_NO_SSP is not set
|
||||
# UCLIBC_HAS_SSP is not set
|
||||
UCLIBC_BUILD_RELRO=y
|
||||
# UCLIBC_BUILD_NOW is not set
|
||||
UCLIBC_BUILD_NOEXECSTACK=y
|
||||
|
||||
#
|
||||
# uClibc development/debugging options
|
||||
#
|
||||
CROSS_COMPILER_PREFIX=""
|
||||
UCLIBC_EXTRA_CFLAGS=""
|
||||
# DODEBUG is not set
|
||||
# DODEBUG_PT is not set
|
||||
DOSTRIP=y
|
||||
# DOASSERTS is not set
|
||||
# SUPPORT_LD_DEBUG is not set
|
||||
# SUPPORT_LD_DEBUG_EARLY is not set
|
||||
# UCLIBC_MALLOC_DEBUGGING is not set
|
||||
WARNINGS="-Wall"
|
||||
# EXTRA_WARNINGS is not set
|
||||
# DOMULTI is not set
|
||||
# UCLIBC_MJN3_ONLY is not set
|
||||
|
@ -16,8 +16,10 @@
|
||||
# TARGET_e1 is not set
|
||||
# TARGET_frv is not set
|
||||
# TARGET_h8300 is not set
|
||||
# TARGET_hppa is not set
|
||||
# TARGET_i386 is not set
|
||||
# TARGET_i960 is not set
|
||||
# TARGET_ia64 is not set
|
||||
# TARGET_m68k is not set
|
||||
# TARGET_microblaze is not set
|
||||
TARGET_mips=y
|
||||
@ -28,16 +30,20 @@ TARGET_mips=y
|
||||
# TARGET_sh64 is not set
|
||||
# TARGET_sparc is not set
|
||||
# TARGET_v850 is not set
|
||||
# TARGET_vax is not set
|
||||
# TARGET_x86_64 is not set
|
||||
|
||||
#
|
||||
# Target Architecture Features and Options
|
||||
#
|
||||
HAVE_ELF=y
|
||||
ARCH_SUPPORTS_LITTLE_ENDIAN=y
|
||||
TARGET_ARCH="mips"
|
||||
ARCH_CFLAGS="-mno-split-addresses"
|
||||
ARCH_SUPPORTS_BIG_ENDIAN=y
|
||||
ARCH_ANY_ENDIAN=y
|
||||
ARCH_WANTS_BIG_ENDIAN=y
|
||||
# ARCH_WANTS_LITTLE_ENDIAN is not set
|
||||
CONFIG_MIPS_O32_ABI=y
|
||||
# CONFIG_MIPS_N32_ABI is not set
|
||||
# CONFIG_MIPS_N64_ABI is not set
|
||||
# CONFIG_MIPS_ISA_1 is not set
|
||||
# CONFIG_MIPS_ISA_2 is not set
|
||||
# CONFIG_MIPS_ISA_3 is not set
|
||||
@ -46,13 +52,13 @@ CONFIG_MIPS_ISA_MIPS32=y
|
||||
# CONFIG_MIPS_ISA_MIPS64 is not set
|
||||
# ARCH_LITTLE_ENDIAN is not set
|
||||
ARCH_BIG_ENDIAN=y
|
||||
# ARCH_HAS_NO_MMU is not set
|
||||
ARCH_HAS_MMU=y
|
||||
ARCH_USE_MMU=y
|
||||
UCLIBC_HAS_FPU=y
|
||||
UCLIBC_HAS_FLOATS=y
|
||||
HAS_FPU=y
|
||||
# DO_C99_MATH is not set
|
||||
KERNEL_SOURCE="./toolchain_build_mips/linux"
|
||||
C_SYMBOL_PREFIX=""
|
||||
KERNEL_HEADERS="./toolchain_build_mips/linux/include"
|
||||
HAVE_DOT_CONFIG=y
|
||||
|
||||
#
|
||||
@ -76,6 +82,7 @@ UCLIBC_CTOR_DTOR=y
|
||||
UCLIBC_HAS_THREADS=y
|
||||
# PTHREADS_DEBUG_SUPPORT is not set
|
||||
UCLIBC_HAS_LFS=y
|
||||
LINUXTHREADS_OLD=y
|
||||
# UCLIBC_STATIC_LDCONFIG is not set
|
||||
# MALLOC is not set
|
||||
# MALLOC_SIMPLE is not set
|
||||
@ -83,6 +90,12 @@ MALLOC_STANDARD=y
|
||||
MALLOC_GLIBC_COMPAT=y
|
||||
UCLIBC_DYNAMIC_ATEXIT=y
|
||||
HAS_SHADOW=y
|
||||
COMPAT_ATEXIT=y
|
||||
# UCLIBC_SUSV3_LEGACY is not set
|
||||
# UCLIBC_SUSV3_LEGACY_MACROS is not set
|
||||
# UCLIBC_HAS_SHADOW is not set
|
||||
# UCLIBC_HAS_PROGRAM_INVOCATION_NAME is not set
|
||||
UCLIBC_HAS___PROGNAME=y
|
||||
# UNIX98PTY_ONLY is not set
|
||||
ASSUME_DEVPTS=y
|
||||
UCLIBC_HAS_TM_EXTENSIONS=y
|
||||
@ -91,12 +104,21 @@ UCLIBC_HAS_TZ_FILE=y
|
||||
UCLIBC_HAS_TZ_FILE_READ_MANY=y
|
||||
UCLIBC_TZ_FILE_PATH="/etc/TZ"
|
||||
|
||||
#
|
||||
# Advanced Library Settings
|
||||
#
|
||||
UCLIBC_PWD_BUFFER_SIZE=256
|
||||
UCLIBC_GRP_BUFFER_SIZE=256
|
||||
|
||||
#
|
||||
# Networking Support
|
||||
#
|
||||
UCLIBC_HAS_IPV6=y
|
||||
UCLIBC_HAS_RPC=y
|
||||
UCLIBC_HAS_FULL_RPC=y
|
||||
# UCLIBC_HAS_REENTRANT_RPC is not set
|
||||
# UCLIBC_USE_NETLINK is not set
|
||||
# UCLIBC_HAS_BSD_RES_CLOSE is not set
|
||||
|
||||
#
|
||||
# String and Stdio Support
|
||||
@ -137,14 +159,19 @@ UCLIBC_HAS_ERRNO_MESSAGES=y
|
||||
UCLIBC_HAS_SIGNUM_MESSAGES=y
|
||||
# UCLIBC_HAS_SYS_SIGLIST is not set
|
||||
UCLIBC_HAS_GNU_GETOPT=y
|
||||
UCLIBC_HAS_GNU_GETSUBOPT=y
|
||||
|
||||
#
|
||||
# Big and Tall
|
||||
#
|
||||
UCLIBC_HAS_REGEX=y
|
||||
UCLIBC_HAS_REGEX_OLD=y
|
||||
UCLIBC_HAS_FNMATCH=y
|
||||
UCLIBC_HAS_FNMATCH_OLD=y
|
||||
UCLIBC_HAS_WORDEXP=y
|
||||
UCLIBC_HAS_FTW=y
|
||||
UCLIBC_HAS_GLOB=y
|
||||
# UCLIBC_HAS_GNU_GLOB is not set
|
||||
|
||||
#
|
||||
# Library Installation Options
|
||||
@ -154,18 +181,29 @@ RUNTIME_PREFIX="/"
|
||||
DEVEL_PREFIX="/usr/"
|
||||
|
||||
#
|
||||
# uClibc security related options
|
||||
# Security options
|
||||
#
|
||||
# UCLIBC_SECURITY is not set
|
||||
# UCLIBC_BUILD_PIE is not set
|
||||
# UCLIBC_HAS_ARC4RANDOM is not set
|
||||
# HAVE_NO_SSP is not set
|
||||
# UCLIBC_HAS_SSP is not set
|
||||
UCLIBC_BUILD_RELRO=y
|
||||
# UCLIBC_BUILD_NOW is not set
|
||||
UCLIBC_BUILD_NOEXECSTACK=y
|
||||
|
||||
#
|
||||
# uClibc development/debugging options
|
||||
#
|
||||
CROSS_COMPILER_PREFIX=""
|
||||
UCLIBC_EXTRA_CFLAGS=""
|
||||
# DODEBUG is not set
|
||||
# DODEBUG_PT is not set
|
||||
DOSTRIP=y
|
||||
# DOASSERTS is not set
|
||||
# SUPPORT_LD_DEBUG is not set
|
||||
# SUPPORT_LD_DEBUG_EARLY is not set
|
||||
# UCLIBC_MALLOC_DEBUGGING is not set
|
||||
WARNINGS="-Wall"
|
||||
# EXTRA_WARNINGS is not set
|
||||
# DOMULTI is not set
|
||||
# UCLIBC_MJN3_ONLY is not set
|
||||
|
@ -16,8 +16,10 @@
|
||||
# TARGET_e1 is not set
|
||||
# TARGET_frv is not set
|
||||
# TARGET_h8300 is not set
|
||||
# TARGET_hppa is not set
|
||||
# TARGET_i386 is not set
|
||||
# TARGET_i960 is not set
|
||||
# TARGET_ia64 is not set
|
||||
# TARGET_m68k is not set
|
||||
# TARGET_microblaze is not set
|
||||
TARGET_mips=y
|
||||
@ -28,16 +30,20 @@ TARGET_mips=y
|
||||
# TARGET_sh64 is not set
|
||||
# TARGET_sparc is not set
|
||||
# TARGET_v850 is not set
|
||||
# TARGET_vax is not set
|
||||
# TARGET_x86_64 is not set
|
||||
|
||||
#
|
||||
# Target Architecture Features and Options
|
||||
#
|
||||
HAVE_ELF=y
|
||||
ARCH_SUPPORTS_LITTLE_ENDIAN=y
|
||||
TARGET_ARCH="mips"
|
||||
ARCH_CFLAGS="-mno-split-addresses"
|
||||
ARCH_SUPPORTS_BIG_ENDIAN=y
|
||||
ARCH_ANY_ENDIAN=y
|
||||
# ARCH_WANTS_BIG_ENDIAN is not set
|
||||
ARCH_WANTS_LITTLE_ENDIAN=y
|
||||
CONFIG_MIPS_O32_ABI=y
|
||||
# CONFIG_MIPS_N32_ABI is not set
|
||||
# CONFIG_MIPS_N64_ABI is not set
|
||||
# CONFIG_MIPS_ISA_1 is not set
|
||||
# CONFIG_MIPS_ISA_2 is not set
|
||||
# CONFIG_MIPS_ISA_3 is not set
|
||||
@ -46,13 +52,13 @@ CONFIG_MIPS_ISA_MIPS32=y
|
||||
# CONFIG_MIPS_ISA_MIPS64 is not set
|
||||
ARCH_LITTLE_ENDIAN=y
|
||||
# ARCH_BIG_ENDIAN is not set
|
||||
# ARCH_HAS_NO_MMU is not set
|
||||
ARCH_HAS_MMU=y
|
||||
ARCH_USE_MMU=y
|
||||
UCLIBC_HAS_FLOATS=y
|
||||
HAS_FPU=y
|
||||
UCLIBC_HAS_FPU=y
|
||||
# DO_C99_MATH is not set
|
||||
KERNEL_SOURCE="./toolchain_build_mipsel/linux"
|
||||
C_SYMBOL_PREFIX=""
|
||||
KERNEL_HEADERS="./toolchain_build_mipsel/linux/include"
|
||||
HAVE_DOT_CONFIG=y
|
||||
|
||||
#
|
||||
@ -76,6 +82,7 @@ UCLIBC_CTOR_DTOR=y
|
||||
UCLIBC_HAS_THREADS=y
|
||||
# PTHREADS_DEBUG_SUPPORT is not set
|
||||
UCLIBC_HAS_LFS=y
|
||||
LINUXTHREADS_OLD=y
|
||||
# UCLIBC_STATIC_LDCONFIG is not set
|
||||
# MALLOC is not set
|
||||
# MALLOC_SIMPLE is not set
|
||||
@ -83,6 +90,12 @@ MALLOC_STANDARD=y
|
||||
MALLOC_GLIBC_COMPAT=y
|
||||
UCLIBC_DYNAMIC_ATEXIT=y
|
||||
HAS_SHADOW=y
|
||||
COMPAT_ATEXIT=y
|
||||
# UCLIBC_SUSV3_LEGACY is not set
|
||||
# UCLIBC_SUSV3_LEGACY_MACROS is not set
|
||||
# UCLIBC_HAS_SHADOW is not set
|
||||
# UCLIBC_HAS_PROGRAM_INVOCATION_NAME is not set
|
||||
UCLIBC_HAS___PROGNAME=y
|
||||
# UNIX98PTY_ONLY is not set
|
||||
ASSUME_DEVPTS=y
|
||||
UCLIBC_HAS_TM_EXTENSIONS=y
|
||||
@ -91,12 +104,21 @@ UCLIBC_HAS_TZ_FILE=y
|
||||
UCLIBC_HAS_TZ_FILE_READ_MANY=y
|
||||
UCLIBC_TZ_FILE_PATH="/etc/TZ"
|
||||
|
||||
#
|
||||
# Advanced Library Settings
|
||||
#
|
||||
UCLIBC_PWD_BUFFER_SIZE=256
|
||||
UCLIBC_GRP_BUFFER_SIZE=256
|
||||
|
||||
#
|
||||
# Networking Support
|
||||
#
|
||||
UCLIBC_HAS_IPV6=y
|
||||
UCLIBC_HAS_RPC=y
|
||||
UCLIBC_HAS_FULL_RPC=y
|
||||
# UCLIBC_HAS_REENTRANT_RPC is not set
|
||||
# UCLIBC_USE_NETLINK is not set
|
||||
# UCLIBC_HAS_BSD_RES_CLOSE is not set
|
||||
|
||||
#
|
||||
# String and Stdio Support
|
||||
@ -137,14 +159,19 @@ UCLIBC_HAS_ERRNO_MESSAGES=y
|
||||
UCLIBC_HAS_SIGNUM_MESSAGES=y
|
||||
# UCLIBC_HAS_SYS_SIGLIST is not set
|
||||
UCLIBC_HAS_GNU_GETOPT=y
|
||||
UCLIBC_HAS_GNU_GETSUBOPT=y
|
||||
|
||||
#
|
||||
# Big and Tall
|
||||
#
|
||||
UCLIBC_HAS_REGEX=y
|
||||
UCLIBC_HAS_REGEX_OLD=y
|
||||
UCLIBC_HAS_FNMATCH=y
|
||||
UCLIBC_HAS_FNMATCH_OLD=y
|
||||
UCLIBC_HAS_WORDEXP=y
|
||||
UCLIBC_HAS_FTW=y
|
||||
UCLIBC_HAS_GLOB=y
|
||||
# UCLIBC_HAS_GNU_GLOB is not set
|
||||
|
||||
#
|
||||
# Library Installation Options
|
||||
@ -154,18 +181,29 @@ RUNTIME_PREFIX="/"
|
||||
DEVEL_PREFIX="/usr/"
|
||||
|
||||
#
|
||||
# uClibc security related options
|
||||
# Security options
|
||||
#
|
||||
# UCLIBC_SECURITY is not set
|
||||
# UCLIBC_BUILD_PIE is not set
|
||||
# UCLIBC_HAS_ARC4RANDOM is not set
|
||||
# HAVE_NO_SSP is not set
|
||||
# UCLIBC_HAS_SSP is not set
|
||||
UCLIBC_BUILD_RELRO=y
|
||||
# UCLIBC_BUILD_NOW is not set
|
||||
UCLIBC_BUILD_NOEXECSTACK=y
|
||||
|
||||
#
|
||||
# uClibc development/debugging options
|
||||
#
|
||||
CROSS_COMPILER_PREFIX=""
|
||||
UCLIBC_EXTRA_CFLAGS=""
|
||||
# DODEBUG is not set
|
||||
# DODEBUG_PT is not set
|
||||
DOSTRIP=y
|
||||
# DOASSERTS is not set
|
||||
# SUPPORT_LD_DEBUG is not set
|
||||
# SUPPORT_LD_DEBUG_EARLY is not set
|
||||
# UCLIBC_MALLOC_DEBUGGING is not set
|
||||
WARNINGS="-Wall"
|
||||
# EXTRA_WARNINGS is not set
|
||||
# DOMULTI is not set
|
||||
# UCLIBC_MJN3_ONLY is not set
|
||||
|
@ -16,8 +16,10 @@
|
||||
# TARGET_e1 is not set
|
||||
# TARGET_frv is not set
|
||||
# TARGET_h8300 is not set
|
||||
# TARGET_hppa is not set
|
||||
# TARGET_i386 is not set
|
||||
# TARGET_i960 is not set
|
||||
# TARGET_ia64 is not set
|
||||
# TARGET_m68k is not set
|
||||
# TARGET_microblaze is not set
|
||||
# TARGET_mips is not set
|
||||
@ -28,29 +30,25 @@ TARGET_powerpc=y
|
||||
# TARGET_sh64 is not set
|
||||
# TARGET_sparc is not set
|
||||
# TARGET_v850 is not set
|
||||
# TARGET_vax is not set
|
||||
# TARGET_x86_64 is not set
|
||||
|
||||
#
|
||||
# Target Architecture Features and Options
|
||||
#
|
||||
HAVE_ELF=y
|
||||
TARGET_ARCH="powerpc"
|
||||
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
|
||||
CONFIG_CLASSIC=y
|
||||
# CONFIG_E500 is not set
|
||||
# ARCH_ANY_ENDIAN is not set
|
||||
# ARCH_LITTLE_ENDIAN is not set
|
||||
ARCH_BIG_ENDIAN=y
|
||||
# ARCH_HAS_NO_MMU is not set
|
||||
ARCH_HAS_MMU=y
|
||||
ARCH_USE_MMU=y
|
||||
UCLIBC_HAS_FLOATS=y
|
||||
HAS_FPU=y
|
||||
UCLIBC_HAS_FPU=y
|
||||
# DO_C99_MATH is not set
|
||||
KERNEL_SOURCE="./toolchain_build_powerpc/linux"
|
||||
C_SYMBOL_PREFIX=""
|
||||
KERNEL_HEADERS="./toolchain_build_powerpc/linux/include"
|
||||
HAVE_DOT_CONFIG=y
|
||||
|
||||
#
|
||||
@ -68,12 +66,12 @@ LDSO_CACHE_SUPPORT=y
|
||||
# LDSO_PRELOAD_FILE_SUPPORT is not set
|
||||
LDSO_BASE_FILENAME="ld.so"
|
||||
LDSO_RUNPATH=y
|
||||
DL_FINI_CRT_COMPAT=y
|
||||
UCLIBC_CTOR_DTOR=y
|
||||
# HAS_NO_THREADS is not set
|
||||
UCLIBC_HAS_THREADS=y
|
||||
# PTHREADS_DEBUG_SUPPORT is not set
|
||||
UCLIBC_HAS_LFS=y
|
||||
LINUXTHREADS_OLD=y
|
||||
# UCLIBC_STATIC_LDCONFIG is not set
|
||||
# MALLOC is not set
|
||||
# MALLOC_SIMPLE is not set
|
||||
@ -81,6 +79,12 @@ MALLOC_STANDARD=y
|
||||
MALLOC_GLIBC_COMPAT=y
|
||||
UCLIBC_DYNAMIC_ATEXIT=y
|
||||
HAS_SHADOW=y
|
||||
COMPAT_ATEXIT=y
|
||||
# UCLIBC_SUSV3_LEGACY is not set
|
||||
# UCLIBC_SUSV3_LEGACY_MACROS is not set
|
||||
# UCLIBC_HAS_SHADOW is not set
|
||||
# UCLIBC_HAS_PROGRAM_INVOCATION_NAME is not set
|
||||
UCLIBC_HAS___PROGNAME=y
|
||||
# UNIX98PTY_ONLY is not set
|
||||
ASSUME_DEVPTS=y
|
||||
UCLIBC_HAS_TM_EXTENSIONS=y
|
||||
@ -89,12 +93,21 @@ UCLIBC_HAS_TZ_FILE=y
|
||||
UCLIBC_HAS_TZ_FILE_READ_MANY=y
|
||||
UCLIBC_TZ_FILE_PATH="/etc/TZ"
|
||||
|
||||
#
|
||||
# Advanced Library Settings
|
||||
#
|
||||
UCLIBC_PWD_BUFFER_SIZE=256
|
||||
UCLIBC_GRP_BUFFER_SIZE=256
|
||||
|
||||
#
|
||||
# Networking Support
|
||||
#
|
||||
UCLIBC_HAS_IPV6=y
|
||||
UCLIBC_HAS_RPC=y
|
||||
UCLIBC_HAS_FULL_RPC=y
|
||||
# UCLIBC_HAS_REENTRANT_RPC is not set
|
||||
# UCLIBC_USE_NETLINK is not set
|
||||
# UCLIBC_HAS_BSD_RES_CLOSE is not set
|
||||
|
||||
#
|
||||
# String and Stdio Support
|
||||
@ -135,14 +148,19 @@ UCLIBC_HAS_ERRNO_MESSAGES=y
|
||||
UCLIBC_HAS_SIGNUM_MESSAGES=y
|
||||
# UCLIBC_HAS_SYS_SIGLIST is not set
|
||||
UCLIBC_HAS_GNU_GETOPT=y
|
||||
UCLIBC_HAS_GNU_GETSUBOPT=y
|
||||
|
||||
#
|
||||
# Big and Tall
|
||||
#
|
||||
UCLIBC_HAS_REGEX=y
|
||||
UCLIBC_HAS_REGEX_OLD=y
|
||||
UCLIBC_HAS_FNMATCH=y
|
||||
UCLIBC_HAS_FNMATCH_OLD=y
|
||||
UCLIBC_HAS_WORDEXP=y
|
||||
UCLIBC_HAS_FTW=y
|
||||
UCLIBC_HAS_GLOB=y
|
||||
# UCLIBC_HAS_GNU_GLOB is not set
|
||||
|
||||
#
|
||||
# Library Installation Options
|
||||
@ -152,18 +170,29 @@ RUNTIME_PREFIX="/"
|
||||
DEVEL_PREFIX="/usr/"
|
||||
|
||||
#
|
||||
# uClibc security related options
|
||||
# Security options
|
||||
#
|
||||
# UCLIBC_SECURITY is not set
|
||||
# UCLIBC_BUILD_PIE is not set
|
||||
# UCLIBC_HAS_ARC4RANDOM is not set
|
||||
# HAVE_NO_SSP is not set
|
||||
# UCLIBC_HAS_SSP is not set
|
||||
UCLIBC_BUILD_RELRO=y
|
||||
# UCLIBC_BUILD_NOW is not set
|
||||
UCLIBC_BUILD_NOEXECSTACK=y
|
||||
|
||||
#
|
||||
# uClibc development/debugging options
|
||||
#
|
||||
CROSS_COMPILER_PREFIX=""
|
||||
UCLIBC_EXTRA_CFLAGS=""
|
||||
# DODEBUG is not set
|
||||
# DODEBUG_PT is not set
|
||||
DOSTRIP=y
|
||||
# DOASSERTS is not set
|
||||
# SUPPORT_LD_DEBUG is not set
|
||||
# SUPPORT_LD_DEBUG_EARLY is not set
|
||||
# UCLIBC_MALLOC_DEBUGGING is not set
|
||||
WARNINGS="-Wall"
|
||||
# EXTRA_WARNINGS is not set
|
||||
# DOMULTI is not set
|
||||
# UCLIBC_MJN3_ONLY is not set
|
||||
|
91
toolchain/uClibc/patches/001-fix_mmap.patch
Normal file
91
toolchain/uClibc/patches/001-fix_mmap.patch
Normal file
@ -0,0 +1,91 @@
|
||||
--- uClibc-0.9.29.oorig/test/mmap/mmap2.c (revision 0)
|
||||
+++ uClibc-0.9.29/test/mmap/mmap2.c (revision 18616)
|
||||
@@ -0,0 +1,41 @@
|
||||
+/* When trying to map /dev/mem with offset 0xFFFFF000 on the ARM platform, mmap
|
||||
+ * returns -EOVERFLOW.
|
||||
+ *
|
||||
+ * Since off_t is defined as a long int and the sign bit is set in the address,
|
||||
+ * the shift operation shifts in ones instead of zeroes
|
||||
+ * from the left. This results the offset sent to the kernel function becomes
|
||||
+ * 0xFFFFFFFF instead of 0x000FFFFF with MMAP2_PAGE_SHIFT set to 12.
|
||||
+ */
|
||||
+
|
||||
+#include <unistd.h>
|
||||
+#include <stdio.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
+#include <errno.h>
|
||||
+#include <fcntl.h>
|
||||
+#include <sys/mman.h>
|
||||
+
|
||||
+#define FATAL do { fprintf(stderr, "Error at line %d, file %s (%d) [%s]\n", \
|
||||
+ __LINE__, __FILE__, errno, strerror(errno)); exit(1); } while(0)
|
||||
+
|
||||
+#define MAP_SIZE 4096UL
|
||||
+#define MAP_MASK (MAP_SIZE - 1)
|
||||
+
|
||||
+int main(int argc, char **argv) {
|
||||
+ void* map_base = 0;
|
||||
+ int fd;
|
||||
+ off_t target = 0xfffff000;
|
||||
+ if((fd = open("/dev/mem", O_RDWR | O_SYNC)) == -1) FATAL;
|
||||
+ printf("/dev/mem opened.\n");
|
||||
+ fflush(stdout);
|
||||
+
|
||||
+ /* Map one page */
|
||||
+ map_base = mmap(0, MAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED,
|
||||
+ fd, target & ~MAP_MASK);
|
||||
+ if(map_base == (void *) -1) FATAL;
|
||||
+ printf("Memory mapped at address %p.\n", map_base);
|
||||
+ fflush(stdout);
|
||||
+ if(munmap(map_base, MAP_SIZE) == -1) FATAL;
|
||||
+ close(fd);
|
||||
+ return 0;
|
||||
+}
|
||||
--- uClibc-0.9.29.oorig/libc/sysdeps/linux/arm/mmap.c (revision 18615)
|
||||
+++ uClibc-0.9.29/libc/sysdeps/linux/arm/mmap.c (revision 18616)
|
||||
@@ -27,7 +27,6 @@ __ptr_t mmap(__ptr_t addr, size_t len, i
|
||||
|
||||
#elif defined (__NR_mmap2)
|
||||
#define __NR__mmap __NR_mmap2
|
||||
-
|
||||
#ifndef MMAP2_PAGE_SHIFT
|
||||
# define MMAP2_PAGE_SHIFT 12
|
||||
#endif
|
||||
@@ -39,9 +38,17 @@ __ptr_t mmap(__ptr_t addr, size_t len, i
|
||||
{
|
||||
/* check if offset is page aligned */
|
||||
if (offset & ((1 << MMAP2_PAGE_SHIFT) - 1))
|
||||
+ {
|
||||
+ __set_errno(EINVAL);
|
||||
return MAP_FAILED;
|
||||
+ }
|
||||
+#ifdef __USE_FILE_OFFSET64
|
||||
+ return (__ptr_t) _mmap (addr, len, prot, flags,
|
||||
+ fd,((__u_quad_t) offset >> MMAP2_PAGE_SHIFT));
|
||||
+#else
|
||||
return (__ptr_t) _mmap (addr, len, prot, flags,
|
||||
- fd,(off_t) (offset >> MMAP2_PAGE_SHIFT));
|
||||
+ fd,((__u_long) offset >> MMAP2_PAGE_SHIFT));
|
||||
+#endif
|
||||
}
|
||||
#elif defined (__NR_mmap)
|
||||
# define __NR__mmap __NR_mmap
|
||||
--- uClibc-0.9.29.oorig/libc/sysdeps/linux/common/mmap64.c (revision 18615)
|
||||
+++ uClibc-0.9.29/libc/sysdeps/linux/common/mmap64.c (revision 18616)
|
||||
@@ -58,8 +58,13 @@ __ptr_t mmap64(__ptr_t addr, size_t len,
|
||||
__set_errno(EINVAL);
|
||||
return MAP_FAILED;
|
||||
}
|
||||
-
|
||||
- return __syscall_mmap2(addr, len, prot, flags, fd, (off_t) (offset >> MMAP2_PAGE_SHIFT));
|
||||
+#ifdef __USE_FILE_OFFSET64
|
||||
+ return __syscall_mmap2(addr, len, prot, flags,
|
||||
+ fd,((__u_quad_t)offset >> MMAP2_PAGE_SHIFT));
|
||||
+#else
|
||||
+ return __syscall_mmap2(addr, len, prot, flags,
|
||||
+ fd,((__u_long)offset >> MMAP2_PAGE_SHIFT));
|
||||
+#endif
|
||||
}
|
||||
|
||||
# endif
|
@ -0,0 +1,53 @@
|
||||
diff -ur uClibc-0.9.29/libc/sysdeps/linux/common/sched_getaffinity.c uClibc-0.9.29-patched/libc/sysdeps/linux/common/sched_getaffinity.c
|
||||
--- uClibc-0.9.29/libc/sysdeps/linux/common/sched_getaffinity.c 2007-02-12 16:52:32.000000000 -0600
|
||||
+++ uClibc-0.9.29-patched/libc/sysdeps/linux/common/sched_getaffinity.c 2007-05-09 18:05:09.397411811 -0500
|
||||
@@ -29,6 +29,7 @@
|
||||
#include <sys/param.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
+#ifdef __NR_sched_getaffinity
|
||||
libc_hidden_proto(memset)
|
||||
|
||||
#define __NR___syscall_sched_getaffinity __NR_sched_getaffinity
|
||||
@@ -48,5 +49,15 @@
|
||||
}
|
||||
return res;
|
||||
}
|
||||
+#else
|
||||
+/*
|
||||
+int sched_getaffinity(pid_t pid, size_t cpusetsize, cpu_set_t *cpuset)
|
||||
+{
|
||||
+ __set_errno(ENOSYS);
|
||||
+ return -1;
|
||||
+}
|
||||
+*/
|
||||
#endif
|
||||
#endif
|
||||
+
|
||||
+#endif
|
||||
diff -ur uClibc-0.9.29/libc/sysdeps/linux/common/sched_setaffinity.c uClibc-0.9.29-patched/libc/sysdeps/linux/common/sched_setaffinity.c
|
||||
--- uClibc-0.9.29/libc/sysdeps/linux/common/sched_setaffinity.c 2007-02-12 16:52:32.000000000 -0600
|
||||
+++ uClibc-0.9.29-patched/libc/sysdeps/linux/common/sched_setaffinity.c 2007-05-09 18:05:09.397411811 -0500
|
||||
@@ -31,6 +31,7 @@
|
||||
#include <sys/types.h>
|
||||
#include <alloca.h>
|
||||
|
||||
+#ifdef __NR_sched_setaffinity
|
||||
libc_hidden_proto(getpid)
|
||||
|
||||
#define __NR___syscall_sched_setaffinity __NR_sched_setaffinity
|
||||
@@ -74,5 +75,14 @@
|
||||
|
||||
return INLINE_SYSCALL (sched_setaffinity, 3, pid, cpusetsize, cpuset);
|
||||
}
|
||||
+#else
|
||||
+/*
|
||||
+int sched_setaffinity(pid_t pid, size_t cpusetsize, const cpu_set_t *cpuset)
|
||||
+{
|
||||
+ __set_errno(ENOSYS);
|
||||
+ return -1;
|
||||
+}
|
||||
+*/
|
||||
+#endif
|
||||
#endif
|
||||
#endif
|
@ -0,0 +1,12 @@
|
||||
diff -ur uClibc-0.9.29/libc/inet/resolv.c uClibc-0.9.29-patched/libc/inet/resolv.c
|
||||
--- uClibc-0.9.29/libc/inet/resolv.c 2007-04-23 12:01:05.000000000 -0500
|
||||
+++ uClibc-0.9.29-patched/libc/inet/resolv.c 2007-05-09 18:05:33.563404419 -0500
|
||||
@@ -1700,7 +1700,7 @@
|
||||
int gethostent_r(struct hostent *result_buf, char *buf, size_t buflen,
|
||||
struct hostent **result, int *h_errnop)
|
||||
{
|
||||
- int ret;
|
||||
+ int ret = HOST_NOT_FOUND;
|
||||
|
||||
__UCLIBC_MUTEX_LOCK(mylock);
|
||||
if (__gethostent_fp == NULL) {
|
@ -0,0 +1,51 @@
|
||||
Index: uClibc/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h
|
||||
===================================================================
|
||||
--- uClibc/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h (revision 18898)
|
||||
+++ uClibc/libc/sysdeps/linux/i386/bits/uClibc_arch_features.h (working copy)
|
||||
@@ -42,6 +42,8 @@
|
||||
/* define if target supports IEEE signed zero floats */
|
||||
#define __UCLIBC_HAVE_SIGNED_ZERO__
|
||||
|
||||
+#if defined _LIBC
|
||||
#define internal_function __attribute__ ((regparm (3), stdcall))
|
||||
+#endif
|
||||
|
||||
#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
|
||||
Index: uClibc/include/libc-symbols.h
|
||||
===================================================================
|
||||
--- uClibc/include/libc-symbols.h (revision 18898)
|
||||
+++ uClibc/include/libc-symbols.h (working copy)
|
||||
@@ -22,6 +22,16 @@
|
||||
#ifndef _LIBC_SYMBOLS_H
|
||||
#define _LIBC_SYMBOLS_H 1
|
||||
|
||||
+/* This is defined for the compilation of all C library code. features.h
|
||||
+ tests this to avoid inclusion of stubs.h while compiling the library,
|
||||
+ before stubs.h has been generated. Some library code that is shared
|
||||
+ with other packages also tests this symbol to see if it is being
|
||||
+ compiled as part of the C library. We must define this before including
|
||||
+ config.h, because it makes some definitions conditional on whether libc
|
||||
+ itself is being compiled, or just some generator program. */
|
||||
+#define _LIBC 1
|
||||
+
|
||||
+
|
||||
/* This file's macros are included implicitly in the compilation of every
|
||||
file in the C library by -imacros.
|
||||
|
||||
@@ -40,16 +50,6 @@
|
||||
|
||||
#include <bits/uClibc_arch_features.h>
|
||||
|
||||
-
|
||||
-/* This is defined for the compilation of all C library code. features.h
|
||||
- tests this to avoid inclusion of stubs.h while compiling the library,
|
||||
- before stubs.h has been generated. Some library code that is shared
|
||||
- with other packages also tests this symbol to see if it is being
|
||||
- compiled as part of the C library. We must define this before including
|
||||
- config.h, because it makes some definitions conditional on whether libc
|
||||
- itself is being compiled, or just some generator program. */
|
||||
-#define _LIBC 1
|
||||
-
|
||||
/* Enable declarations of GNU extensions, since we are compiling them. */
|
||||
#define _GNU_SOURCE 1
|
||||
|
86
toolchain/uClibc/patches/006-rm_whitespace.patch
Normal file
86
toolchain/uClibc/patches/006-rm_whitespace.patch
Normal file
@ -0,0 +1,86 @@
|
||||
diff -urN uClibc-0.9.29-0rig/include/assert.h uClibc-0.9.29/include/assert.h
|
||||
--- uClibc-0.9.29-0rig/include/assert.h 2005-11-03 23:42:46.000000000 +0100
|
||||
+++ uClibc-0.9.29/include/assert.h 2007-08-13 19:10:57.000000000 +0200
|
||||
@@ -31,7 +31,7 @@
|
||||
#define _ASSERT_H 1
|
||||
#include <features.h>
|
||||
|
||||
-#if defined __cplusplus && __GNUC_PREREQ (2,95)
|
||||
+#if defined __cplusplus && __GNUC_PREREQ(2,95)
|
||||
# define __ASSERT_VOID_CAST static_cast<void>
|
||||
#else
|
||||
# define __ASSERT_VOID_CAST (void)
|
||||
@@ -59,13 +59,17 @@
|
||||
(__ASSERT_VOID_CAST ((expr) ? 0 : \
|
||||
(__assert (__STRING(expr), __FILE__, __LINE__, \
|
||||
__ASSERT_FUNCTION), 0)))
|
||||
-
|
||||
+
|
||||
+/* Define some temporaries to workaround tinyx makedepend bug */
|
||||
+#define __GNUC_PREREQ_2_6 __GNUC_PREREQ(2, 6)
|
||||
+#define __GNUC_PREREQ_2_4 __GNUC_PREREQ(2, 4)
|
||||
/* Version 2.4 and later of GCC define a magical variable `__PRETTY_FUNCTION__'
|
||||
which contains the name of the function currently being defined.
|
||||
This is broken in G++ before version 2.6.
|
||||
C9x has a similar variable called __func__, but prefer the GCC one since
|
||||
it demangles C++ function names. */
|
||||
-# if defined __cplusplus ? __GNUC_PREREQ (2, 6) : __GNUC_PREREQ (2, 4)
|
||||
+
|
||||
+# if defined __cplusplus ? __GNUC_PREREQ_2_6 : __GNUC_PREREQ_2_4
|
||||
# define __ASSERT_FUNCTION __PRETTY_FUNCTION__
|
||||
# else
|
||||
# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
|
||||
diff -urN uClibc-0.9.29-0rig/include/complex.h uClibc-0.9.29/include/complex.h
|
||||
--- uClibc-0.9.29-0rig/include/complex.h 2002-05-09 10:15:21.000000000 +0200
|
||||
+++ uClibc-0.9.29/include/complex.h 2007-08-13 17:55:29.000000000 +0200
|
||||
@@ -33,7 +33,7 @@
|
||||
/* We might need to add support for more compilers here. But since ISO
|
||||
C99 is out hopefully all maintained compilers will soon provide the data
|
||||
types `float complex' and `double complex'. */
|
||||
-#if __GNUC_PREREQ (2, 7) && !__GNUC_PREREQ (2, 97)
|
||||
+#if __GNUC_PREREQ(2, 7) && !__GNUC_PREREQ(2, 97)
|
||||
# define _Complex __complex__
|
||||
#endif
|
||||
|
||||
diff -urN uClibc-0.9.29-0rig/include/features.h uClibc-0.9.29/include/features.h
|
||||
--- uClibc-0.9.29-0rig/include/features.h 2006-11-29 22:10:04.000000000 +0100
|
||||
+++ uClibc-0.9.29/include/features.h 2007-08-13 17:55:51.000000000 +0200
|
||||
@@ -143,7 +143,7 @@
|
||||
|
||||
/* Convenience macros to test the versions of glibc and gcc.
|
||||
Use them like this:
|
||||
- #if __GNUC_PREREQ (2,8)
|
||||
+ #if __GNUC_PREREQ(2,8)
|
||||
... code requiring gcc 2.8 or later ...
|
||||
#endif
|
||||
Note - they won't work for gcc1 or glibc1, since the _MINOR macros
|
||||
@@ -297,7 +297,7 @@
|
||||
/* uClibc does not support _FORTIFY_SOURCE */
|
||||
#undef _FORTIFY_SOURCE
|
||||
#if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0 \
|
||||
- && __GNUC_PREREQ (4, 1) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0
|
||||
+ && __GNUC_PREREQ(4, 1) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0
|
||||
# if _FORTIFY_SOURCE > 1
|
||||
# define __USE_FORTIFY_LEVEL 2
|
||||
# else
|
||||
@@ -366,7 +366,7 @@
|
||||
#endif /* !ASSEMBLER */
|
||||
|
||||
/* Decide whether we can define 'extern inline' functions in headers. */
|
||||
-#if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \
|
||||
+#if __GNUC_PREREQ(2, 7) && defined __OPTIMIZE__ \
|
||||
&& !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__
|
||||
# define __USE_EXTERN_INLINES 1
|
||||
#endif
|
||||
diff -urN uClibc-0.9.29-0rig/include/tgmath.h uClibc-0.9.29/include/tgmath.h
|
||||
--- uClibc-0.9.29-0rig/include/tgmath.h 2002-05-09 10:15:21.000000000 +0200
|
||||
+++ uClibc-0.9.29/include/tgmath.h 2007-08-13 17:56:17.000000000 +0200
|
||||
@@ -34,7 +34,7 @@
|
||||
do not try this for now and instead concentrate only on GNU CC. Once
|
||||
we have more information support for other compilers might follow. */
|
||||
|
||||
-#if __GNUC_PREREQ (2, 7)
|
||||
+#if __GNUC_PREREQ(2, 7)
|
||||
|
||||
# ifdef __NO_LONG_DOUBLE_MATH
|
||||
# define __tgml(fct) fct
|
3657
toolchain/uClibc/patches/007-avr32.patch
Normal file
3657
toolchain/uClibc/patches/007-avr32.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -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,13 +0,0 @@
|
||||
diff -ur uclibc.old/libc/sysdeps/linux/i386/bits/kernel_types.h uclibc.dev/libc/sysdeps/linux/i386/bits/kernel_types.h
|
||||
--- uclibc.old/libc/sysdeps/linux/i386/bits/kernel_types.h 2005-08-18 00:49:43.000000000 +0200
|
||||
+++ uclibc.dev/libc/sysdeps/linux/i386/bits/kernel_types.h 2006-12-14 07:58:19.000000000 +0100
|
||||
@@ -4,7 +4,8 @@
|
||||
* 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)
|
||||
+#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.
|
Loading…
Reference in New Issue
Block a user