diff --git a/toolchain/eglibc/Config.in b/toolchain/eglibc/Config.in
index ca4c4a6f30205e2574af7eb7fbca36bdaf56bfd1..2ae8da3e85c46edfe41b0ae5789a5163aa08743c 100644
--- a/toolchain/eglibc/Config.in
+++ b/toolchain/eglibc/Config.in
@@ -24,6 +24,10 @@ choice
 		bool "eglibc 2.11"
 		depends GCC_VERSION_4_3 || GCC_VERSION_4_4 || GCC_VERSION_4_5
 
+	config EGLIBC_VERSION_2_12
+		bool "eglibc 2.12"
+		depends GCC_VERSION_4_3 || GCC_VERSION_4_4 || GCC_VERSION_4_5
+
 	config EGLIBC_VERSION_TRUNK
 		bool "eglibc trunk"
 
@@ -39,6 +43,7 @@ config EGLIBC_REVISION
 	default "10153" if EGLIBC_VERSION_2_9
 	default "10152" if EGLIBC_VERSION_2_10
 	default "10454" if EGLIBC_VERSION_2_11
+	default "10495" if EGLIBC_VERSION_2_12
 	default "HEAD"  if EGLIBC_VERSION_TRUNK
 	default ""
 
diff --git a/toolchain/eglibc/Config.version b/toolchain/eglibc/Config.version
index f08837841d7d526d632000af309404c62379fde5..700c40924e2567d1ad1053b53d0d1ae4f78184d2 100644
--- a/toolchain/eglibc/Config.version
+++ b/toolchain/eglibc/Config.version
@@ -7,4 +7,5 @@ config EGLIBC_VERSION
 	default "2.9"    if EGLIBC_VERSION_2_9
 	default "2.10.2" if EGLIBC_VERSION_2_10
 	default "2.11.1" if EGLIBC_VERSION_2_11
+	default "2.12"   if EGLIBC_VERSION_2_12
 	default "trunk"
diff --git a/toolchain/eglibc/Makefile b/toolchain/eglibc/Makefile
index 822309d0588d80021a32b090c32b0d29fb7904b9..3d3a1da5cfc1ebd8709d9f8e75630feaa6d623f9 100644
--- a/toolchain/eglibc/Makefile
+++ b/toolchain/eglibc/Makefile
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2006-2009 OpenWrt.org
+# Copyright (C) 2006-2010 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -33,6 +33,9 @@ endif
 ifneq ($(CONFIG_EGLIBC_VERSION_2_11),)
   PKG_SOURCE_URL:=svn://svn.eglibc.org/branches/eglibc-2_11
 endif
+ifneq ($(CONFIG_EGLIBC_VERSION_2_12),)
+  PKG_SOURCE_URL:=svn://svn.eglibc.org/branches/eglibc-2_12
+endif
 ifneq ($(CONFIG_EGLIBC_VERSION_TRUNK),)
   PKG_SOURCE_URL:=svn://svn.eglibc.org/trunk
 endif
diff --git a/toolchain/eglibc/config/Config.in b/toolchain/eglibc/config/Config.in
index ad442430e83eeb2ee30d888697a22d5bf29dfbcd..72230a318e1577a6abdb7d59270d127eb17f5fc9 100644
--- a/toolchain/eglibc/config/Config.in
+++ b/toolchain/eglibc/config/Config.in
@@ -49,7 +49,7 @@ config EGLIBC_OPTION_EGLIBC_BACKTRACE
 config EGLIBC_OPTION_EGLIBC_BIG_MACROS
 	bool "Use extensive inline code"
 	default y
-	depends EGLIBC_VERSION_2_11
+	depends EGLIBC_VERSION_2_11 ||  EGLIBC_VERSION_2_12
 	help
 	  This option group specifies whether certain pieces of code
 	  should be inlined to achieve maximum speed.  If this option
@@ -170,6 +170,30 @@ config EGLIBC_OPTION_EGLIBC_CHARSETS
 							32-bit ISO 10646)
 
 
