[ARM/FDPIC,v3,02/21,ARM] FDPIC: Handle arm*-*-uclinuxfdpiceabi in configure scripts

Message ID 20181011133518.17258-3-christophe.lyon@st.com
State Superseded
Headers show
Series
  • FDPIC ABI for ARM
Related show

Commit Message

Christophe Lyon Oct. 11, 2018, 1:34 p.m.
The new arm-uclinuxfdpiceabi target behaves pretty much like
arm-linux-gnueabi. In order the enable the same set of features, we
have to update several configure scripts that generally match targets
like *-*-linux*: in most places, we add *-uclinux* where there is
already *-linux*, or uclinux* when there is already linux*.

In gcc/config.gcc and libgcc/config.host we use *-*-uclinuxfdpiceabi
because there is already a different behaviour for *-*uclinux* target.

In libtool.m4, we use uclinuxfdpiceabi in cases where ELF shared
libraries support is required, as uclinux does not guarantee that.

2018-XX-XX  Christophe Lyon  <christophe.lyon@st.com>

	config/
	* futex.m4: Handle *-uclinux*.
	* tls.m4 (GCC_CHECK_TLS): Likewise.

	gcc/
	* config.gcc: Handle *-*-uclinuxfdpiceabi.

	libatomic/
	* configure.tgt: Handle arm*-*-uclinux*.
	* configure: Regenerate.

	libgcc/
	* config.host: Handle *-*-uclinuxfdpiceabi.

	libitm/
	* configure.tgt: Handle *-*-uclinux*.
	* configure: Regenerate.

	libstdc++-v3/
	* acinclude.m4: Handle uclinux*.
	* configure: Regenerate.
	* configure.host: Handle uclinux*

	* libtool.m4: Handle uclinux*.

Change-Id: I6a1fdcd9847d8a82179a214612a3474c1f492916

-- 
2.6.3

Comments

Richard Earnshaw (lists) Oct. 12, 2018, 9:54 a.m. | #1
On 11/10/18 14:34, Christophe Lyon wrote:
> The new arm-uclinuxfdpiceabi target behaves pretty much like

> arm-linux-gnueabi. In order the enable the same set of features, we

> have to update several configure scripts that generally match targets

> like *-*-linux*: in most places, we add *-uclinux* where there is

> already *-linux*, or uclinux* when there is already linux*.

> 

> In gcc/config.gcc and libgcc/config.host we use *-*-uclinuxfdpiceabi

> because there is already a different behaviour for *-*uclinux* target.

> 

> In libtool.m4, we use uclinuxfdpiceabi in cases where ELF shared

> libraries support is required, as uclinux does not guarantee that.

> 

> 2018-XX-XX  Christophe Lyon  <christophe.lyon@st.com>

> 

> 	config/

> 	* futex.m4: Handle *-uclinux*.

> 	* tls.m4 (GCC_CHECK_TLS): Likewise.

> 

> 	gcc/

> 	* config.gcc: Handle *-*-uclinuxfdpiceabi.

> 

> 	libatomic/

> 	* configure.tgt: Handle arm*-*-uclinux*.

> 	* configure: Regenerate.

> 

> 	libgcc/

> 	* config.host: Handle *-*-uclinuxfdpiceabi.

> 

> 	libitm/

> 	* configure.tgt: Handle *-*-uclinux*.

> 	* configure: Regenerate.

> 

> 	libstdc++-v3/

> 	* acinclude.m4: Handle uclinux*.

> 	* configure: Regenerate.

> 	* configure.host: Handle uclinux*

> 

> 	* libtool.m4: Handle uclinux*.


What testing have you done to ensure that these new uclinux* changes
have not affected existing uclinux configurations?

Also, do you really need to use uclinuxfdpiceabi (which is quite
Arm-specific) everywhere, or would uclinuxfdpic* be better and ease work
for other fdpic targets?

R.
> 

> Change-Id: I6a1fdcd9847d8a82179a214612a3474c1f492916

> 

> diff --git a/config/futex.m4 b/config/futex.m4

> index e95144d..4dffe15 100644

> --- a/config/futex.m4

> +++ b/config/futex.m4

> @@ -9,7 +9,7 @@ AC_DEFUN([GCC_LINUX_FUTEX],[dnl

>  GCC_ENABLE(linux-futex,default, ,[use the Linux futex system call],

>  	   permit yes|no|default)

>  case "$target" in

> -  *-linux*)

> +  *-linux* | *-uclinux*)

>      case "$enable_linux_futex" in

>        default)

>  	# If headers don't have gettid/futex syscalls definition, then

> diff --git a/config/tls.m4 b/config/tls.m4

> index 4e170c8..5a8676e 100644

> --- a/config/tls.m4

> +++ b/config/tls.m4

> @@ -76,7 +76,7 @@ AC_DEFUN([GCC_CHECK_TLS], [

>  	  dnl Shared library options may depend on the host; this check

>  	  dnl is only known to be needed for GNU/Linux.

>  	  case $host in

> -	    *-*-linux*)

> +	    *-*-linux* | -*-uclinux*)

>  	      LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"

>  	      ;;

>  	  esac

> diff --git a/gcc/config.gcc b/gcc/config.gcc

> index 0c579d1..793fc69 100644

> --- a/gcc/config.gcc

> +++ b/gcc/config.gcc

> @@ -753,7 +753,7 @@ case ${target} in

>  *-*-fuchsia*)

>    native_system_header_dir=/include

>    ;;

> -*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)

> +*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)

>    extra_options="$extra_options gnu-user.opt"

>    gas=yes

>    gnu_ld=yes

> @@ -762,7 +762,7 @@ case ${target} in

>    esac

>    tmake_file="t-slibgcc"

>    case $target in

> -    *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)

> +    *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu  | *-*-uclinuxfdpiceabi)

>        :;;

>      *-*-gnu*)

>        native_system_header_dir=/include

> @@ -782,7 +782,7 @@ case ${target} in

>      *-*-*android*)

>        tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC"

>        ;;

> -    *-*-*uclibc*)

> +    *-*-*uclibc* | *-*-uclinuxfdpiceabi)

>        tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"

>        ;;

>      *-*-*musl*)

> @@ -1134,7 +1134,7 @@ arm*-*-netbsdelf*)

>  	tmake_file="${tmake_file} arm/t-arm"

>  	target_cpu_cname="arm6"

>  	;;

> -arm*-*-linux-*)			# ARM GNU/Linux with ELF

> +arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)			# ARM GNU/Linux with ELF

>  	tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"

>  	extra_options="${extra_options} linux-android.opt"

>  	case $target in

> diff --git a/libatomic/configure b/libatomic/configure

> index b902e2c..5b3ef8e 100755

> --- a/libatomic/configure

> +++ b/libatomic/configure

> @@ -5819,7 +5819,7 @@ irix5* | irix6* | nonstopux*)

>    ;;

>  

>  # This must be Linux ELF.

> -linux* | k*bsd*-gnu | kopensolaris*-gnu)

> +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>    lt_cv_deplibs_check_method=pass_all

>    ;;

>  

> @@ -8305,7 +8305,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }

>        lt_prog_compiler_static='-non_shared'

>        ;;

>  

> -    linux* | k*bsd*-gnu | kopensolaris*-gnu)

> +    linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)

>        case $cc_basename in

>        # old Intel for x86_64 which still supported -KPIC.

>        ecc*)

> @@ -8900,7 +8900,7 @@ _LT_EOF

>        archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'

>        ;;

>  

> -    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)

> +    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>        tmp_diet=no

>        if test "$host_os" = linux-dietlibc; then

>  	case $cc_basename in

> @@ -10431,7 +10431,7 @@ linux*oldld* | linux*aout* | linux*coff*)

>    ;;

>  

>  # This must be Linux ELF.

> -linux* | k*bsd*-gnu | kopensolaris*-gnu)

> +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>    version_type=linux

>    need_lib_prefix=no

>    need_version=no

> diff --git a/libatomic/configure.tgt b/libatomic/configure.tgt

> index ea8c34f..c1a608f 100644

> --- a/libatomic/configure.tgt

> +++ b/libatomic/configure.tgt

> @@ -124,7 +124,7 @@ case "${target}" in

>  	config_path="${config_path} linux/aarch64 posix"

>  	;;

>  

> -  arm*-*-linux*)

> +  arm*-*-linux* | arm*-*-uclinux*)

>  	# OS support for atomic primitives.

>  	config_path="${config_path} linux/arm posix"

>  	;;

> diff --git a/libgcc/config.host b/libgcc/config.host

> index 029f656..28f3c14 100644

> --- a/libgcc/config.host

> +++ b/libgcc/config.host

> @@ -238,7 +238,7 @@ case ${host} in

>    tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-fuchsia"

>    extra_parts="crtbegin.o crtend.o"

>    ;;

> -*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)

> +*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)

>    tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-linux"

>    extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"

>    if test x$enable_vtable_verify = xyes; then

> @@ -424,7 +424,7 @@ arm*-*-fuchsia*)

>  arm*-*-netbsdelf*)

>  	tmake_file="$tmake_file arm/t-arm arm/t-netbsd t-slibgcc-gld-nover"

>  	;;

> -arm*-*-linux*)			# ARM GNU/Linux with ELF

> +arm*-*-linux* | arm*-*-uclinuxfdpiceabi)			# ARM GNU/Linux with ELF

>  	tmake_file="${tmake_file} arm/t-arm t-fixedpoint-gnu-prefix t-crtfm"

>  	tmake_file="${tmake_file} arm/t-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc"

>  	tm_file="$tm_file arm/bpabi-lib.h"

> diff --git a/libitm/configure b/libitm/configure

> index dbf386d..fd82500 100644

> --- a/libitm/configure

> +++ b/libitm/configure

> @@ -6494,7 +6494,7 @@ irix5* | irix6* | nonstopux*)

>    ;;

>  

>  # This must be Linux ELF.

> -linux* | k*bsd*-gnu | kopensolaris*-gnu)

> +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>    lt_cv_deplibs_check_method=pass_all

>    ;;

>  

> @@ -8981,7 +8981,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }

>        lt_prog_compiler_static='-non_shared'

>        ;;

>  

> -    linux* | k*bsd*-gnu | kopensolaris*-gnu)

> +    linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)

>        case $cc_basename in

>        # old Intel for x86_64 which still supported -KPIC.

>        ecc*)

> @@ -9576,7 +9576,7 @@ _LT_EOF

>        archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'

>        ;;

>  

> -    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)

> +    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>        tmp_diet=no

>        if test "$host_os" = linux-dietlibc; then

>  	case $cc_basename in

> @@ -11107,7 +11107,7 @@ linux*oldld* | linux*aout* | linux*coff*)

>    ;;

>  

>  # This must be Linux ELF.

> -linux* | k*bsd*-gnu | kopensolaris*-gnu)

> +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>    version_type=linux

>    need_lib_prefix=no

>    need_version=no

> @@ -13008,7 +13008,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi

>          inherit_rpath_CXX=yes

>          ;;

>  

> -      linux* | k*bsd*-gnu | kopensolaris*-gnu)

> +      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>          case $cc_basename in

>            KCC*)

>  	    # Kuck and Associates, Inc. (KAI) C++ Compiler

> @@ -13595,7 +13595,7 @@ interix[3-9]*)

>    postdeps_CXX=

>    ;;

>  

> -linux*)

> +linux* | uclinux*)

>    case `$CC -V 2>&1 | sed 5q` in

>    *Sun\ C*)

>      # Sun C++ 5.9

> @@ -13846,7 +13846,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }

>  	    ;;

>  	esac

>  	;;

> -      linux* | k*bsd*-gnu | kopensolaris*-gnu)

> +      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)

>  	case $cc_basename in

>  	  KCC*)

>  	    # KAI C++ Compiler

> @@ -14767,7 +14767,7 @@ linux*oldld* | linux*aout* | linux*coff*)

>    ;;

>  

>  # This must be Linux ELF.

> -linux* | k*bsd*-gnu | kopensolaris*-gnu)

> +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>    version_type=linux

>    need_lib_prefix=no

>    need_version=no

> @@ -16239,7 +16239,7 @@ fi

>  

>  

>  case "$target" in

> -  *-linux*)

> +  *-linux* | *-uclinux*)

>      case "$enable_linux_futex" in

>        default)

>  	# If headers don't have gettid/futex syscalls definition, then

> @@ -16362,7 +16362,7 @@ _ACEOF

>  if ac_fn_c_try_link "$LINENO"; then :

>    chktls_save_LDFLAGS="$LDFLAGS"

>  	  	  	  case $host in

> -	    *-*-linux*)

> +	    *-*-linux* | -*-uclinux*)

>  	      LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"

>  	      ;;

>  	  esac

> diff --git a/libitm/configure.tgt b/libitm/configure.tgt

> index 0cbb097..bc6c3ca 100644

> --- a/libitm/configure.tgt

> +++ b/libitm/configure.tgt

> @@ -127,7 +127,7 @@ config_path="$ARCH posix generic"

>  

>  # Other system configury

>  case "${target}" in

> -  *-*-linux*)

> +  *-*-linux* | *-*-uclinux*)

>  	if test "$enable_linux_futex" = yes; then

>  	  config_path="linux/$ARCH linux $config_path"

>  	fi

> diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4

> index 6d68e90..2e18049 100644

> --- a/libstdc++-v3/acinclude.m4

> +++ b/libstdc++-v3/acinclude.m4

> @@ -1395,7 +1395,7 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [

>          ac_has_nanosleep=yes

>          ac_has_sched_yield=yes

>          ;;

> -      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)

> +      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

>          AC_MSG_CHECKING([for at least GNU libc 2.17])

>          AC_TRY_COMPILE(

>            [#include <features.h>],

> @@ -1517,7 +1517,7 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [

>  

>    if test x"$ac_has_clock_monotonic" != x"yes"; then

>      case ${target_os} in

> -      linux*)

> +      linux* | uclinux*)

>  	AC_MSG_CHECKING([for clock_gettime syscall])

>  	AC_TRY_COMPILE(

>  	  [#include <unistd.h>

> @@ -2402,7 +2402,7 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [

>    # Default to "generic".

>    if test $enable_clocale_flag = auto; then

>      case ${target_os} in

> -      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)

> +      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

>  	enable_clocale_flag=gnu

>  	;;

>        darwin*)

> @@ -2648,7 +2648,7 @@ AC_DEFUN([GLIBCXX_ENABLE_ALLOCATOR], [

>    # Default to "new".

>    if test $enable_libstdcxx_allocator_flag = auto; then

>      case ${target_os} in

> -      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)

> +      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

>  	enable_libstdcxx_allocator_flag=new

>  	;;

>        *)

> @@ -4282,7 +4282,7 @@ AC_DEFUN([GLIBCXX_ENABLE_FILESYSTEM_TS], [

>        freebsd*|netbsd*|openbsd*|dragonfly*|darwin*)

>          enable_libstdcxx_filesystem_ts=yes

>          ;;

> -      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)

> +      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

>          enable_libstdcxx_filesystem_ts=yes

>          ;;

>        rtems*)

> @@ -4430,7 +4430,7 @@ dnl

>      AC_MSG_CHECKING([for sendfile that can copy files])

>      AC_CACHE_VAL(glibcxx_cv_sendfile, [dnl

>        case "${target_os}" in

> -        gnu* | linux* | solaris*)

> +        gnu* | linux* | solaris* | uclinux*)

>            GCC_TRY_COMPILE_OR_LINK(

>              [#include <sys/sendfile.h>],

>              [sendfile(1, 2, (off_t*)0, sizeof 1);],

> diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure

> index d33081d..7780679 100755

> --- a/libstdc++-v3/configure

> +++ b/libstdc++-v3/configure

> @@ -6413,7 +6413,7 @@ irix5* | irix6* | nonstopux*)

>    ;;

>  

>  # This must be Linux ELF.

> -linux* | k*bsd*-gnu | kopensolaris*-gnu)

> +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>    lt_cv_deplibs_check_method=pass_all

>    ;;

>  

> @@ -8765,7 +8765,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }

>        lt_prog_compiler_static='-non_shared'

>        ;;

>  

> -    linux* | k*bsd*-gnu | kopensolaris*-gnu)

> +    linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)

>        case $cc_basename in

>        # old Intel for x86_64 which still supported -KPIC.

>        ecc*)

> @@ -9360,7 +9360,7 @@ _LT_EOF

>        archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'

>        ;;

>  

> -    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)

> +    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>        tmp_diet=no

>        if test "$host_os" = linux-dietlibc; then

>  	case $cc_basename in

> @@ -10900,7 +10900,7 @@ linux*oldld* | linux*aout* | linux*coff*)

>    ;;

>  

>  # This must be Linux ELF.

> -linux* | k*bsd*-gnu | kopensolaris*-gnu)

> +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>    version_type=linux

>    need_lib_prefix=no

>    need_version=no

> @@ -12825,7 +12825,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi

>          inherit_rpath_CXX=yes

>          ;;

>  

> -      linux* | k*bsd*-gnu | kopensolaris*-gnu)

> +      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>          case $cc_basename in

>            KCC*)

>  	    # Kuck and Associates, Inc. (KAI) C++ Compiler

> @@ -13412,7 +13412,7 @@ interix[3-9]*)

>    postdeps_CXX=

>    ;;

>  

> -linux*)

> +linux* | uclinux*)

>    case `$CC -V 2>&1 | sed 5q` in

>    *Sun\ C*)

>      # Sun C++ 5.9

> @@ -13663,7 +13663,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }

>  	    ;;

>  	esac

>  	;;

> -      linux* | k*bsd*-gnu | kopensolaris*-gnu)

> +      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)

>  	case $cc_basename in

>  	  KCC*)

>  	    # KAI C++ Compiler

> @@ -14584,7 +14584,7 @@ linux*oldld* | linux*aout* | linux*coff*)

>    ;;

>  

>  # This must be Linux ELF.

> -linux* | k*bsd*-gnu | kopensolaris*-gnu)

> +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>    version_type=linux

>    need_lib_prefix=no

>    need_version=no

> @@ -15833,7 +15833,7 @@ fi

>    # Default to "generic".

>    if test $enable_clocale_flag = auto; then

>      case ${target_os} in

> -      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)

> +      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

>  	enable_clocale_flag=gnu

>  	;;

>        darwin*)

> @@ -16250,7 +16250,7 @@ fi

>    # Default to "new".

>    if test $enable_libstdcxx_allocator_flag = auto; then

>      case ${target_os} in

> -      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)

> +      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

>  	enable_libstdcxx_allocator_flag=new

>  	;;

>        *)

> @@ -20526,7 +20526,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu

>          ac_has_nanosleep=yes

>          ac_has_sched_yield=yes

>          ;;

> -      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)

> +      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

>          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for at least GNU libc 2.17" >&5

>  $as_echo_n "checking for at least GNU libc 2.17... " >&6; }

>          cat confdefs.h - <<_ACEOF >conftest.$ac_ext

> @@ -21026,7 +21026,7 @@ $as_echo "$ac_has_nanosleep" >&6; }

>  

>    if test x"$ac_has_clock_monotonic" != x"yes"; then

>      case ${target_os} in

> -      linux*)

> +      linux* | uclinux*)

>  	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime syscall" >&5

>  $as_echo_n "checking for clock_gettime syscall... " >&6; }

>  	cat confdefs.h - <<_ACEOF >conftest.$ac_ext

> @@ -27918,7 +27918,7 @@ _ACEOF

>  if ac_fn_c_try_link "$LINENO"; then :

>    chktls_save_LDFLAGS="$LDFLAGS"

>  	  	  	  case $host in

> -	    *-*-linux*)

> +	    *-*-linux* | -*-uclinux*)

>  	      LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"

>  	      ;;

>  	  esac

> @@ -53578,7 +53578,7 @@ _ACEOF

>  if ac_fn_c_try_link "$LINENO"; then :

>    chktls_save_LDFLAGS="$LDFLAGS"

>  	  	  	  case $host in

> -	    *-*-linux*)

> +	    *-*-linux* | -*-uclinux*)

>  	      LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"

>  	      ;;

>  	  esac

> @@ -59771,7 +59771,7 @@ _ACEOF

>  if ac_fn_c_try_link "$LINENO"; then :

>    chktls_save_LDFLAGS="$LDFLAGS"

>  	  	  	  case $host in

> -	    *-*-linux*)

> +	    *-*-linux* | -*-uclinux*)

>  	      LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"

>  	      ;;

>  	  esac

> @@ -78397,7 +78397,7 @@ fi

>  

>  

>  case "$target" in

> -  *-linux*)

> +  *-linux* | *-uclinux*)

>      case "$enable_linux_futex" in

>        default)

>  	# If headers don't have gettid/futex syscalls definition, then

> @@ -80033,7 +80033,7 @@ $as_echo_n "checking whether to build Filesystem TS support... " >&6; }

>        freebsd*|netbsd*|openbsd*|dragonfly*|darwin*)

>          enable_libstdcxx_filesystem_ts=yes

>          ;;

> -      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)

> +      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

>          enable_libstdcxx_filesystem_ts=yes

>          ;;

>        rtems*)

> @@ -80457,7 +80457,7 @@ $as_echo_n "checking for sendfile that can copy files... " >&6; }

>    $as_echo_n "(cached) " >&6

>  else

>          case "${target_os}" in

> -        gnu* | linux* | solaris*)

> +        gnu* | linux* | solaris* | uclinux*)

>            if test x$gcc_no_link = xyes; then

>    cat confdefs.h - <<_ACEOF >conftest.$ac_ext

>  /* end confdefs.h.  */

> diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host

> index 155a3cd..1c298ab 100644

> --- a/libstdc++-v3/configure.host

> +++ b/libstdc++-v3/configure.host

> @@ -264,7 +264,7 @@ case "${host_os}" in

>    linux-musl*)

>      os_include_dir="os/generic"

>      ;;

> -  gnu* | linux* | kfreebsd*-gnu)

> +  gnu* | linux* | kfreebsd*-gnu | uclinux*)

>      if [ "$uclibc" = "yes" ]; then

>        os_include_dir="os/uclibc"

>      elif [ "$bionic" = "yes" ]; then

> @@ -327,7 +327,7 @@ esac

>  # Set any OS-dependent and CPU-dependent bits.

>  # THIS TABLE IS SORTED.  KEEP IT THAT WAY.

>  case "${host}" in

> -  *-*-linux*)

> +  *-*-linux* | *-*-uclinux*)

>      case "${host_cpu}" in

>        i[567]86)

>          abi_baseline_pair=i486-linux-gnu

> @@ -358,7 +358,7 @@ case "${host}" in

>          fi

>      esac

>      case "${host}" in

> -      arm*-*-linux-*)

> +      arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)

>  	port_specific_symbol_files="\$(srcdir)/../config/os/gnu-linux/arm-eabi-extra.ver"

>  	;;

>      esac

> diff --git a/libtool.m4 b/libtool.m4

> index 940faaa..49ab293 100644

> --- a/libtool.m4

> +++ b/libtool.m4

> @@ -2449,7 +2449,7 @@ linux*oldld* | linux*aout* | linux*coff*)

>    ;;

>  

>  # This must be Linux ELF.

> -linux* | k*bsd*-gnu | kopensolaris*-gnu)

> +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>    version_type=linux

>    need_lib_prefix=no

>    need_version=no

> @@ -3089,7 +3089,7 @@ irix5* | irix6* | nonstopux*)

>    ;;

>  

>  # This must be Linux ELF.

> -linux* | k*bsd*-gnu | kopensolaris*-gnu)

> +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>    lt_cv_deplibs_check_method=pass_all

>    ;;

>  

> @@ -3734,7 +3734,7 @@ m4_if([$1], [CXX], [

>  	    ;;

>  	esac

>  	;;

> -      linux* | k*bsd*-gnu | kopensolaris*-gnu)

> +      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)

>  	case $cc_basename in

>  	  KCC*)

>  	    # KAI C++ Compiler

> @@ -4032,7 +4032,7 @@ m4_if([$1], [CXX], [

>        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'

>        ;;

>  

> -    linux* | k*bsd*-gnu | kopensolaris*-gnu)

> +    linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)

>        case $cc_basename in

>        # old Intel for x86_64 which still supported -KPIC.

>        ecc*)

> @@ -4449,7 +4449,7 @@ _LT_EOF

>        _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'

>        ;;

>  

> -    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)

> +    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>        tmp_diet=no

>        if test "$host_os" = linux-dietlibc; then

>  	case $cc_basename in

> @@ -5946,7 +5946,7 @@ if test "$_lt_caught_CXX_error" != yes; then

>          _LT_TAGVAR(inherit_rpath, $1)=yes

>          ;;

>  

> -      linux* | k*bsd*-gnu | kopensolaris*-gnu)

> +      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>          case $cc_basename in

>            KCC*)

>  	    # Kuck and Associates, Inc. (KAI) C++ Compiler

> @@ -6598,7 +6598,7 @@ interix[[3-9]]*)

>    _LT_TAGVAR(postdeps,$1)=

>    ;;

>  

> -linux*)

> +linux* | uclinux*)

>    case `$CC -V 2>&1 | sed 5q` in

>    *Sun\ C*)

>      # Sun C++ 5.9

>
Christophe Lyon Oct. 15, 2018, 8:12 a.m. | #2
On Fri, 12 Oct 2018 at 11:54, Richard Earnshaw (lists) <
Richard.Earnshaw@arm.com> wrote:

> On 11/10/18 14:34, Christophe Lyon wrote:

> > The new arm-uclinuxfdpiceabi target behaves pretty much like

> > arm-linux-gnueabi. In order the enable the same set of features, we

> > have to update several configure scripts that generally match targets

> > like *-*-linux*: in most places, we add *-uclinux* where there is

> > already *-linux*, or uclinux* when there is already linux*.

> >

> > In gcc/config.gcc and libgcc/config.host we use *-*-uclinuxfdpiceabi

> > because there is already a different behaviour for *-*uclinux* target.

> >

> > In libtool.m4, we use uclinuxfdpiceabi in cases where ELF shared

> > libraries support is required, as uclinux does not guarantee that.

> >

> > 2018-XX-XX  Christophe Lyon  <christophe.lyon@st.com>

> >

> >       config/

> >       * futex.m4: Handle *-uclinux*.

> >       * tls.m4 (GCC_CHECK_TLS): Likewise.

> >

> >       gcc/

> >       * config.gcc: Handle *-*-uclinuxfdpiceabi.

> >

> >       libatomic/

> >       * configure.tgt: Handle arm*-*-uclinux*.

> >       * configure: Regenerate.

> >

> >       libgcc/

> >       * config.host: Handle *-*-uclinuxfdpiceabi.

> >

> >       libitm/

> >       * configure.tgt: Handle *-*-uclinux*.

> >       * configure: Regenerate.

> >

> >       libstdc++-v3/

> >       * acinclude.m4: Handle uclinux*.

> >       * configure: Regenerate.

> >       * configure.host: Handle uclinux*

> >

> >       * libtool.m4: Handle uclinux*.

>

> What testing have you done to ensure that these new uclinux* changes

> have not affected existing uclinux configurations?

>

> Also, do you really need to use uclinuxfdpiceabi (which is quite

> Arm-specific) everywhere, or would uclinuxfdpic* be better and ease work

> for other fdpic targets?

>

>

This patch became necessary when I was asked to change the target name
from  arm-linux-uclibceabi to arm-uclinuxfdpiceabi.
Changing it implied that many features were disabled and tests regressed
because the new target name didn't match the regexps in configure scripts.

I iterated over the regressions to see which features were now missing, and
I updated the configure scripts accordingly.

When the feature being tested was generic, I used the general *-*-uclinux*
form, because it seemed reasonable that it was OK for other targets.
When the test was arm-related, I used the stricter uclinuxfdpiceabi form,
and specifically not uclinuxfdpic* to avoid breaking other fdpic targets.
When in doubt, I preferred to stay on the safe side.

To answer you first question, I do not have the setup to test other uclinux
configs, I'm not even sure of the list.
So I tested arm-uclinuxfdpiceabi, made sure I got the same results as with
our previous target name, and that
the whole series didn't regress on arm-linux-gnueabi*.

I hope other uclinux/fdpic target maintainers comment on this patch if
something looks wrong to them.

Christophe

R.
> >

> > Change-Id: I6a1fdcd9847d8a82179a214612a3474c1f492916

> >

> > diff --git a/config/futex.m4 b/config/futex.m4

> > index e95144d..4dffe15 100644

> > --- a/config/futex.m4

> > +++ b/config/futex.m4

> > @@ -9,7 +9,7 @@ AC_DEFUN([GCC_LINUX_FUTEX],[dnl

> >  GCC_ENABLE(linux-futex,default, ,[use the Linux futex system call],

> >          permit yes|no|default)

> >  case "$target" in

> > -  *-linux*)

> > +  *-linux* | *-uclinux*)

> >      case "$enable_linux_futex" in

> >        default)

> >       # If headers don't have gettid/futex syscalls definition, then

> > diff --git a/config/tls.m4 b/config/tls.m4

> > index 4e170c8..5a8676e 100644

> > --- a/config/tls.m4

> > +++ b/config/tls.m4

> > @@ -76,7 +76,7 @@ AC_DEFUN([GCC_CHECK_TLS], [

> >         dnl Shared library options may depend on the host; this check

> >         dnl is only known to be needed for GNU/Linux.

> >         case $host in

> > -         *-*-linux*)

> > +         *-*-linux* | -*-uclinux*)

> >             LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"

> >             ;;

> >         esac

> > diff --git a/gcc/config.gcc b/gcc/config.gcc

> > index 0c579d1..793fc69 100644

> > --- a/gcc/config.gcc

> > +++ b/gcc/config.gcc

> > @@ -753,7 +753,7 @@ case ${target} in

> >  *-*-fuchsia*)

> >    native_system_header_dir=/include

> >    ;;

> > -*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* |

> *-*-kopensolaris*-gnu)

> > +*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* |

> *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)

