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

Message ID 20181011133518.17258-3-christophe.lyon@st.com
State New
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

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

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