+config EGLIBC_OPTION_EGLIBC_CRYPT
+	bool "Encryption library"
+	default y
+	depends EGLIBC_VERSION_2_12
+	help
+	  This option group includes the `libcrypt' library which
+	  provides functions for one-way encryption.  Supported
+	  encryption algorithms include MD5, SHA-256, SHA-512 and DES.
+
+
+config EGLIBC_OPTION_EGLIBC_CRYPT_UFC
+	bool "Ultra fast `crypt' implementation"
+	default y
+	depends EGLIBC_VERSION_2_12
+	select EGLIBC_OPTION_EGLIBC_CRYPT
+	help
+	  This option group provides ultra fast DES-based implementation of
+	  the `crypt' function.  When this option group is disabled,
+	  (a) the library will not provide the setkey[_r] and encrypt[_r]
+	  functions and (b) the crypt[_r] function will return NULL and set the
+	  errno to ENOSYS if /salt/ passed does not correspond to either MD5,
+	  SHA-256 or SHA-512 algorithm.
+
+
 config EGLIBC_OPTION_EGLIBC_DB_ALIASES
 	bool "Functions for accessing the mail aliases database"
 	default y
@@ -209,7 +233,7 @@ config EGLIBC_OPTION_EGLIBC_ENVZ
 config EGLIBC_OPTION_EGLIBC_FCVT
 	bool "Functions for converting floating-point numbers to strings"
 	default y
-	depends EGLIBC_VERSION_2_10 || EGLIBC_VERSION_2_11
+	depends EGLIBC_VERSION_2_10 || EGLIBC_VERSION_2_11 ||  EGLIBC_VERSION_2_12
 	help
 	  This option group includes functions for converting
 	  floating-point numbers to strings.
@@ -226,7 +250,7 @@ config EGLIBC_OPTION_EGLIBC_FCVT
 config EGLIBC_OPTION_EGLIBC_FMTMSG
 	bool "Functions for formatting messages"
 	default y
-	depends EGLIBC_VERSION_2_10 || EGLIBC_VERSION_2_11
+	depends EGLIBC_VERSION_2_10 || EGLIBC_VERSION_2_11 ||  EGLIBC_VERSION_2_12
 	help
 	  This option group includes the following functions:
 
@@ -252,7 +276,7 @@ config EGLIBC_OPTION_EGLIBC_FSTAB
 config EGLIBC_OPTION_EGLIBC_FTRAVERSE
 	bool "Functions for traversing file hierarchies"
 	default y
-	depends EGLIBC_VERSION_2_10 || EGLIBC_VERSION_2_11
+	depends EGLIBC_VERSION_2_10 || EGLIBC_VERSION_2_11 ||  EGLIBC_VERSION_2_12
 	help
 	  This option group includes functions for traversing file
 	  UNIX file hierachies.
@@ -280,6 +304,15 @@ config EGLIBC_OPTION_EGLIBC_GETLOGIN
 	  expansion when the 'HOME' environment variable is not set.
 
 
+config EGLIBC_OPTION_EGLIBC_IDN
+	bool "International domain names support"
+	default y
+	depends EGLIBC_VERSION_2_12
+	help
+	  This option group includes the `libcidn' library which
+	  provides support for international domain names.
+
+
 config EGLIBC_OPTION_EGLIBC_INET
 	bool "Networking support"
 	default y
@@ -407,6 +440,16 @@ config EGLIBC_OPTION_EGLIBC_INET
 	  syslog is valuable in non-networked contexts.
 
 
+config EGLIBC_OPTION_EGLIBC_INET_ANL
+	bool "Asynchronous name lookup"
+	default y
+	depends EGLIBC_VERSION_2_12
+	select OPTION_EGLIBC_INET
+	help
+	  This option group includes the `libanl' library which
+	  provides support for asynchronous name lookup.
+
+
 config EGLIBC_OPTION_EGLIBC_LIBM
 	bool "libm (math library)"
 	default y
@@ -427,6 +470,22 @@ config EGLIBC_OPTION_EGLIBC_LIBM
 	  resulting EGLIBC installation.
 
 
+config EGLIBC_OPTION_EGLIBC_LIBM_BIG
+	bool "Math library size"
+	default y
+	depends EGLIBC_VERSION_2_12
+	help
+	  This option group enables default configuration of the math library.
+	  Not selecting this option group removes most of the extended and
+	  double precision math functions and replaces them with wrappers
+	  to the single precision couterparts.
+	  Doing so greatly degrades quality of calculations carried
+	  out by the functions of the math library, but also significantly
+	  reduces the size of the libm.
+	  This option group is useful for systems that do not rely on precise
+	  floating point math.
+
+
 config EGLIBC_OPTION_EGLIBC_LOCALES
 	bool "Locale definitions"
 	default y
@@ -439,7 +498,7 @@ config EGLIBC_OPTION_EGLIBC_LOCALES
 config EGLIBC_OPTION_EGLIBC_LOCALE_CODE
 	bool "Locale functions"
 	default y
-	select EGLIBC_OPTION_POSIX_C_LANG_WIDE_CHAR if EGLIBC_VERSION_2_8 || EGLIBC_VERSION_2_9 || EGLIBC_VERSION_2_10 || EGLIBC_VERSION_2_11
+	select EGLIBC_OPTION_POSIX_C_LANG_WIDE_CHAR if EGLIBC_VERSION_2_8 || EGLIBC_VERSION_2_9 || EGLIBC_VERSION_2_10 || EGLIBC_VERSION_2_11 ||  EGLIBC_VERSION_2_12
 	help
 	  This option group includes locale support functions, programs,
 	  and libraries.  With EGLIBC_OPTION_EGLIBC_LOCALE_CODE disabled,
@@ -464,7 +523,7 @@ config EGLIBC_OPTION_EGLIBC_LOCALE_CODE
 config EGLIBC_OPTION_EGLIBC_MEMUSAGE
 	bool "Memory profiling library"
 	default y
-	depends EGLIBC_VERSION_2_11
+	depends EGLIBC_VERSION_2_11 ||  EGLIBC_VERSION_2_12
 	help
 	  This option group includes the `libmemusage' library and
 	  the `memusage' and `memusagestat' utilities.