> >    extra_options="$extra_options gnu-user.opt"

> >    gas=yes

> >    gnu_ld=yes

> > @@ -762,7 +762,7 @@ case ${target} in

> >    esac

> >    tmake_file="t-slibgcc"

> >    case $target in

> > -    *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu |

> *-*-kopensolaris*-gnu)

> > +    *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu |

> *-*-kopensolaris*-gnu  | *-*-uclinuxfdpiceabi)

> >        :;;

> >      *-*-gnu*)

> >        native_system_header_dir=/include

> > @@ -782,7 +782,7 @@ case ${target} in

> >      *-*-*android*)

> >        tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC"

> >        ;;

> > -    *-*-*uclibc*)

> > +    *-*-*uclibc* | *-*-uclinuxfdpiceabi)

> >        tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"

> >        ;;

> >      *-*-*musl*)

> > @@ -1134,7 +1134,7 @@ arm*-*-netbsdelf*)

> >       tmake_file="${tmake_file} arm/t-arm"

> >       target_cpu_cname="arm6"

> >       ;;

> > -arm*-*-linux-*)                      # ARM GNU/Linux with ELF

> > +arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)                    # ARM

> GNU/Linux with ELF

> >       tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h

> glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"

> >       extra_options="${extra_options} linux-android.opt"

> >       case $target in

> > diff --git a/libatomic/configure b/libatomic/configure

> > index b902e2c..5b3ef8e 100755

> > --- a/libatomic/configure

> > +++ b/libatomic/configure

> > @@ -5819,7 +5819,7 @@ irix5* | irix6* | nonstopux*)

> >    ;;

> >

> >  # This must be Linux ELF.

> > -linux* | k*bsd*-gnu | kopensolaris*-gnu)

> > +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

> >    lt_cv_deplibs_check_method=pass_all

> >    ;;

> >

> > @@ -8305,7 +8305,7 @@ $as_echo_n "checking for $compiler option to

> produce PIC... " >&6; }

> >        lt_prog_compiler_static='-non_shared'

> >        ;;

> >

> > -    linux* | k*bsd*-gnu | kopensolaris*-gnu)

> > +    linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)

> >        case $cc_basename in

> >        # old Intel for x86_64 which still supported -KPIC.

> >        ecc*)

> > @@ -8900,7 +8900,7 @@ _LT_EOF

> >        archive_expsym_cmds='sed "s,^,_," $export_symbols

> >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs

> $compiler_flags ${wl}-h,$soname

> ${wl}--retain-symbols-file,$output_objdir/$soname.expsym

> ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o

> $lib'

> >        ;;

> >

> > -    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)

> > +    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu |

> uclinuxfdpiceabi)

> >        tmp_diet=no

> >        if test "$host_os" = linux-dietlibc; then

> >       case $cc_basename in

> > @@ -10431,7 +10431,7 @@ linux*oldld* | linux*aout* | linux*coff*)

> >    ;;

> >

> >  # This must be Linux ELF.

> > -linux* | k*bsd*-gnu | kopensolaris*-gnu)

> > +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

> >    version_type=linux

> >    need_lib_prefix=no

> >    need_version=no

> > diff --git a/libatomic/configure.tgt b/libatomic/configure.tgt

> > index ea8c34f..c1a608f 100644

> > --- a/libatomic/configure.tgt

> > +++ b/libatomic/configure.tgt

> > @@ -124,7 +124,7 @@ case "${target}" in

> >       config_path="${config_path} linux/aarch64 posix"

> >       ;;

> >

> > -  arm*-*-linux*)

> > +  arm*-*-linux* | arm*-*-uclinux*)

> >       # OS support for atomic primitives.

> >       config_path="${config_path} linux/arm posix"

> >       ;;

> > diff --git a/libgcc/config.host b/libgcc/config.host

> > index 029f656..28f3c14 100644

> > --- a/libgcc/config.host

> > +++ b/libgcc/config.host

> > @@ -238,7 +238,7 @@ case ${host} in

> >    tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip

> t-slibgcc t-slibgcc-fuchsia"

> >    extra_parts="crtbegin.o crtend.o"

> >    ;;

> > -*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* |

> *-*-kopensolaris*-gnu)

> > +*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* |

> *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)

> >    tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip

> t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-linux"

> >    extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"

> >    if test x$enable_vtable_verify = xyes; then

> > @@ -424,7 +424,7 @@ arm*-*-fuchsia*)

> >  arm*-*-netbsdelf*)

> >       tmake_file="$tmake_file arm/t-arm arm/t-netbsd t-slibgcc-gld-nover"

> >       ;;

> > -arm*-*-linux*)                       # ARM GNU/Linux with ELF

> > +arm*-*-linux* | arm*-*-uclinuxfdpiceabi)                     # ARM

> GNU/Linux with ELF

> >       tmake_file="${tmake_file} arm/t-arm t-fixedpoint-gnu-prefix

> t-crtfm"

> >       tmake_file="${tmake_file} arm/t-elf arm/t-bpabi arm/t-linux-eabi

> t-slibgcc-libgcc"

> >       tm_file="$tm_file arm/bpabi-lib.h"

> > diff --git a/libitm/configure b/libitm/configure

> > index dbf386d..fd82500 100644

> > --- a/libitm/configure

> > +++ b/libitm/configure

> > @@ -6494,7 +6494,7 @@ irix5* | irix6* | nonstopux*)

> >    ;;

> >

> >  # This must be Linux ELF.

> > -linux* | k*bsd*-gnu | kopensolaris*-gnu)

> > +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

> >    lt_cv_deplibs_check_method=pass_all

> >    ;;

> >

> > @@ -8981,7 +8981,7 @@ $as_echo_n "checking for $compiler option to

> produce PIC... " >&6; }

> >        lt_prog_compiler_static='-non_shared'

> >        ;;

> >

> > -    linux* | k*bsd*-gnu | kopensolaris*-gnu)

> > +    linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)

> >        case $cc_basename in

> >        # old Intel for x86_64 which still supported -KPIC.

> >        ecc*)

> > @@ -9576,7 +9576,7 @@ _LT_EOF

> >        archive_expsym_cmds='sed "s,^,_," $export_symbols

> >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs

> $compiler_flags ${wl}-h,$soname

> ${wl}--retain-symbols-file,$output_objdir/$soname.expsym

> ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o

> $lib'

> >        ;;

> >

> > -    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)

> > +    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu |

> uclinuxfdpiceabi)

> >        tmp_diet=no

> >        if test "$host_os" = linux-dietlibc; then

> >       case $cc_basename in

> > @@ -11107,7 +11107,7 @@ linux*oldld* | linux*aout* | linux*coff*)

> >    ;;

> >

> >  # This must be Linux ELF.

> > -linux* | k*bsd*-gnu | kopensolaris*-gnu)

> > +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

> >    version_type=linux

> >    need_lib_prefix=no

> >    need_version=no

> > @@ -13008,7 +13008,7 @@ if test -z "$aix_libpath"; then

> aix_libpath="/usr/lib:/lib"; fi

> >          inherit_rpath_CXX=yes

> >          ;;

> >

> > -      linux* | k*bsd*-gnu | kopensolaris*-gnu)

> > +      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

> >          case $cc_basename in

> >            KCC*)

> >           # Kuck and Associates, Inc. (KAI) C++ Compiler

> > @@ -13595,7 +13595,7 @@ interix[3-9]*)

> >    postdeps_CXX=

> >    ;;

> >

> > -linux*)

> > +linux* | uclinux*)

> >    case `$CC -V 2>&1 | sed 5q` in

> >    *Sun\ C*)

> >      # Sun C++ 5.9

> > @@ -13846,7 +13846,7 @@ $as_echo_n "checking for $compiler option to

> produce PIC... " >&6; }

> >           ;;

> >       esac

> >       ;;

> > -      linux* | k*bsd*-gnu | kopensolaris*-gnu)

> > +      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)

> >       case $cc_basename in

> >         KCC*)

> >           # KAI C++ Compiler

> > @@ -14767,7 +14767,7 @@ linux*oldld* | linux*aout* | linux*coff*)

> >    ;;

> >

> >  # This must be Linux ELF.

> > -linux* | k*bsd*-gnu | kopensolaris*-gnu)

> > +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

> >    version_type=linux

> >    need_lib_prefix=no

> >    need_version=no

> > @@ -16239,7 +16239,7 @@ fi

> >

> >

> >  case "$target" in

> > -  *-linux*)

> > +  *-linux* | *-uclinux*)

> >      case "$enable_linux_futex" in

> >        default)

> >       # If headers don't have gettid/futex syscalls definition, then

> > @@ -16362,7 +16362,7 @@ _ACEOF

> >  if ac_fn_c_try_link "$LINENO"; then :

> >    chktls_save_LDFLAGS="$LDFLAGS"

> >                         case $host in

> > -         *-*-linux*)

> > +         *-*-linux* | -*-uclinux*)

> >             LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"

> >             ;;

> >         esac

> > diff --git a/libitm/configure.tgt b/libitm/configure.tgt

> > index 0cbb097..bc6c3ca 100644

> > --- a/libitm/configure.tgt

> > +++ b/libitm/configure.tgt

> > @@ -127,7 +127,7 @@ config_path="$ARCH posix generic"

> >

> >  # Other system configury

> >  case "${target}" in

> > -  *-*-linux*)

> > +  *-*-linux* | *-*-uclinux*)

> >       if test "$enable_linux_futex" = yes; then

> >         config_path="linux/$ARCH linux $config_path"

> >       fi

> > diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4

> > index 6d68e90..2e18049 100644

> > --- a/libstdc++-v3/acinclude.m4

> > +++ b/libstdc++-v3/acinclude.m4

> > @@ -1395,7 +1395,7 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [

> >          ac_has_nanosleep=yes

> >          ac_has_sched_yield=yes

> >          ;;

> > -      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)

> > +      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

> >          AC_MSG_CHECKING([for at least GNU libc 2.17])

> >          AC_TRY_COMPILE(

> >            [#include <features.h>],

> > @@ -1517,7 +1517,7 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [

> >

> >    if test x"$ac_has_clock_monotonic" != x"yes"; then

> >      case ${target_os} in

> > -      linux*)

> > +      linux* | uclinux*)

> >       AC_MSG_CHECKING([for clock_gettime syscall])

> >       AC_TRY_COMPILE(

> >         [#include <unistd.h>

> > @@ -2402,7 +2402,7 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [

> >    # Default to "generic".

> >    if test $enable_clocale_flag = auto; then

> >      case ${target_os} in

> > -      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)

> > +      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

> >       enable_clocale_flag=gnu

> >       ;;

> >        darwin*)

> > @@ -2648,7 +2648,7 @@ AC_DEFUN([GLIBCXX_ENABLE_ALLOCATOR], [

> >    # Default to "new".

> >    if test $enable_libstdcxx_allocator_flag = auto; then

> >      case ${target_os} in

> > -      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)

> > +      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

> >       enable_libstdcxx_allocator_flag=new

> >       ;;

> >        *)

> > @@ -4282,7 +4282,7 @@ AC_DEFUN([GLIBCXX_ENABLE_FILESYSTEM_TS], [

> >        freebsd*|netbsd*|openbsd*|dragonfly*|darwin*)

> >          enable_libstdcxx_filesystem_ts=yes

> >          ;;

> > -      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)

> > +      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

> >          enable_libstdcxx_filesystem_ts=yes

> >          ;;

> >        rtems*)

> > @@ -4430,7 +4430,7 @@ dnl

> >      AC_MSG_CHECKING([for sendfile that can copy files])

> >      AC_CACHE_VAL(glibcxx_cv_sendfile, [dnl

> >        case "${target_os}" in

> > -        gnu* | linux* | solaris*)

> > +        gnu* | linux* | solaris* | uclinux*)

> >            GCC_TRY_COMPILE_OR_LINK(

> >              [#include <sys/sendfile.h>],

> >              [sendfile(1, 2, (off_t*)0, sizeof 1);],

> > diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure

> > index d33081d..7780679 100755

> > --- a/libstdc++-v3/configure

> > +++ b/libstdc++-v3/configure

> > @@ -6413,7 +6413,7 @@ irix5* | irix6* | nonstopux*)

> >    ;;

> >

> >  # This must be Linux ELF.

> > -linux* | k*bsd*-gnu | kopensolaris*-gnu)

> > +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

> >    lt_cv_deplibs_check_method=pass_all

> >    ;;

> >

> > @@ -8765,7 +8765,7 @@ $as_echo_n "checking for $compiler option to

> produce PIC... " >&6; }

> >        lt_prog_compiler_static='-non_shared'

> >        ;;

> >

> > -    linux* | k*bsd*-gnu | kopensolaris*-gnu)

> > +    linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)

> >        case $cc_basename in

> >        # old Intel for x86_64 which still supported -KPIC.

> >        ecc*)

> > @@ -9360,7 +9360,7 @@ _LT_EOF

> >        archive_expsym_cmds='sed "s,^,_," $export_symbols

> >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs

> $compiler_flags ${wl}-h,$soname

> ${wl}--retain-symbols-file,$output_objdir/$soname.expsym

> ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o

> $lib'

> >        ;;

> >

> > -    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)

> > +    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu |

> uclinuxfdpiceabi)

> >        tmp_diet=no

> >        if test "$host_os" = linux-dietlibc; then

> >       case $cc_basename in

> > @@ -10900,7 +10900,7 @@ linux*oldld* | linux*aout* | linux*coff*)

> >    ;;

> >

> >  # This must be Linux ELF.

> > -linux* | k*bsd*-gnu | kopensolaris*-gnu)

> > +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

> >    version_type=linux

> >    need_lib_prefix=no

> >    need_version=no

> > @@ -12825,7 +12825,7 @@ if test -z "$aix_libpath"; then

> aix_libpath="/usr/lib:/lib"; fi

> >          inherit_rpath_CXX=yes

> >          ;;

> >

> > -      linux* | k*bsd*-gnu | kopensolaris*-gnu)

> > +      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

> >          case $cc_basename in

> >            KCC*)

> >           # Kuck and Associates, Inc. (KAI) C++ Compiler

> > @@ -13412,7 +13412,7 @@ interix[3-9]*)

> >    postdeps_CXX=

> >    ;;

> >

> > -linux*)

> > +linux* | uclinux*)

> >    case `$CC -V 2>&1 | sed 5q` in

> >    *Sun\ C*)

> >      # Sun C++ 5.9

> > @@ -13663,7 +13663,7 @@ $as_echo_n "checking for $compiler option to

> produce PIC... " >&6; }

> >           ;;

> >       esac

> >       ;;

> > -      linux* | k*bsd*-gnu | kopensolaris*-gnu)

> > +      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)

> >       case $cc_basename in

> >         KCC*)

> >           # KAI C++ Compiler

> > @@ -14584,7 +14584,7 @@ linux*oldld* | linux*aout* | linux*coff*)

> >    ;;

> >

> >  # This must be Linux ELF.

> > -linux* | k*bsd*-gnu | kopensolaris*-gnu)

> > +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

> >    version_type=linux

> >    need_lib_prefix=no

> >    need_version=no

> > @@ -15833,7 +15833,7 @@ fi

> >    # Default to "generic".

> >    if test $enable_clocale_flag = auto; then

> >      case ${target_os} in

> > -      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)

> > +      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

> >       enable_clocale_flag=gnu

> >       ;;

> >        darwin*)

> > @@ -16250,7 +16250,7 @@ fi

> >    # Default to "new".

> >    if test $enable_libstdcxx_allocator_flag = auto; then

> >      case ${target_os} in

> > -      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)

> > +      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

> >       enable_libstdcxx_allocator_flag=new

> >       ;;

> >        *)

> > @@ -20526,7 +20526,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu

> >          ac_has_nanosleep=yes

> >          ac_has_sched_yield=yes

> >          ;;

> > -      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)

> > +      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

> >          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for at least

> GNU libc 2.17" >&5

> >  $as_echo_n "checking for at least GNU libc 2.17... " >&6; }

> >          cat confdefs.h - <<_ACEOF >conftest.$ac_ext

> > @@ -21026,7 +21026,7 @@ $as_echo "$ac_has_nanosleep" >&6; }

> >

> >    if test x"$ac_has_clock_monotonic" != x"yes"; then

> >      case ${target_os} in

> > -      linux*)

> > +      linux* | uclinux*)

> >       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for

> clock_gettime syscall" >&5

> >  $as_echo_n "checking for clock_gettime syscall... " >&6; }

> >       cat confdefs.h - <<_ACEOF >conftest.$ac_ext

> > @@ -27918,7 +27918,7 @@ _ACEOF

> >  if ac_fn_c_try_link "$LINENO"; then :

> >    chktls_save_LDFLAGS="$LDFLAGS"

> >                         case $host in

> > -         *-*-linux*)

> > +         *-*-linux* | -*-uclinux*)

> >             LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"

> >             ;;

> >         esac

> > @@ -53578,7 +53578,7 @@ _ACEOF

> >  if ac_fn_c_try_link "$LINENO"; then :

> >    chktls_save_LDFLAGS="$LDFLAGS"

> >                         case $host in

> > -         *-*-linux*)

> > +         *-*-linux* | -*-uclinux*)

> >             LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"

> >             ;;

> >         esac

> > @@ -59771,7 +59771,7 @@ _ACEOF

> >  if ac_fn_c_try_link "$LINENO"; then :

> >    chktls_save_LDFLAGS="$LDFLAGS"

> >                         case $host in

> > -         *-*-linux*)

> > +         *-*-linux* | -*-uclinux*)

> >             LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"

> >             ;;

> >         esac

> > @@ -78397,7 +78397,7 @@ fi

> >

> >

> >  case "$target" in

> > -  *-linux*)

> > +  *-linux* | *-uclinux*)

> >      case "$enable_linux_futex" in

> >        default)

> >       # If headers don't have gettid/futex syscalls definition, then

> > @@ -80033,7 +80033,7 @@ $as_echo_n "checking whether to build Filesystem

> TS support... " >&6; }

> >        freebsd*|netbsd*|openbsd*|dragonfly*|darwin*)

> >          enable_libstdcxx_filesystem_ts=yes

> >          ;;

> > -      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)

> > +      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

> >          enable_libstdcxx_filesystem_ts=yes

> >          ;;

> >        rtems*)

> > @@ -80457,7 +80457,7 @@ $as_echo_n "checking for sendfile that can copy

> files... " >&6; }

> >    $as_echo_n "(cached) " >&6

> >  else

> >          case "${target_os}" in

> > -        gnu* | linux* | solaris*)

> > +        gnu* | linux* | solaris* | uclinux*)

> >            if test x$gcc_no_link = xyes; then

> >    cat confdefs.h - <<_ACEOF >conftest.$ac_ext

> >  /* end confdefs.h.  */

> > diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host

> > index 155a3cd..1c298ab 100644

> > --- a/libstdc++-v3/configure.host

> > +++ b/libstdc++-v3/configure.host

> > @@ -264,7 +264,7 @@ case "${host_os}" in

> >    linux-musl*)

> >      os_include_dir="os/generic"

> >      ;;

> > -  gnu* | linux* | kfreebsd*-gnu)

> > +  gnu* | linux* | kfreebsd*-gnu | uclinux*)

> >      if [ "$uclibc" = "yes" ]; then

> >        os_include_dir="os/uclibc"

> >      elif [ "$bionic" = "yes" ]; then

> > @@ -327,7 +327,7 @@ esac

> >  # Set any OS-dependent and CPU-dependent bits.

> >  # THIS TABLE IS SORTED.  KEEP IT THAT WAY.

> >  case "${host}" in

> > -  *-*-linux*)

> > +  *-*-linux* | *-*-uclinux*)

> >      case "${host_cpu}" in

> >        i[567]86)

> >          abi_baseline_pair=i486-linux-gnu

> > @@ -358,7 +358,7 @@ case "${host}" in

> >          fi

> >      esac

> >      case "${host}" in

> > -      arm*-*-linux-*)

> > +      arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)

> >

>  port_specific_symbol_files="\$(srcdir)/../config/os/gnu-linux/arm-eabi-extra.ver"

> >       ;;

> >      esac

> > diff --git a/libtool.m4 b/libtool.m4

> > index 940faaa..49ab293 100644

> > --- a/libtool.m4

> > +++ b/libtool.m4

> > @@ -2449,7 +2449,7 @@ linux*oldld* | linux*aout* | linux*coff*)

> >    ;;

> >

> >  # This must be Linux ELF.

> > -linux* | k*bsd*-gnu | kopensolaris*-gnu)

> > +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

> >    version_type=linux

> >    need_lib_prefix=no

> >    need_version=no

> > @@ -3089,7 +3089,7 @@ irix5* | irix6* | nonstopux*)

> >    ;;

> >

> >  # This must be Linux ELF.

> > -linux* | k*bsd*-gnu | kopensolaris*-gnu)

> > +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

> >    lt_cv_deplibs_check_method=pass_all

> >    ;;

> >

> > @@ -3734,7 +3734,7 @@ m4_if([$1], [CXX], [

> >           ;;

> >       esac

> >       ;;

> > -      linux* | k*bsd*-gnu | kopensolaris*-gnu)

> > +      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)

> >       case $cc_basename in

> >         KCC*)

> >           # KAI C++ Compiler

> > @@ -4032,7 +4032,7 @@ m4_if([$1], [CXX], [

> >        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'

> >        ;;

> >

> > -    linux* | k*bsd*-gnu | kopensolaris*-gnu)

> > +    linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)

> >        case $cc_basename in

> >        # old Intel for x86_64 which still supported -KPIC.

> >        ecc*)

> > @@ -4449,7 +4449,7 @@ _LT_EOF

> >        _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols

> >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs

> $compiler_flags ${wl}-h,$soname

> ${wl}--retain-symbols-file,$output_objdir/$soname.expsym

> ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o

> $lib'

> >        ;;

> >

> > -    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)

> > +    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu |

> uclinuxfdpiceabi)

> >        tmp_diet=no

> >        if test "$host_os" = linux-dietlibc; then

> >       case $cc_basename in

> > @@ -5946,7 +5946,7 @@ if test "$_lt_caught_CXX_error" != yes; then

> >          _LT_TAGVAR(inherit_rpath, $1)=yes

> >          ;;

> >

> > -      linux* | k*bsd*-gnu | kopensolaris*-gnu)

> > +      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

> >          case $cc_basename in

> >            KCC*)

> >           # Kuck and Associates, Inc. (KAI) C++ Compiler

> > @@ -6598,7 +6598,7 @@ interix[[3-9]]*)

> >    _LT_TAGVAR(postdeps,$1)=

> >    ;;

> >

> > -linux*)

> > +linux* | uclinux*)

> >    case `$CC -V 2>&1 | sed 5q` in

> >    *Sun\ C*)

> >      # Sun C++ 5.9

> >

>

>
Christophe Lyon Nov. 9, 2018, 12:30 p.m. | #3
On Mon, 15 Oct 2018 at 10:12, Christophe Lyon
<christophe.lyon@linaro.org> wrote:
>

>

>

> On Fri, 12 Oct 2018 at 11:54, Richard Earnshaw (lists) <Richard.Earnshaw@arm.com> wrote:

>>

>> On 11/10/18 14:34, Christophe Lyon wrote:

>> > The new arm-uclinuxfdpiceabi target behaves pretty much like

>> > arm-linux-gnueabi. In order the enable the same set of features, we

>> > have to update several configure scripts that generally match targets

>> > like *-*-linux*: in most places, we add *-uclinux* where there is

>> > already *-linux*, or uclinux* when there is already linux*.

>> >

>> > In gcc/config.gcc and libgcc/config.host we use *-*-uclinuxfdpiceabi

>> > because there is already a different behaviour for *-*uclinux* target.

>> >

>> > In libtool.m4, we use uclinuxfdpiceabi in cases where ELF shared

>> > libraries support is required, as uclinux does not guarantee that.

>> >

>> > 2018-XX-XX  Christophe Lyon  <christophe.lyon@st.com>

>> >

>> >       config/

>> >       * futex.m4: Handle *-uclinux*.

>> >       * tls.m4 (GCC_CHECK_TLS): Likewise.

>> >

>> >       gcc/

>> >       * config.gcc: Handle *-*-uclinuxfdpiceabi.

>> >

>> >       libatomic/

>> >       * configure.tgt: Handle arm*-*-uclinux*.

>> >       * configure: Regenerate.

>> >

>> >       libgcc/

>> >       * config.host: Handle *-*-uclinuxfdpiceabi.

>> >

>> >       libitm/

>> >       * configure.tgt: Handle *-*-uclinux*.

>> >       * configure: Regenerate.

>> >

>> >       libstdc++-v3/

>> >       * acinclude.m4: Handle uclinux*.

>> >       * configure: Regenerate.

>> >       * configure.host: Handle uclinux*

>> >

>> >       * libtool.m4: Handle uclinux*.

>>

>> What testing have you done to ensure that these new uclinux* changes

>> have not affected existing uclinux configurations?

>>

>> Also, do you really need to use uclinuxfdpiceabi (which is quite

>> Arm-specific) everywhere, or would uclinuxfdpic* be better and ease work

>> for other fdpic targets?

>>


Thanks to the help I received in
https://gcc.gnu.org/ml/gcc/2018-10/msg00154.html
https://gcc.gnu.org/ml/gcc/2018-11/msg00012.html
I managed to build an xtensa-buildroot-uclinux-uclibc toolchain
(r265582), and run 'make check'.
Then I applied this patch, rebuilt the toolchain (from scratch) and
ran 'make check' again.
compare_test says:
Tests that now fail, but worked before (54 tests):
[...]
Tests that now work, but didn't before (2 tests):
23_containers/map/requirements/exception/propagation_consistent.cc
execution test
ext/mt_allocator/deallocate_global_thread-3.cc execution test

New tests that FAIL (4 tests):
27_io/filesystem/path/native/string.cc (test for excess errors)
30_threads/condition_variable_any/50862.cc execution test
30_threads/condition_variable_any/53830.cc execution test
experimental/filesystem/path/native/string.cc (test for excess errors)

New tests that PASS (301 tests):
[...]

(all the diffs are in libstdc++ obviously)
I've attached the details to this email.

>

> This patch became necessary when I was asked to change the target name from  arm-linux-uclibceabi to arm-uclinuxfdpiceabi.

> Changing it implied that many features were disabled and tests regressed because the new target name didn't match the regexps in configure scripts.

>

> I iterated over the regressions to see which features were now missing, and I updated the configure scripts accordingly.

>

> When the feature being tested was generic, I used the general *-*-uclinux* form, because it seemed reasonable that it was OK for other targets.

> When the test was arm-related, I used the stricter uclinuxfdpiceabi form, and specifically not uclinuxfdpic* to avoid breaking other fdpic targets. When in doubt, I preferred to stay on the safe side.

>

> To answer you first question, I do not have the setup to test other uclinux configs, I'm not even sure of the list.

> So I tested arm-uclinuxfdpiceabi, made sure I got the same results as with our previous target name, and that

> the whole series didn't regress on arm-linux-gnueabi*.

>

> I hope other uclinux/fdpic target maintainers comment on this patch if something looks wrong to them.

>

> Christophe

>

>> R.

>> >

>> > Change-Id: I6a1fdcd9847d8a82179a214612a3474c1f492916

>> >

>> > diff --git a/config/futex.m4 b/config/futex.m4

>> > index e95144d..4dffe15 100644

>> > --- a/config/futex.m4

>> > +++ b/config/futex.m4

>> > @@ -9,7 +9,7 @@ AC_DEFUN([GCC_LINUX_FUTEX],[dnl

>> >  GCC_ENABLE(linux-futex,default, ,[use the Linux futex system call],

>> >          permit yes|no|default)

>> >  case "$target" in

>> > -  *-linux*)

>> > +  *-linux* | *-uclinux*)

>> >      case "$enable_linux_futex" in

>> >        default)

>> >       # If headers don't have gettid/futex syscalls definition, then

>> > diff --git a/config/tls.m4 b/config/tls.m4

>> > index 4e170c8..5a8676e 100644

>> > --- a/config/tls.m4

>> > +++ b/config/tls.m4

>> > @@ -76,7 +76,7 @@ AC_DEFUN([GCC_CHECK_TLS], [

>> >         dnl Shared library options may depend on the host; this check

>> >         dnl is only known to be needed for GNU/Linux.

>> >         case $host in

>> > -         *-*-linux*)

>> > +         *-*-linux* | -*-uclinux*)

>> >             LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"

>> >             ;;

>> >         esac

>> > diff --git a/gcc/config.gcc b/gcc/config.gcc

>> > index 0c579d1..793fc69 100644

>> > --- a/gcc/config.gcc

>> > +++ b/gcc/config.gcc

>> > @@ -753,7 +753,7 @@ case ${target} in

>> >  *-*-fuchsia*)

>> >    native_system_header_dir=/include

>> >    ;;

>> > -*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)

>> > +*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)

>> >    extra_options="$extra_options gnu-user.opt"

>> >    gas=yes

>> >    gnu_ld=yes

>> > @@ -762,7 +762,7 @@ case ${target} in

>> >    esac

>> >    tmake_file="t-slibgcc"

>> >    case $target in

>> > -    *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)

>> > +    *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu  | *-*-uclinuxfdpiceabi)

>> >        :;;

>> >      *-*-gnu*)

>> >        native_system_header_dir=/include

>> > @@ -782,7 +782,7 @@ case ${target} in

>> >      *-*-*android*)

>> >        tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC"

>> >        ;;

>> > -    *-*-*uclibc*)

>> > +    *-*-*uclibc* | *-*-uclinuxfdpiceabi)

>> >        tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"

>> >        ;;

>> >      *-*-*musl*)

>> > @@ -1134,7 +1134,7 @@ arm*-*-netbsdelf*)

>> >       tmake_file="${tmake_file} arm/t-arm"

>> >       target_cpu_cname="arm6"

>> >       ;;

>> > -arm*-*-linux-*)                      # ARM GNU/Linux with ELF