@@ -598,6 +657,20 @@ config EGLIBC_OPTION_EGLIBC_RCMD
 		rresvport_af
 
 
+config EGLIBC_OPTION_EGLIBC_RTLD_DEBUG
+	bool "Runtime linker debug print outs"
+	default y
+	depends EGLIBC_VERSION_2_12
+	help
+	  This option group enables debug output of the runtime linker
+	  which is activated via LD_DEBUG and LD_TRACE_PRELINKING
+	  environment variables.  Disabling this option group yields
+	  a smaller runtime linker binary.
+	  BEWARE: Disabling this option group is likely to break
+	  the `ldd' utility which may also be used by the prelinker.
+	  In particular, the `--unused' ldd option will not work correctly.
+
+
 config EGLIBC_OPTION_EGLIBC_SPAWN
 	bool "Support for POSIX posix_spawn functions"
 	default y
@@ -729,7 +802,7 @@ config EGLIBC_OPTION_EGLIBC_WORDEXP
 config EGLIBC_OPTION_POSIX_C_LANG_WIDE_CHAR
 	bool "ISO C library wide character functions, excluding I/O"
 	default y
-	depends EGLIBC_VERSION_2_8 || EGLIBC_VERSION_2_9 || EGLIBC_VERSION_2_10 || EGLIBC_VERSION_2_11
+	depends EGLIBC_VERSION_2_8 || EGLIBC_VERSION_2_9 || EGLIBC_VERSION_2_10 || EGLIBC_VERSION_2_11 ||  EGLIBC_VERSION_2_12
 	help
 	  This option group includes the functions defined by the ISO C
 	  standard for working with wide and multibyte characters in
@@ -784,7 +857,7 @@ config EGLIBC_OPTION_POSIX_REGEXP
 config EGLIBC_OPTION_POSIX_REGEXP_GLIBC
 	bool "Regular expressions from GLIBC"
 	default y
-	depends EGLIBC_VERSION_2_10 || EGLIBC_VERSION_2_11
+	depends EGLIBC_VERSION_2_10 || EGLIBC_VERSION_2_11 ||  EGLIBC_VERSION_2_12
 	select EGLIBC_OPTION_POSIX_REGEXP
 	help
 	  This option group specifies which regular expression
@@ -798,7 +871,7 @@ config EGLIBC_OPTION_POSIX_REGEXP_GLIBC
 config EGLIBC_OPTION_POSIX_WIDE_CHAR_DEVICE_IO
 	bool "Input and output functions for wide characters"
 	default y
-	select EGLIBC_OPTION_POSIX_C_LANG_WIDE_CHAR if EGLIBC_VERSION_2_8 || EGLIBC_VERSION_2_9 || EGLIBC_VERSION_2_10 || EGLIBC_VERSION_2_11
+	select EGLIBC_OPTION_POSIX_C_LANG_WIDE_CHAR if EGLIBC_VERSION_2_8 || EGLIBC_VERSION_2_9 || EGLIBC_VERSION_2_10 || EGLIBC_VERSION_2_11 ||  EGLIBC_VERSION_2_12
 	help
 	  This option group includes functions for reading and writing
 	  wide characters to and from <stdio.h> streams.