>> > +arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)                    # ARM GNU/Linux with ELF

>> >       tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"

>> >       extra_options="${extra_options} linux-android.opt"

>> >       case $target in

>> > diff --git a/libatomic/configure b/libatomic/configure

>> > index b902e2c..5b3ef8e 100755

>> > --- a/libatomic/configure

>> > +++ b/libatomic/configure

>> > @@ -5819,7 +5819,7 @@ irix5* | irix6* | nonstopux*)

>> >    ;;

>> >

>> >  # This must be Linux ELF.

>> > -linux* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>> >    lt_cv_deplibs_check_method=pass_all

>> >    ;;

>> >

>> > @@ -8305,7 +8305,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }

>> >        lt_prog_compiler_static='-non_shared'

>> >        ;;

>> >

>> > -    linux* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +    linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)

>> >        case $cc_basename in

>> >        # old Intel for x86_64 which still supported -KPIC.

>> >        ecc*)

>> > @@ -8900,7 +8900,7 @@ _LT_EOF

>> >        archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'

>> >        ;;

>> >

>> > -    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>> >        tmp_diet=no

>> >        if test "$host_os" = linux-dietlibc; then

>> >       case $cc_basename in

>> > @@ -10431,7 +10431,7 @@ linux*oldld* | linux*aout* | linux*coff*)

>> >    ;;

>> >

>> >  # This must be Linux ELF.

>> > -linux* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>> >    version_type=linux

>> >    need_lib_prefix=no

>> >    need_version=no

>> > diff --git a/libatomic/configure.tgt b/libatomic/configure.tgt

>> > index ea8c34f..c1a608f 100644

>> > --- a/libatomic/configure.tgt

>> > +++ b/libatomic/configure.tgt

>> > @@ -124,7 +124,7 @@ case "${target}" in

>> >       config_path="${config_path} linux/aarch64 posix"

>> >       ;;

>> >

>> > -  arm*-*-linux*)

>> > +  arm*-*-linux* | arm*-*-uclinux*)

>> >       # OS support for atomic primitives.

>> >       config_path="${config_path} linux/arm posix"

>> >       ;;

>> > diff --git a/libgcc/config.host b/libgcc/config.host

>> > index 029f656..28f3c14 100644

>> > --- a/libgcc/config.host

>> > +++ b/libgcc/config.host

>> > @@ -238,7 +238,7 @@ case ${host} in

>> >    tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-fuchsia"

>> >    extra_parts="crtbegin.o crtend.o"

>> >    ;;

>> > -*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)

>> > +*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)

>> >    tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-linux"

>> >    extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"

>> >    if test x$enable_vtable_verify = xyes; then

>> > @@ -424,7 +424,7 @@ arm*-*-fuchsia*)

>> >  arm*-*-netbsdelf*)

>> >       tmake_file="$tmake_file arm/t-arm arm/t-netbsd t-slibgcc-gld-nover"

>> >       ;;

>> > -arm*-*-linux*)                       # ARM GNU/Linux with ELF

>> > +arm*-*-linux* | arm*-*-uclinuxfdpiceabi)                     # ARM GNU/Linux with ELF

>> >       tmake_file="${tmake_file} arm/t-arm t-fixedpoint-gnu-prefix t-crtfm"

>> >       tmake_file="${tmake_file} arm/t-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc"

>> >       tm_file="$tm_file arm/bpabi-lib.h"

>> > diff --git a/libitm/configure b/libitm/configure

>> > index dbf386d..fd82500 100644

>> > --- a/libitm/configure

>> > +++ b/libitm/configure

>> > @@ -6494,7 +6494,7 @@ irix5* | irix6* | nonstopux*)

>> >    ;;

>> >

>> >  # This must be Linux ELF.

>> > -linux* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>> >    lt_cv_deplibs_check_method=pass_all

>> >    ;;

>> >

>> > @@ -8981,7 +8981,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }

>> >        lt_prog_compiler_static='-non_shared'

>> >        ;;

>> >

>> > -    linux* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +    linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)

>> >        case $cc_basename in

>> >        # old Intel for x86_64 which still supported -KPIC.

>> >        ecc*)

>> > @@ -9576,7 +9576,7 @@ _LT_EOF

>> >        archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'

>> >        ;;

>> >

>> > -    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>> >        tmp_diet=no

>> >        if test "$host_os" = linux-dietlibc; then

>> >       case $cc_basename in

>> > @@ -11107,7 +11107,7 @@ linux*oldld* | linux*aout* | linux*coff*)

>> >    ;;

>> >

>> >  # This must be Linux ELF.

>> > -linux* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>> >    version_type=linux

>> >    need_lib_prefix=no

>> >    need_version=no

>> > @@ -13008,7 +13008,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi

>> >          inherit_rpath_CXX=yes

>> >          ;;

>> >

>> > -      linux* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>> >          case $cc_basename in

>> >            KCC*)

>> >           # Kuck and Associates, Inc. (KAI) C++ Compiler

>> > @@ -13595,7 +13595,7 @@ interix[3-9]*)

>> >    postdeps_CXX=

>> >    ;;

>> >

>> > -linux*)

>> > +linux* | uclinux*)

>> >    case `$CC -V 2>&1 | sed 5q` in

>> >    *Sun\ C*)

>> >      # Sun C++ 5.9

>> > @@ -13846,7 +13846,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }

>> >           ;;

>> >       esac

>> >       ;;

>> > -      linux* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)

>> >       case $cc_basename in

>> >         KCC*)

>> >           # KAI C++ Compiler

>> > @@ -14767,7 +14767,7 @@ linux*oldld* | linux*aout* | linux*coff*)

>> >    ;;

>> >

>> >  # This must be Linux ELF.

>> > -linux* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>> >    version_type=linux

>> >    need_lib_prefix=no

>> >    need_version=no

>> > @@ -16239,7 +16239,7 @@ fi

>> >

>> >

>> >  case "$target" in

>> > -  *-linux*)

>> > +  *-linux* | *-uclinux*)

>> >      case "$enable_linux_futex" in

>> >        default)

>> >       # If headers don't have gettid/futex syscalls definition, then

>> > @@ -16362,7 +16362,7 @@ _ACEOF

>> >  if ac_fn_c_try_link "$LINENO"; then :

>> >    chktls_save_LDFLAGS="$LDFLAGS"

>> >                         case $host in

>> > -         *-*-linux*)

>> > +         *-*-linux* | -*-uclinux*)

>> >             LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"

>> >             ;;

>> >         esac

>> > diff --git a/libitm/configure.tgt b/libitm/configure.tgt

>> > index 0cbb097..bc6c3ca 100644

>> > --- a/libitm/configure.tgt

>> > +++ b/libitm/configure.tgt

>> > @@ -127,7 +127,7 @@ config_path="$ARCH posix generic"

>> >

>> >  # Other system configury

>> >  case "${target}" in

>> > -  *-*-linux*)

>> > +  *-*-linux* | *-*-uclinux*)

>> >       if test "$enable_linux_futex" = yes; then

>> >         config_path="linux/$ARCH linux $config_path"

>> >       fi

>> > diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4

>> > index 6d68e90..2e18049 100644

>> > --- a/libstdc++-v3/acinclude.m4

>> > +++ b/libstdc++-v3/acinclude.m4

>> > @@ -1395,7 +1395,7 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [

>> >          ac_has_nanosleep=yes

>> >          ac_has_sched_yield=yes

>> >          ;;

>> > -      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)

>> > +      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

>> >          AC_MSG_CHECKING([for at least GNU libc 2.17])

>> >          AC_TRY_COMPILE(

>> >            [#include <features.h>],

>> > @@ -1517,7 +1517,7 @@ AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [

>> >

>> >    if test x"$ac_has_clock_monotonic" != x"yes"; then

>> >      case ${target_os} in

>> > -      linux*)

>> > +      linux* | uclinux*)

>> >       AC_MSG_CHECKING([for clock_gettime syscall])

>> >       AC_TRY_COMPILE(

>> >         [#include <unistd.h>

>> > @@ -2402,7 +2402,7 @@ AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [

>> >    # Default to "generic".

>> >    if test $enable_clocale_flag = auto; then

>> >      case ${target_os} in

>> > -      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)

>> > +      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

>> >       enable_clocale_flag=gnu

>> >       ;;

>> >        darwin*)

>> > @@ -2648,7 +2648,7 @@ AC_DEFUN([GLIBCXX_ENABLE_ALLOCATOR], [

>> >    # Default to "new".

>> >    if test $enable_libstdcxx_allocator_flag = auto; then

>> >      case ${target_os} in

>> > -      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)

>> > +      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

>> >       enable_libstdcxx_allocator_flag=new

>> >       ;;

>> >        *)

>> > @@ -4282,7 +4282,7 @@ AC_DEFUN([GLIBCXX_ENABLE_FILESYSTEM_TS], [

>> >        freebsd*|netbsd*|openbsd*|dragonfly*|darwin*)

>> >          enable_libstdcxx_filesystem_ts=yes

>> >          ;;

>> > -      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)

>> > +      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

>> >          enable_libstdcxx_filesystem_ts=yes

>> >          ;;

>> >        rtems*)

>> > @@ -4430,7 +4430,7 @@ dnl

>> >      AC_MSG_CHECKING([for sendfile that can copy files])

>> >      AC_CACHE_VAL(glibcxx_cv_sendfile, [dnl

>> >        case "${target_os}" in

>> > -        gnu* | linux* | solaris*)

>> > +        gnu* | linux* | solaris* | uclinux*)

>> >            GCC_TRY_COMPILE_OR_LINK(

>> >              [#include <sys/sendfile.h>],

>> >              [sendfile(1, 2, (off_t*)0, sizeof 1);],

>> > diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure

>> > index d33081d..7780679 100755

>> > --- a/libstdc++-v3/configure

>> > +++ b/libstdc++-v3/configure

>> > @@ -6413,7 +6413,7 @@ irix5* | irix6* | nonstopux*)

>> >    ;;

>> >

>> >  # This must be Linux ELF.

>> > -linux* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>> >    lt_cv_deplibs_check_method=pass_all

>> >    ;;

>> >

>> > @@ -8765,7 +8765,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }

>> >        lt_prog_compiler_static='-non_shared'

>> >        ;;

>> >

>> > -    linux* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +    linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)

>> >        case $cc_basename in

>> >        # old Intel for x86_64 which still supported -KPIC.

>> >        ecc*)

>> > @@ -9360,7 +9360,7 @@ _LT_EOF

>> >        archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'

>> >        ;;

>> >

>> > -    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>> >        tmp_diet=no

>> >        if test "$host_os" = linux-dietlibc; then

>> >       case $cc_basename in

>> > @@ -10900,7 +10900,7 @@ linux*oldld* | linux*aout* | linux*coff*)

>> >    ;;

>> >

>> >  # This must be Linux ELF.

>> > -linux* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>> >    version_type=linux

>> >    need_lib_prefix=no

>> >    need_version=no

>> > @@ -12825,7 +12825,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi

>> >          inherit_rpath_CXX=yes

>> >          ;;

>> >

>> > -      linux* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>> >          case $cc_basename in

>> >            KCC*)

>> >           # Kuck and Associates, Inc. (KAI) C++ Compiler

>> > @@ -13412,7 +13412,7 @@ interix[3-9]*)

>> >    postdeps_CXX=

>> >    ;;

>> >

>> > -linux*)

>> > +linux* | uclinux*)

>> >    case `$CC -V 2>&1 | sed 5q` in

>> >    *Sun\ C*)

>> >      # Sun C++ 5.9

>> > @@ -13663,7 +13663,7 @@ $as_echo_n "checking for $compiler option to produce PIC... " >&6; }

>> >           ;;

>> >       esac

>> >       ;;

>> > -      linux* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)

>> >       case $cc_basename in

>> >         KCC*)

>> >           # KAI C++ Compiler

>> > @@ -14584,7 +14584,7 @@ linux*oldld* | linux*aout* | linux*coff*)

>> >    ;;

>> >

>> >  # This must be Linux ELF.

>> > -linux* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>> >    version_type=linux

>> >    need_lib_prefix=no

>> >    need_version=no

>> > @@ -15833,7 +15833,7 @@ fi

>> >    # Default to "generic".

>> >    if test $enable_clocale_flag = auto; then

>> >      case ${target_os} in

>> > -      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)

>> > +      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

>> >       enable_clocale_flag=gnu

>> >       ;;

>> >        darwin*)

>> > @@ -16250,7 +16250,7 @@ fi

>> >    # Default to "new".

>> >    if test $enable_libstdcxx_allocator_flag = auto; then

>> >      case ${target_os} in

>> > -      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)

>> > +      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

>> >       enable_libstdcxx_allocator_flag=new

>> >       ;;

>> >        *)

>> > @@ -20526,7 +20526,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu

>> >          ac_has_nanosleep=yes

>> >          ac_has_sched_yield=yes

>> >          ;;

>> > -      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)

>> > +      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

>> >          { $as_echo "$as_me:${as_lineno-$LINENO}: checking for at least GNU libc 2.17" >&5

>> >  $as_echo_n "checking for at least GNU libc 2.17... " >&6; }

>> >          cat confdefs.h - <<_ACEOF >conftest.$ac_ext

>> > @@ -21026,7 +21026,7 @@ $as_echo "$ac_has_nanosleep" >&6; }

>> >

>> >    if test x"$ac_has_clock_monotonic" != x"yes"; then

>> >      case ${target_os} in

>> > -      linux*)

>> > +      linux* | uclinux*)

>> >       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime syscall" >&5

>> >  $as_echo_n "checking for clock_gettime syscall... " >&6; }

>> >       cat confdefs.h - <<_ACEOF >conftest.$ac_ext

>> > @@ -27918,7 +27918,7 @@ _ACEOF

>> >  if ac_fn_c_try_link "$LINENO"; then :

>> >    chktls_save_LDFLAGS="$LDFLAGS"

>> >                         case $host in

>> > -         *-*-linux*)

>> > +         *-*-linux* | -*-uclinux*)

>> >             LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"

>> >             ;;

>> >         esac

>> > @@ -53578,7 +53578,7 @@ _ACEOF

>> >  if ac_fn_c_try_link "$LINENO"; then :

>> >    chktls_save_LDFLAGS="$LDFLAGS"

>> >                         case $host in

>> > -         *-*-linux*)

>> > +         *-*-linux* | -*-uclinux*)

>> >             LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"

>> >             ;;

>> >         esac

>> > @@ -59771,7 +59771,7 @@ _ACEOF

>> >  if ac_fn_c_try_link "$LINENO"; then :

>> >    chktls_save_LDFLAGS="$LDFLAGS"

>> >                         case $host in

>> > -         *-*-linux*)

>> > +         *-*-linux* | -*-uclinux*)

>> >             LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"

>> >             ;;

>> >         esac

>> > @@ -78397,7 +78397,7 @@ fi

>> >

>> >

>> >  case "$target" in

>> > -  *-linux*)

>> > +  *-linux* | *-uclinux*)

>> >      case "$enable_linux_futex" in

>> >        default)

>> >       # If headers don't have gettid/futex syscalls definition, then

>> > @@ -80033,7 +80033,7 @@ $as_echo_n "checking whether to build Filesystem TS support... " >&6; }

>> >        freebsd*|netbsd*|openbsd*|dragonfly*|darwin*)

>> >          enable_libstdcxx_filesystem_ts=yes

>> >          ;;

>> > -      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)

>> > +      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)

>> >          enable_libstdcxx_filesystem_ts=yes

>> >          ;;

>> >        rtems*)

>> > @@ -80457,7 +80457,7 @@ $as_echo_n "checking for sendfile that can copy files... " >&6; }

>> >    $as_echo_n "(cached) " >&6

>> >  else

>> >          case "${target_os}" in

>> > -        gnu* | linux* | solaris*)

>> > +        gnu* | linux* | solaris* | uclinux*)

>> >            if test x$gcc_no_link = xyes; then

>> >    cat confdefs.h - <<_ACEOF >conftest.$ac_ext

>> >  /* end confdefs.h.  */

>> > diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host

>> > index 155a3cd..1c298ab 100644

>> > --- a/libstdc++-v3/configure.host

>> > +++ b/libstdc++-v3/configure.host

>> > @@ -264,7 +264,7 @@ case "${host_os}" in

>> >    linux-musl*)

>> >      os_include_dir="os/generic"

>> >      ;;

>> > -  gnu* | linux* | kfreebsd*-gnu)

>> > +  gnu* | linux* | kfreebsd*-gnu | uclinux*)

>> >      if [ "$uclibc" = "yes" ]; then

>> >        os_include_dir="os/uclibc"

>> >      elif [ "$bionic" = "yes" ]; then

>> > @@ -327,7 +327,7 @@ esac

>> >  # Set any OS-dependent and CPU-dependent bits.

>> >  # THIS TABLE IS SORTED.  KEEP IT THAT WAY.

>> >  case "${host}" in

>> > -  *-*-linux*)

>> > +  *-*-linux* | *-*-uclinux*)

>> >      case "${host_cpu}" in

>> >        i[567]86)

>> >          abi_baseline_pair=i486-linux-gnu

>> > @@ -358,7 +358,7 @@ case "${host}" in

>> >          fi

>> >      esac

>> >      case "${host}" in

>> > -      arm*-*-linux-*)

>> > +      arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)

>> >       port_specific_symbol_files="\$(srcdir)/../config/os/gnu-linux/arm-eabi-extra.ver"

>> >       ;;

>> >      esac

>> > diff --git a/libtool.m4 b/libtool.m4

>> > index 940faaa..49ab293 100644

>> > --- a/libtool.m4

>> > +++ b/libtool.m4

>> > @@ -2449,7 +2449,7 @@ linux*oldld* | linux*aout* | linux*coff*)

>> >    ;;

>> >

>> >  # This must be Linux ELF.

>> > -linux* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>> >    version_type=linux

>> >    need_lib_prefix=no

>> >    need_version=no

>> > @@ -3089,7 +3089,7 @@ irix5* | irix6* | nonstopux*)

>> >    ;;

>> >

>> >  # This must be Linux ELF.

>> > -linux* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>> >    lt_cv_deplibs_check_method=pass_all

>> >    ;;

>> >

>> > @@ -3734,7 +3734,7 @@ m4_if([$1], [CXX], [

>> >           ;;

>> >       esac

>> >       ;;

>> > -      linux* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)

>> >       case $cc_basename in

>> >         KCC*)

>> >           # KAI C++ Compiler

>> > @@ -4032,7 +4032,7 @@ m4_if([$1], [CXX], [

>> >        _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'

>> >        ;;

>> >

>> > -    linux* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +    linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)

>> >        case $cc_basename in

>> >        # old Intel for x86_64 which still supported -KPIC.

>> >        ecc*)

>> > @@ -4449,7 +4449,7 @@ _LT_EOF

>> >        _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'

>> >        ;;

>> >

>> > -    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>> >        tmp_diet=no

>> >        if test "$host_os" = linux-dietlibc; then

>> >       case $cc_basename in

>> > @@ -5946,7 +5946,7 @@ if test "$_lt_caught_CXX_error" != yes; then

>> >          _LT_TAGVAR(inherit_rpath, $1)=yes

>> >          ;;

>> >

>> > -      linux* | k*bsd*-gnu | kopensolaris*-gnu)

>> > +      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)

>> >          case $cc_basename in

>> >            KCC*)

>> >           # Kuck and Associates, Inc. (KAI) C++ Compiler

>> > @@ -6598,7 +6598,7 @@ interix[[3-9]]*)

>> >    _LT_TAGVAR(postdeps,$1)=

>> >    ;;

>> >

>> > -linux*)

>> > +linux* | uclinux*)

>> >    case `$CC -V 2>&1 | sed 5q` in

>> >    *Sun\ C*)

>> >      # Sun C++ 5.9

>> >

>>
# Comparing directories
## Dir1=mygcc.ref/: 3 sum files
## Dir2=mygcc: 3 sum files

# Comparing 3 common sum files
## /bin/sh ../GCC/sources/gcc-fsf/trunk/contrib/compare_tests  /tmp/gxx-sum1.24781 /tmp/gxx-sum2.24781
Tests that now fail, but worked before (54 tests):

20_util/hash/chi2_q_bit_flip_set.cc execution test
20_util/hash/quality.cc execution test
26_numerics/random/discrete_distribution/operators/values.cc execution test
30_threads/async/42819.cc execution test
30_threads/async/any.cc execution test
30_threads/async/sync.cc execution test
30_threads/call_once/49668.cc execution test
30_threads/call_once/call_once1.cc execution test
30_threads/call_once/dr2442.cc execution test
30_threads/condition_variable/cons/1.cc execution test
30_threads/condition_variable/members/1.cc execution test
30_threads/condition_variable/members/2.cc execution test
30_threads/condition_variable/members/68519.cc execution test
30_threads/condition_variable_any/cond.cc execution test
30_threads/condition_variable_any/cons/1.cc execution test
30_threads/condition_variable_any/members/1.cc execution test
30_threads/condition_variable_any/members/2.cc execution test
30_threads/future/members/45133.cc execution test
30_threads/future/members/get.cc execution test
30_threads/future/members/get2.cc execution test
30_threads/future/members/share.cc execution test
30_threads/future/members/valid.cc execution test
30_threads/future/members/wait_for.cc execution test
30_threads/future/members/wait_until.cc execution test
30_threads/lock/4.cc execution test
30_threads/packaged_task/49668.cc execution test
30_threads/packaged_task/cons/alloc.cc execution test
30_threads/packaged_task/members/get_future.cc execution test
30_threads/packaged_task/members/invoke.cc execution test
30_threads/packaged_task/members/invoke2.cc execution test
30_threads/packaged_task/members/invoke3.cc execution test
30_threads/packaged_task/members/invoke4.cc execution test
30_threads/packaged_task/members/reset2.cc execution test
30_threads/promise/cons/alloc.cc execution test
30_threads/promise/cons/move.cc execution test
30_threads/promise/cons/move_assign.cc execution test
30_threads/promise/members/at_thread_exit2.cc execution test
30_threads/promise/members/get_future.cc execution test
30_threads/promise/members/set_exception.cc execution test
30_threads/promise/members/set_exception2.cc execution test
30_threads/promise/members/set_value.cc execution test
30_threads/promise/members/set_value2.cc execution test
30_threads/promise/members/set_value3.cc execution test
30_threads/promise/members/swap.cc execution test
30_threads/shared_future/members/get.cc execution test
30_threads/shared_future/members/get2.cc execution test
30_threads/shared_future/members/valid.cc execution test
30_threads/shared_future/members/wait_for.cc execution test
30_threads/shared_future/members/wait_until.cc execution test
30_threads/timed_mutex/try_lock/2.cc execution test
30_threads/timed_mutex/try_lock_until/2.cc execution test
30_threads/try_lock/2.cc execution test
30_threads/try_lock/4.cc execution test
abi/demangle/regression/cw-07.cc execution test

Tests that now work, but didn't before (2 tests):

23_containers/map/requirements/exception/propagation_consistent.cc execution test
ext/mt_allocator/deallocate_global_thread-3.cc execution test

New tests that FAIL (4 tests):

27_io/filesystem/path/native/string.cc (test for excess errors)
30_threads/condition_variable_any/50862.cc execution test
30_threads/condition_variable_any/53830.cc execution test
experimental/filesystem/path/native/string.cc (test for excess errors)

New tests that PASS (301 tests):

27_io/basic_filebuf/open/char/path.cc (test for excess errors)
27_io/basic_filebuf/open/char/path.cc execution test
27_io/basic_fstream/cons/char/path.cc (test for excess errors)
27_io/basic_fstream/cons/char/path.cc execution test
27_io/basic_fstream/open/char/path.cc (test for excess errors)
27_io/basic_fstream/open/char/path.cc execution test
27_io/basic_ifstream/cons/char/path.cc (test for excess errors)
27_io/basic_ifstream/cons/char/path.cc execution test
27_io/basic_ifstream/open/char/path.cc (test for excess errors)
27_io/basic_ifstream/open/char/path.cc execution test
27_io/basic_ofstream/cons/char/path.cc (test for excess errors)
27_io/basic_ofstream/cons/char/path.cc execution test
27_io/basic_ofstream/open/char/path.cc (test for excess errors)
27_io/basic_ofstream/open/char/path.cc execution test
27_io/filesystem/directory_entry/86597.cc (test for excess errors)
27_io/filesystem/directory_entry/86597.cc execution test
27_io/filesystem/file_status/1.cc (test for excess errors)
27_io/filesystem/file_status/1.cc execution test
27_io/filesystem/iterators/directory_iterator.cc (test for excess errors)
27_io/filesystem/iterators/directory_iterator.cc execution test
27_io/filesystem/iterators/pop.cc (test for excess errors)
27_io/filesystem/iterators/pop.cc execution test
27_io/filesystem/iterators/recursive_directory_iterator.cc (test for excess errors)
27_io/filesystem/iterators/recursive_directory_iterator.cc execution test
27_io/filesystem/operations/absolute.cc (test for excess errors)
27_io/filesystem/operations/absolute.cc execution test
27_io/filesystem/operations/canonical.cc (test for excess errors)
27_io/filesystem/operations/canonical.cc execution test
27_io/filesystem/operations/copy.cc (test for excess errors)
27_io/filesystem/operations/copy.cc execution test
27_io/filesystem/operations/copy_file.cc (test for excess errors)
27_io/filesystem/operations/copy_file.cc execution test
27_io/filesystem/operations/create_directories.cc (test for excess errors)
27_io/filesystem/operations/create_directories.cc execution test
27_io/filesystem/operations/create_directory.cc (test for excess errors)
27_io/filesystem/operations/create_directory.cc execution test
27_io/filesystem/operations/create_symlink.cc (test for excess errors)
27_io/filesystem/operations/create_symlink.cc execution test
27_io/filesystem/operations/current_path.cc (test for excess errors)
27_io/filesystem/operations/current_path.cc execution test
27_io/filesystem/operations/equivalent.cc (test for excess errors)
27_io/filesystem/operations/equivalent.cc execution test
27_io/filesystem/operations/exists.cc (test for excess errors)
27_io/filesystem/operations/exists.cc execution test
27_io/filesystem/operations/file_size.cc (test for excess errors)
27_io/filesystem/operations/file_size.cc execution test
27_io/filesystem/operations/is_empty.cc (test for excess errors)
27_io/filesystem/operations/is_empty.cc execution test
27_io/filesystem/operations/last_write_time.cc (test for excess errors)
27_io/filesystem/operations/last_write_time.cc execution test
27_io/filesystem/operations/permissions.cc (test for excess errors)
27_io/filesystem/operations/permissions.cc execution test
27_io/filesystem/operations/proximate.cc (test for excess errors)
27_io/filesystem/operations/proximate.cc execution test
27_io/filesystem/operations/read_symlink.cc (test for excess errors)
27_io/filesystem/operations/read_symlink.cc execution test
27_io/filesystem/operations/relative.cc (test for excess errors)
27_io/filesystem/operations/relative.cc execution test
27_io/filesystem/operations/remove.cc (test for excess errors)
27_io/filesystem/operations/remove.cc execution test
27_io/filesystem/operations/remove_all.cc (test for excess errors)
27_io/filesystem/operations/remove_all.cc execution test
27_io/filesystem/operations/space.cc (test for excess errors)
27_io/filesystem/operations/space.cc execution test
27_io/filesystem/operations/status.cc (test for excess errors)
27_io/filesystem/operations/status.cc execution test
27_io/filesystem/operations/symlink_status.cc (test for excess errors)
27_io/filesystem/operations/symlink_status.cc execution test
27_io/filesystem/operations/temp_directory_path.cc (test for excess errors)
27_io/filesystem/operations/temp_directory_path.cc execution test
27_io/filesystem/operations/weakly_canonical.cc (test for excess errors)
27_io/filesystem/operations/weakly_canonical.cc execution test
27_io/filesystem/path/append/path.cc (test for excess errors)
27_io/filesystem/path/append/path.cc execution test
27_io/filesystem/path/append/source.cc (test for excess errors)
27_io/filesystem/path/append/source.cc execution test
27_io/filesystem/path/assign/assign.cc (test for excess errors)
27_io/filesystem/path/assign/assign.cc execution test
27_io/filesystem/path/assign/copy.cc (test for excess errors)
27_io/filesystem/path/assign/copy.cc execution test
27_io/filesystem/path/compare/compare.cc (test for excess errors)
27_io/filesystem/path/compare/compare.cc execution test
27_io/filesystem/path/compare/path.cc (test for excess errors)
27_io/filesystem/path/compare/path.cc execution test
27_io/filesystem/path/compare/strings.cc (test for excess errors)
27_io/filesystem/path/compare/strings.cc execution test
27_io/filesystem/path/concat/path.cc (test for excess errors)
27_io/filesystem/path/concat/path.cc execution test
27_io/filesystem/path/concat/strings.cc (test for excess errors)
27_io/filesystem/path/concat/strings.cc execution test
27_io/filesystem/path/construct/copy.cc (test for excess errors)
27_io/filesystem/path/construct/copy.cc execution test
27_io/filesystem/path/construct/default.cc (test for excess errors)
27_io/filesystem/path/construct/default.cc execution test
27_io/filesystem/path/construct/format.cc (test for excess errors)
27_io/filesystem/path/construct/format.cc execution test
27_io/filesystem/path/construct/locale.cc (test for excess errors)
27_io/filesystem/path/construct/locale.cc execution test
27_io/filesystem/path/construct/range.cc (test for excess errors)
27_io/filesystem/path/construct/range.cc execution test
27_io/filesystem/path/construct/string_view.cc (test for excess errors)
27_io/filesystem/path/construct/string_view.cc execution test
27_io/filesystem/path/decompose/extension.cc (test for excess errors)
27_io/filesystem/path/decompose/extension.cc execution test
27_io/filesystem/path/decompose/filename.cc (test for excess errors)
27_io/filesystem/path/decompose/filename.cc execution test
27_io/filesystem/path/decompose/parent_path.cc (test for excess errors)
27_io/filesystem/path/decompose/parent_path.cc execution test
27_io/filesystem/path/decompose/relative_path.cc (test for excess errors)
27_io/filesystem/path/decompose/relative_path.cc execution test
27_io/filesystem/path/decompose/root_directory.cc (test for excess errors)
27_io/filesystem/path/decompose/root_directory.cc execution test
27_io/filesystem/path/decompose/root_name.cc (test for excess errors)
27_io/filesystem/path/decompose/root_name.cc execution test
27_io/filesystem/path/decompose/root_path.cc (test for excess errors)
27_io/filesystem/path/decompose/root_path.cc execution test
27_io/filesystem/path/decompose/stem.cc (test for excess errors)
27_io/filesystem/path/decompose/stem.cc execution test
27_io/filesystem/path/generation/normal.cc (test for excess errors)
27_io/filesystem/path/generation/normal.cc execution test
27_io/filesystem/path/generation/proximate.cc (test for excess errors)
27_io/filesystem/path/generation/proximate.cc execution test
27_io/filesystem/path/generation/relative.cc (test for excess errors)
27_io/filesystem/path/generation/relative.cc execution test
27_io/filesystem/path/generic/generic_string.cc (test for excess errors)
27_io/filesystem/path/generic/generic_string.cc execution test
27_io/filesystem/path/itr/components.cc (test for excess errors)
27_io/filesystem/path/itr/components.cc execution test
27_io/filesystem/path/itr/traversal.cc (test for excess errors)
27_io/filesystem/path/itr/traversal.cc execution test
27_io/filesystem/path/modifiers/clear.cc (test for excess errors)
27_io/filesystem/path/modifiers/clear.cc execution test
27_io/filesystem/path/modifiers/make_preferred.cc (test for excess errors)
27_io/filesystem/path/modifiers/make_preferred.cc execution test
27_io/filesystem/path/modifiers/remove_filename.cc (test for excess errors)
27_io/filesystem/path/modifiers/remove_filename.cc execution test
27_io/filesystem/path/modifiers/replace_extension.cc (test for excess errors)
27_io/filesystem/path/modifiers/replace_extension.cc execution test
27_io/filesystem/path/modifiers/replace_filename.cc (test for excess errors)
27_io/filesystem/path/modifiers/replace_filename.cc execution test
27_io/filesystem/path/modifiers/swap.cc (test for excess errors)
27_io/filesystem/path/modifiers/swap.cc execution test
27_io/filesystem/path/nonmember/append.cc (test for excess errors)
27_io/filesystem/path/nonmember/append.cc execution test
27_io/filesystem/path/nonmember/hash_value.cc (test for excess errors)
27_io/filesystem/path/nonmember/hash_value.cc execution test
27_io/filesystem/path/query/empty.cc (test for excess errors)
27_io/filesystem/path/query/empty.cc execution test
27_io/filesystem/path/query/has_extension.cc (test for excess errors)
27_io/filesystem/path/query/has_extension.cc execution test
27_io/filesystem/path/query/has_filename.cc (test for excess errors)
27_io/filesystem/path/query/has_filename.cc execution test
27_io/filesystem/path/query/has_parent_path.cc (test for excess errors)
27_io/filesystem/path/query/has_parent_path.cc execution test
27_io/filesystem/path/query/has_relative_path.cc (test for excess errors)
27_io/filesystem/path/query/has_relative_path.cc execution test
27_io/filesystem/path/query/has_root_directory.cc (test for excess errors)
27_io/filesystem/path/query/has_root_directory.cc execution test
27_io/filesystem/path/query/has_root_name.cc (test for excess errors)
27_io/filesystem/path/query/has_root_name.cc execution test
27_io/filesystem/path/query/has_root_path.cc (test for excess errors)
27_io/filesystem/path/query/has_root_path.cc execution test
27_io/filesystem/path/query/has_stem.cc (test for excess errors)
27_io/filesystem/path/query/has_stem.cc execution test
27_io/filesystem/path/query/is_absolute.cc (test for excess errors)
27_io/filesystem/path/query/is_absolute.cc execution test
27_io/filesystem/path/query/is_relative.cc (test for excess errors)
27_io/filesystem/path/query/is_relative.cc execution test
30_threads/condition_variable_any/50862.cc (test for excess errors)
30_threads/condition_variable_any/53830.cc (test for excess errors)
experimental/filesystem/file_status/1.cc (test for excess errors)
experimental/filesystem/file_status/1.cc execution test
experimental/filesystem/iterators/directory_iterator.cc (test for excess errors)
experimental/filesystem/iterators/directory_iterator.cc execution test
experimental/filesystem/iterators/pop.cc (test for excess errors)
experimental/filesystem/iterators/pop.cc execution test
experimental/filesystem/iterators/recursive_directory_iterator.cc (test for excess errors)
experimental/filesystem/iterators/recursive_directory_iterator.cc execution test
experimental/filesystem/operations/absolute.cc (test for excess errors)
experimental/filesystem/operations/absolute.cc execution test
experimental/filesystem/operations/canonical.cc (test for excess errors)
experimental/filesystem/operations/canonical.cc execution test
experimental/filesystem/operations/copy.cc (test for excess errors)
experimental/filesystem/operations/copy.cc execution test
experimental/filesystem/operations/copy_file.cc (test for excess errors)
experimental/filesystem/operations/copy_file.cc execution test
experimental/filesystem/operations/create_directories.cc (test for excess errors)
experimental/filesystem/operations/create_directories.cc execution test
experimental/filesystem/operations/create_directory.cc (test for excess errors)
experimental/filesystem/operations/create_directory.cc execution test
experimental/filesystem/operations/create_symlink.cc (test for excess errors)
experimental/filesystem/operations/create_symlink.cc execution test
experimental/filesystem/operations/current_path.cc (test for excess errors)
experimental/filesystem/operations/current_path.cc execution test
experimental/filesystem/operations/equivalent.cc (test for excess errors)
experimental/filesystem/operations/equivalent.cc execution test
experimental/filesystem/operations/exists.cc (test for excess errors)
experimental/filesystem/operations/exists.cc execution test
experimental/filesystem/operations/file_size.cc (test for excess errors)
experimental/filesystem/operations/file_size.cc execution test
experimental/filesystem/operations/is_empty.cc (test for excess errors)
experimental/filesystem/operations/is_empty.cc execution test
experimental/filesystem/operations/last_write_time.cc (test for excess errors)
experimental/filesystem/operations/last_write_time.cc execution test
experimental/filesystem/operations/permissions.cc (test for excess errors)
experimental/filesystem/operations/permissions.cc execution test
experimental/filesystem/operations/read_symlink.cc (test for excess errors)
experimental/filesystem/operations/read_symlink.cc execution test
experimental/filesystem/operations/remove.cc (test for excess errors)
experimental/filesystem/operations/remove.cc execution test
experimental/filesystem/operations/remove_all.cc (test for excess errors)
experimental/filesystem/operations/remove_all.cc execution test
experimental/filesystem/operations/space.cc (test for excess errors)
experimental/filesystem/operations/space.cc execution test
experimental/filesystem/operations/status.cc (test for excess errors)
experimental/filesystem/operations/status.cc execution test
experimental/filesystem/operations/temp_directory_path.cc (test for excess errors)
experimental/filesystem/operations/temp_directory_path.cc execution test
experimental/filesystem/path/append/path.cc (test for excess errors)
experimental/filesystem/path/append/path.cc execution test
experimental/filesystem/path/assign/assign.cc (test for excess errors)
experimental/filesystem/path/assign/assign.cc execution test
experimental/filesystem/path/assign/copy.cc (test for excess errors)
experimental/filesystem/path/assign/copy.cc execution test
experimental/filesystem/path/compare/compare.cc (test for excess errors)
experimental/filesystem/path/compare/compare.cc execution test
experimental/filesystem/path/compare/path.cc (test for excess errors)
experimental/filesystem/path/compare/path.cc execution test
experimental/filesystem/path/compare/strings.cc (test for excess errors)
experimental/filesystem/path/compare/strings.cc execution test
experimental/filesystem/path/concat/path.cc (test for excess errors)
experimental/filesystem/path/concat/path.cc execution test
experimental/filesystem/path/concat/strings.cc (test for excess errors)
experimental/filesystem/path/concat/strings.cc execution test
experimental/filesystem/path/construct/copy.cc (test for excess errors)
experimental/filesystem/path/construct/copy.cc execution test
experimental/filesystem/path/construct/default.cc (test for excess errors)
experimental/filesystem/path/construct/default.cc execution test
experimental/filesystem/path/construct/locale.cc (test for excess errors)
experimental/filesystem/path/construct/locale.cc execution test
experimental/filesystem/path/construct/range.cc (test for excess errors)
experimental/filesystem/path/construct/range.cc execution test
experimental/filesystem/path/construct/string_view.cc (test for excess errors)
experimental/filesystem/path/construct/string_view.cc execution test
experimental/filesystem/path/decompose/extension.cc (test for excess errors)
experimental/filesystem/path/decompose/extension.cc execution test
experimental/filesystem/path/decompose/filename.cc (test for excess errors)
experimental/filesystem/path/decompose/filename.cc execution test
experimental/filesystem/path/decompose/parent_path.cc (test for excess errors)
experimental/filesystem/path/decompose/parent_path.cc execution test
experimental/filesystem/path/decompose/relative_path.cc (test for excess errors)
experimental/filesystem/path/decompose/relative_path.cc execution test
experimental/filesystem/path/decompose/root_directory.cc (test for excess errors)
experimental/filesystem/path/decompose/root_directory.cc execution test
experimental/filesystem/path/decompose/root_name.cc (test for excess errors)
experimental/filesystem/path/decompose/root_name.cc execution test
experimental/filesystem/path/decompose/root_path.cc (test for excess errors)
experimental/filesystem/path/decompose/root_path.cc execution test
experimental/filesystem/path/decompose/stem.cc (test for excess errors)
experimental/filesystem/path/decompose/stem.cc execution test
experimental/filesystem/path/generic/generic_string.cc (test for excess errors)
experimental/filesystem/path/generic/generic_string.cc execution test
experimental/filesystem/path/itr/traversal.cc (test for excess errors)
experimental/filesystem/path/itr/traversal.cc execution test
experimental/filesystem/path/modifiers/clear.cc (test for excess errors)
experimental/filesystem/path/modifiers/clear.cc execution test
experimental/filesystem/path/modifiers/make_preferred.cc (test for excess errors)
experimental/filesystem/path/modifiers/make_preferred.cc execution test
experimental/filesystem/path/modifiers/remove_filename.cc (test for excess errors)
experimental/filesystem/path/modifiers/remove_filename.cc execution test
experimental/filesystem/path/modifiers/replace_extension.cc (test for excess errors)
experimental/filesystem/path/modifiers/replace_extension.cc execution test
experimental/filesystem/path/modifiers/replace_filename.cc (test for excess errors)
experimental/filesystem/path/modifiers/replace_filename.cc execution test
experimental/filesystem/path/modifiers/swap.cc (test for excess errors)
experimental/filesystem/path/modifiers/swap.cc execution test
experimental/filesystem/path/nonmember/hash_value.cc (test for excess errors)
experimental/filesystem/path/nonmember/hash_value.cc execution test
experimental/filesystem/path/preferred_separator.cc (test for excess errors)
experimental/filesystem/path/query/empty.cc (test for excess errors)
experimental/filesystem/path/query/empty.cc execution test
experimental/filesystem/path/query/has_extension.cc (test for excess errors)
experimental/filesystem/path/query/has_extension.cc execution test
experimental/filesystem/path/query/has_filename.cc (test for excess errors)
experimental/filesystem/path/query/has_filename.cc execution test
experimental/filesystem/path/query/has_parent_path.cc (test for excess errors)
experimental/filesystem/path/query/has_parent_path.cc execution test
experimental/filesystem/path/query/has_relative_path.cc (test for excess errors)
experimental/filesystem/path/query/has_relative_path.cc execution test
experimental/filesystem/path/query/has_root_directory.cc (test for excess errors)
experimental/filesystem/path/query/has_root_directory.cc execution test
experimental/filesystem/path/query/has_root_name.cc (test for excess errors)
experimental/filesystem/path/query/has_root_name.cc execution test
experimental/filesystem/path/query/has_root_path.cc (test for excess errors)
experimental/filesystem/path/query/has_root_path.cc execution test
experimental/filesystem/path/query/has_stem.cc (test for excess errors)
experimental/filesystem/path/query/has_stem.cc execution test
experimental/filesystem/path/query/is_absolute.cc (test for excess errors)
experimental/filesystem/path/query/is_absolute.cc execution test
experimental/filesystem/path/query/is_relative.cc (test for excess errors)
experimental/filesystem/path/query/is_relative.cc execution test

## Differences found: 
# 1 differences in 3 common sum files found

Patch

diff --git a/config/futex.m4 b/config/futex.m4
index e95144d..4dffe15 100644
--- a/config/futex.m4
+++ b/config/futex.m4
@@ -9,7 +9,7 @@  AC_DEFUN([GCC_LINUX_FUTEX],[dnl
 GCC_ENABLE(linux-futex,default, ,[use the Linux futex system call],
 	   permit yes|no|default)
 case "$target" in
-  *-linux*)
+  *-linux* | *-uclinux*)
     case "$enable_linux_futex" in
       default)
 	# If headers don't have gettid/futex syscalls definition, then
diff --git a/config/tls.m4 b/config/tls.m4
index 4e170c8..5a8676e 100644
--- a/config/tls.m4
+++ b/config/tls.m4
@@ -76,7 +76,7 @@  AC_DEFUN([GCC_CHECK_TLS], [
 	  dnl Shared library options may depend on the host; this check
 	  dnl is only known to be needed for GNU/Linux.
 	  case $host in
-	    *-*-linux*)
+	    *-*-linux* | -*-uclinux*)
 	      LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"
 	      ;;
 	  esac
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 0c579d1..793fc69 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -753,7 +753,7 @@  case ${target} in
 *-*-fuchsia*)
   native_system_header_dir=/include
   ;;
-*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)
+*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)
   extra_options="$extra_options gnu-user.opt"
   gas=yes
   gnu_ld=yes
@@ -762,7 +762,7 @@  case ${target} in
   esac
   tmake_file="t-slibgcc"
   case $target in
-    *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu)
+    *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-kopensolaris*-gnu  | *-*-uclinuxfdpiceabi)
       :;;
     *-*-gnu*)
       native_system_header_dir=/include
@@ -782,7 +782,7 @@  case ${target} in
     *-*-*android*)
       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_BIONIC"
       ;;
-    *-*-*uclibc*)
+    *-*-*uclibc* | *-*-uclinuxfdpiceabi)
       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
       ;;
     *-*-*musl*)
@@ -1134,7 +1134,7 @@  arm*-*-netbsdelf*)
 	tmake_file="${tmake_file} arm/t-arm"
 	target_cpu_cname="arm6"
 	;;
-arm*-*-linux-*)			# ARM GNU/Linux with ELF
+arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)			# ARM GNU/Linux with ELF
 	tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
 	extra_options="${extra_options} linux-android.opt"
 	case $target in
diff --git a/libatomic/configure b/libatomic/configure
index b902e2c..5b3ef8e 100755
--- a/libatomic/configure
+++ b/libatomic/configure
@@ -5819,7 +5819,7 @@  irix5* | irix6* | nonstopux*)
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
@@ -8305,7 +8305,7 @@  $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
       lt_prog_compiler_static='-non_shared'
       ;;
 
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)
       case $cc_basename in
       # old Intel for x86_64 which still supported -KPIC.
       ecc*)
@@ -8900,7 +8900,7 @@  _LT_EOF
       archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
       tmp_diet=no
       if test "$host_os" = linux-dietlibc; then
 	case $cc_basename in
@@ -10431,7 +10431,7 @@  linux*oldld* | linux*aout* | linux*coff*)
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
   version_type=linux
   need_lib_prefix=no
   need_version=no
diff --git a/libatomic/configure.tgt b/libatomic/configure.tgt
index ea8c34f..c1a608f 100644
--- a/libatomic/configure.tgt
+++ b/libatomic/configure.tgt
@@ -124,7 +124,7 @@  case "${target}" in
 	config_path="${config_path} linux/aarch64 posix"
 	;;
 
-  arm*-*-linux*)
+  arm*-*-linux* | arm*-*-uclinux*)
 	# OS support for atomic primitives.
 	config_path="${config_path} linux/arm posix"
 	;;
diff --git a/libgcc/config.host b/libgcc/config.host
index 029f656..28f3c14 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -238,7 +238,7 @@  case ${host} in
   tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-fuchsia"
   extra_parts="crtbegin.o crtend.o"
   ;;
-*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu)
+*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi)
   tmake_file="$tmake_file t-crtstuff-pic t-libgcc-pic t-eh-dw2-dip t-slibgcc t-slibgcc-gld t-slibgcc-elf-ver t-linux"
   extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
   if test x$enable_vtable_verify = xyes; then
@@ -424,7 +424,7 @@  arm*-*-fuchsia*)
 arm*-*-netbsdelf*)
 	tmake_file="$tmake_file arm/t-arm arm/t-netbsd t-slibgcc-gld-nover"
 	;;
-arm*-*-linux*)			# ARM GNU/Linux with ELF
+arm*-*-linux* | arm*-*-uclinuxfdpiceabi)			# ARM GNU/Linux with ELF
 	tmake_file="${tmake_file} arm/t-arm t-fixedpoint-gnu-prefix t-crtfm"
 	tmake_file="${tmake_file} arm/t-elf arm/t-bpabi arm/t-linux-eabi t-slibgcc-libgcc"
 	tm_file="$tm_file arm/bpabi-lib.h"
diff --git a/libitm/configure b/libitm/configure
index dbf386d..fd82500 100644
--- a/libitm/configure
+++ b/libitm/configure
@@ -6494,7 +6494,7 @@  irix5* | irix6* | nonstopux*)
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
@@ -8981,7 +8981,7 @@  $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
       lt_prog_compiler_static='-non_shared'
       ;;
 
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)
       case $cc_basename in
       # old Intel for x86_64 which still supported -KPIC.
       ecc*)
@@ -9576,7 +9576,7 @@  _LT_EOF
       archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
       tmp_diet=no
       if test "$host_os" = linux-dietlibc; then
 	case $cc_basename in
@@ -11107,7 +11107,7 @@  linux*oldld* | linux*aout* | linux*coff*)
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -13008,7 +13008,7 @@  if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
         inherit_rpath_CXX=yes
         ;;
 
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
         case $cc_basename in
           KCC*)
 	    # Kuck and Associates, Inc. (KAI) C++ Compiler
@@ -13595,7 +13595,7 @@  interix[3-9]*)
   postdeps_CXX=
   ;;
 
-linux*)
+linux* | uclinux*)
   case `$CC -V 2>&1 | sed 5q` in
   *Sun\ C*)
     # Sun C++ 5.9
@@ -13846,7 +13846,7 @@  $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 	    ;;
 	esac
 	;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)
 	case $cc_basename in
 	  KCC*)
 	    # KAI C++ Compiler
@@ -14767,7 +14767,7 @@  linux*oldld* | linux*aout* | linux*coff*)
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -16239,7 +16239,7 @@  fi
 
 
 case "$target" in
-  *-linux*)
+  *-linux* | *-uclinux*)
     case "$enable_linux_futex" in
       default)
 	# If headers don't have gettid/futex syscalls definition, then
@@ -16362,7 +16362,7 @@  _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
   chktls_save_LDFLAGS="$LDFLAGS"
 	  	  	  case $host in
-	    *-*-linux*)
+	    *-*-linux* | -*-uclinux*)
 	      LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"
 	      ;;
 	  esac
diff --git a/libitm/configure.tgt b/libitm/configure.tgt
index 0cbb097..bc6c3ca 100644
--- a/libitm/configure.tgt
+++ b/libitm/configure.tgt
@@ -127,7 +127,7 @@  config_path="$ARCH posix generic"
 
 # Other system configury
 case "${target}" in
-  *-*-linux*)
+  *-*-linux* | *-*-uclinux*)
 	if test "$enable_linux_futex" = yes; then
 	  config_path="linux/$ARCH linux $config_path"
 	fi
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 6d68e90..2e18049 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -1395,7 +1395,7 @@  AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [
         ac_has_nanosleep=yes
         ac_has_sched_yield=yes
         ;;
-      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
+      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)
         AC_MSG_CHECKING([for at least GNU libc 2.17])
         AC_TRY_COMPILE(
           [#include <features.h>],
@@ -1517,7 +1517,7 @@  AC_DEFUN([GLIBCXX_ENABLE_LIBSTDCXX_TIME], [
 
   if test x"$ac_has_clock_monotonic" != x"yes"; then
     case ${target_os} in
-      linux*)
+      linux* | uclinux*)
 	AC_MSG_CHECKING([for clock_gettime syscall])
 	AC_TRY_COMPILE(
 	  [#include <unistd.h>
@@ -2402,7 +2402,7 @@  AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [
   # Default to "generic".
   if test $enable_clocale_flag = auto; then
     case ${target_os} in
-      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
+      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)
 	enable_clocale_flag=gnu
 	;;
       darwin*)
@@ -2648,7 +2648,7 @@  AC_DEFUN([GLIBCXX_ENABLE_ALLOCATOR], [
   # Default to "new".
   if test $enable_libstdcxx_allocator_flag = auto; then
     case ${target_os} in
-      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
+      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)
 	enable_libstdcxx_allocator_flag=new
 	;;
       *)
@@ -4282,7 +4282,7 @@  AC_DEFUN([GLIBCXX_ENABLE_FILESYSTEM_TS], [
       freebsd*|netbsd*|openbsd*|dragonfly*|darwin*)
         enable_libstdcxx_filesystem_ts=yes
         ;;
-      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
+      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)
         enable_libstdcxx_filesystem_ts=yes
         ;;
       rtems*)
@@ -4430,7 +4430,7 @@  dnl
     AC_MSG_CHECKING([for sendfile that can copy files])
     AC_CACHE_VAL(glibcxx_cv_sendfile, [dnl
       case "${target_os}" in
-        gnu* | linux* | solaris*)
+        gnu* | linux* | solaris* | uclinux*)
           GCC_TRY_COMPILE_OR_LINK(
             [#include <sys/sendfile.h>],
             [sendfile(1, 2, (off_t*)0, sizeof 1);],
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index d33081d..7780679 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -6413,7 +6413,7 @@  irix5* | irix6* | nonstopux*)
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
@@ -8765,7 +8765,7 @@  $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
       lt_prog_compiler_static='-non_shared'
       ;;
 
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)
       case $cc_basename in
       # old Intel for x86_64 which still supported -KPIC.
       ecc*)
@@ -9360,7 +9360,7 @@  _LT_EOF
       archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
       tmp_diet=no
       if test "$host_os" = linux-dietlibc; then
 	case $cc_basename in
@@ -10900,7 +10900,7 @@  linux*oldld* | linux*aout* | linux*coff*)
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -12825,7 +12825,7 @@  if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
         inherit_rpath_CXX=yes
         ;;
 
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
         case $cc_basename in
           KCC*)
 	    # Kuck and Associates, Inc. (KAI) C++ Compiler
@@ -13412,7 +13412,7 @@  interix[3-9]*)
   postdeps_CXX=
   ;;
 
-linux*)
+linux* | uclinux*)
   case `$CC -V 2>&1 | sed 5q` in
   *Sun\ C*)
     # Sun C++ 5.9
@@ -13663,7 +13663,7 @@  $as_echo_n "checking for $compiler option to produce PIC... " >&6; }
 	    ;;
 	esac
 	;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)
 	case $cc_basename in
 	  KCC*)
 	    # KAI C++ Compiler
@@ -14584,7 +14584,7 @@  linux*oldld* | linux*aout* | linux*coff*)
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -15833,7 +15833,7 @@  fi
   # Default to "generic".
   if test $enable_clocale_flag = auto; then
     case ${target_os} in
-      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
+      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)
 	enable_clocale_flag=gnu
 	;;
       darwin*)
@@ -16250,7 +16250,7 @@  fi
   # Default to "new".
   if test $enable_libstdcxx_allocator_flag = auto; then
     case ${target_os} in
-      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
+      linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)
 	enable_libstdcxx_allocator_flag=new
 	;;
       *)
@@ -20526,7 +20526,7 @@  ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
         ac_has_nanosleep=yes
         ac_has_sched_yield=yes
         ;;
-      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
+      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)
         { $as_echo "$as_me:${as_lineno-$LINENO}: checking for at least GNU libc 2.17" >&5
 $as_echo_n "checking for at least GNU libc 2.17... " >&6; }
         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -21026,7 +21026,7 @@  $as_echo "$ac_has_nanosleep" >&6; }
 
   if test x"$ac_has_clock_monotonic" != x"yes"; then
     case ${target_os} in
-      linux*)
+      linux* | uclinux*)
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime syscall" >&5
 $as_echo_n "checking for clock_gettime syscall... " >&6; }
 	cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -27918,7 +27918,7 @@  _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
   chktls_save_LDFLAGS="$LDFLAGS"
 	  	  	  case $host in
-	    *-*-linux*)
+	    *-*-linux* | -*-uclinux*)
 	      LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"
 	      ;;
 	  esac
@@ -53578,7 +53578,7 @@  _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
   chktls_save_LDFLAGS="$LDFLAGS"
 	  	  	  case $host in
-	    *-*-linux*)
+	    *-*-linux* | -*-uclinux*)
 	      LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"
 	      ;;
 	  esac
@@ -59771,7 +59771,7 @@  _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
   chktls_save_LDFLAGS="$LDFLAGS"
 	  	  	  case $host in
-	    *-*-linux*)
+	    *-*-linux* | -*-uclinux*)
 	      LDFLAGS="-shared -Wl,--no-undefined $LDFLAGS"
 	      ;;
 	  esac
@@ -78397,7 +78397,7 @@  fi
 
 
 case "$target" in
-  *-linux*)
+  *-linux* | *-uclinux*)
     case "$enable_linux_futex" in
       default)
 	# If headers don't have gettid/futex syscalls definition, then
@@ -80033,7 +80033,7 @@  $as_echo_n "checking whether to build Filesystem TS support... " >&6; }
       freebsd*|netbsd*|openbsd*|dragonfly*|darwin*)
         enable_libstdcxx_filesystem_ts=yes
         ;;
-      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
+      gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu | uclinux*)
         enable_libstdcxx_filesystem_ts=yes
         ;;
       rtems*)
@@ -80457,7 +80457,7 @@  $as_echo_n "checking for sendfile that can copy files... " >&6; }
   $as_echo_n "(cached) " >&6
 else
         case "${target_os}" in
-        gnu* | linux* | solaris*)
+        gnu* | linux* | solaris* | uclinux*)
           if test x$gcc_no_link = xyes; then
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
diff --git a/libstdc++-v3/configure.host b/libstdc++-v3/configure.host
index 155a3cd..1c298ab 100644
--- a/libstdc++-v3/configure.host
+++ b/libstdc++-v3/configure.host
@@ -264,7 +264,7 @@  case "${host_os}" in
   linux-musl*)
     os_include_dir="os/generic"
     ;;
-  gnu* | linux* | kfreebsd*-gnu)
+  gnu* | linux* | kfreebsd*-gnu | uclinux*)
     if [ "$uclibc" = "yes" ]; then
       os_include_dir="os/uclibc"
     elif [ "$bionic" = "yes" ]; then
@@ -327,7 +327,7 @@  esac
 # Set any OS-dependent and CPU-dependent bits.
 # THIS TABLE IS SORTED.  KEEP IT THAT WAY.
 case "${host}" in
-  *-*-linux*)
+  *-*-linux* | *-*-uclinux*)
     case "${host_cpu}" in
       i[567]86)
         abi_baseline_pair=i486-linux-gnu
@@ -358,7 +358,7 @@  case "${host}" in
         fi
     esac
     case "${host}" in
-      arm*-*-linux-*)
+      arm*-*-linux-* | arm*-*-uclinuxfdpiceabi)
 	port_specific_symbol_files="\$(srcdir)/../config/os/gnu-linux/arm-eabi-extra.ver"
 	;;
     esac
diff --git a/libtool.m4 b/libtool.m4
index 940faaa..49ab293 100644
--- a/libtool.m4
+++ b/libtool.m4
@@ -2449,7 +2449,7 @@  linux*oldld* | linux*aout* | linux*coff*)
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
   version_type=linux
   need_lib_prefix=no
   need_version=no
@@ -3089,7 +3089,7 @@  irix5* | irix6* | nonstopux*)
   ;;
 
 # This must be Linux ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
@@ -3734,7 +3734,7 @@  m4_if([$1], [CXX], [
 	    ;;
 	esac
 	;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)
 	case $cc_basename in
 	  KCC*)
 	    # KAI C++ Compiler
@@ -4032,7 +4032,7 @@  m4_if([$1], [CXX], [
       _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       ;;
 
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinux*)
       case $cc_basename in
       # old Intel for x86_64 which still supported -KPIC.
       ecc*)
@@ -4449,7 +4449,7 @@  _LT_EOF
       _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
-    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+    gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
       tmp_diet=no
       if test "$host_os" = linux-dietlibc; then
 	case $cc_basename in
@@ -5946,7 +5946,7 @@  if test "$_lt_caught_CXX_error" != yes; then
         _LT_TAGVAR(inherit_rpath, $1)=yes
         ;;
 
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi)
         case $cc_basename in
           KCC*)
 	    # Kuck and Associates, Inc. (KAI) C++ Compiler
@@ -6598,7 +6598,7 @@  interix[[3-9]]*)
   _LT_TAGVAR(postdeps,$1)=
   ;;
 
-linux*)
+linux* | uclinux*)
   case `$CC -V 2>&1 | sed 5q` in
   *Sun\ C*)
     # Sun C++ 5.9