@@ -50,7 +50,7 @@ do_test (void)
printf ("\nDone with getcontext()!\n");
fflush (NULL);
- /* On nios2 and tilepro, GCC 5 warns that except_mask may be used
+ /* On nios2 GCC 5 warns that except_mask may be used
uninitialized. Because it is always initialized and nothing in
this test ever calls setcontext (a setcontext call could result
in local variables being clobbered on the second return from
@@ -1,3 +1,4 @@
ieee754/soft-fp
+ieee754/dbl-64/wordsize-64
ieee754/dbl-64
ieee754/flt-32
@@ -1,3 +1,39 @@
+include $(common-objpfx)cflags-mcmodel-large.mk
+
+# Check for gcc to support the command-line switch, and for
+# binutils to support the hwN_plt() assembly operators and relocations.
+$(common-objpfx)cflags-mcmodel-large.mk: $(common-objpfx)config.make
+ mcmodel=no; \
+ (echo 'int main() { return getuid(); }' | \
+ $(CC) -o /dev/null -xc - -mcmodel=large -fpic) && mcmodel=yes; \
+ echo "cflags-mcmodel-large = $$mcmodel" > $@
+
+ifeq (yes,$(cflags-mcmodel-large))
+
+ifeq ($(subdir),csu)
+# elf-init.c is in libc_nonshared.o (the end of the shared object) but
+# must reach the _init symbol at the very start of the shared object.
+CFLAGS-elf-init.c += -mcmodel=large
+
+# __gmon_start__ is at the very start of the shared object when linked
+# with profiling, but calls to libc.so via the PLT at the very end.
+CFLAGS-gmon-start.c += -mcmodel=large
+endif
+
+else
+
+# Don't try to compile assembly code with hwN_plt() directives if the
+# toolchain doesn't support -mcmodel=large.
+ifeq ($(subdir),csu)
+CPPFLAGS-start.S += -DNO_PLT_PCREL
+CPPFLAGS-crti.S += -DNO_PLT_PCREL
+endif
+ifeq ($(subdir),nptl)
+CPPFLAGS-pt-crti.S += -DNO_PLT_PCREL
+endif
+
+endif
+
# We don't support long doubles as a distinct type. We don't need to set
# this variable; it's here mostly for documentational purposes.
@@ -16,20 +16,12 @@
License along with the GNU C Library. If not, see
<http://www.gnu.org/licenses/>. */
-/* The sub-architecture headers provide definitions for these macros
- that work for "int" and "long" size values only:
-
- atomic_compare_and_exchange_val_acq()
- atomic_exchange_acq()
- atomic_exchange_and_add()
- atomic_and_val()
- atomic_or_val()
- atomic_decrement_if_positive() [tilegx only]
-
- Here we provide generic definitions true for all Tilera chips. */
+#ifndef _ATOMIC_MACHINE_H
+#define _ATOMIC_MACHINE_H 1
#include <stdint.h>
#include <features.h>
+#include <arch/spr_def.h>
typedef int32_t atomic32_t;
typedef uint32_t uatomic32_t;
@@ -46,6 +38,41 @@ typedef uintptr_t uatomicptr_t;
typedef intmax_t atomic_max_t;
typedef uintmax_t uatomic_max_t;
+#ifdef _LP64
+# define __HAVE_64B_ATOMICS 1
+#else
+/* tilegx32 does have 64-bit atomics, but assumptions in the semaphore
+ code mean that unaligned 64-bit atomics will be used if this symbol
+ is true, and unaligned atomics are not supported on tile. */
+# define __HAVE_64B_ATOMICS 0
+#endif
+
+#define USE_ATOMIC_COMPILER_BUILTINS 0
+#define ATOMIC_EXCHANGE_USES_CAS 0
+
+/* Pick appropriate 8- or 4-byte instruction. */
+#define __atomic_update(mem, v, op) \
+ ((__typeof (*(mem))) (__typeof (*(mem) - *(mem))) \
+ ((sizeof (*(mem)) == 8) ? \
+ __insn_##op ((void *) (mem), (int64_t) (__typeof((v) - (v))) (v)) : \
+ (sizeof (*(mem)) == 4) ? \
+ __insn_##op##4 ((void *) (mem), (int32_t) (__typeof ((v) - (v))) (v)) : \
+ __atomic_error_bad_argument_size()))
+
+#define atomic_compare_and_exchange_val_acq(mem, n, o) \
+ ({ __insn_mtspr (SPR_CMPEXCH_VALUE, (int64_t) (__typeof ((o) - (o))) (o)); \
+ __atomic_update (mem, n, cmpexch); })
+#define atomic_exchange_acq(mem, newvalue) \
+ __atomic_update (mem, newvalue, exch)
+#define atomic_exchange_and_add(mem, value) \
+ __atomic_update (mem, value, fetchadd)
+#define atomic_and_val(mem, mask) \
+ __atomic_update (mem, mask, fetchand)
+#define atomic_or_val(mem, mask) \
+ __atomic_update (mem, mask, fetchor)
+#define atomic_decrement_if_positive(mem) \
+ __atomic_update (mem, -1, fetchaddgez)
+
/* Barrier macro. */
#define atomic_full_barrier() __sync_synchronize()
@@ -79,3 +106,5 @@ typedef uintmax_t uatomic_max_t;
*/
extern int __atomic_error_bad_argument_size(void)
__attribute__ ((warning ("bad sizeof atomic argument")));
+
+#endif /* _ATOMIC_MACHINE_H */
similarity index 100%
rename from sysdeps/tile/tilegx/bits/wordsize.h
rename to sysdeps/tile/bits/wordsize.h
similarity index 100%
rename from sysdeps/tile/tilegx/memchr.c
rename to sysdeps/tile/memchr.c
similarity index 100%
rename from sysdeps/tile/tilegx/memcpy.c
rename to sysdeps/tile/memcpy.c
similarity index 100%
rename from sysdeps/tile/tilegx/memset.c
rename to sysdeps/tile/memset.c
similarity index 100%
rename from sysdeps/tile/tilegx/memusage.h
rename to sysdeps/tile/memusage.h
@@ -3,8 +3,8 @@ case "$machine" in
tilegx*)
base_machine=tile
if $CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null | grep -q __LP64__; then
- machine=tile/tilegx/tilegx64
+ machine=tile/tilegx64
else
- machine=tile/tilegx/tilegx32
+ machine=tile/tilegx32
fi ;;
esac
similarity index 100%
rename from sysdeps/tile/tilegx/rawmemchr.c
rename to sysdeps/tile/rawmemchr.c
similarity index 100%
rename from sysdeps/tile/tilegx/strcasestr.c
rename to sysdeps/tile/strcasestr.c
similarity index 100%
rename from sysdeps/tile/tilegx/strchr.c
rename to sysdeps/tile/strchr.c
similarity index 100%
rename from sysdeps/tile/tilegx/strchrnul.c
rename to sysdeps/tile/strchrnul.c
similarity index 100%
rename from sysdeps/tile/tilegx/string-endian.h
rename to sysdeps/tile/string-endian.h
similarity index 100%
rename from sysdeps/tile/tilegx/strlen.c
rename to sysdeps/tile/strlen.c
similarity index 100%
rename from sysdeps/tile/tilegx/strnlen.c
rename to sysdeps/tile/strnlen.c
similarity index 100%
rename from sysdeps/tile/tilegx/strrchr.c
rename to sysdeps/tile/strrchr.c
similarity index 100%
rename from sysdeps/tile/tilegx/strstr.c
rename to sysdeps/tile/strstr.c
deleted file mode 100644
@@ -1 +0,0 @@
-ieee754/dbl-64/wordsize-64
deleted file mode 100644
@@ -1,35 +0,0 @@
-include $(common-objpfx)cflags-mcmodel-large.mk
-
-# Check for gcc to support the command-line switch, and for
-# binutils to support the hwN_plt() assembly operators and relocations.
-$(common-objpfx)cflags-mcmodel-large.mk: $(common-objpfx)config.make
- mcmodel=no; \
- (echo 'int main() { return getuid(); }' | \
- $(CC) -o /dev/null -xc - -mcmodel=large -fpic) && mcmodel=yes; \
- echo "cflags-mcmodel-large = $$mcmodel" > $@
-
-ifeq (yes,$(cflags-mcmodel-large))
-
-ifeq ($(subdir),csu)
-# elf-init.c is in libc_nonshared.o (the end of the shared object) but
-# must reach the _init symbol at the very start of the shared object.
-CFLAGS-elf-init.c += -mcmodel=large
-
-# __gmon_start__ is at the very start of the shared object when linked
-# with profiling, but calls to libc.so via the PLT at the very end.
-CFLAGS-gmon-start.c += -mcmodel=large
-endif
-
-else
-
-# Don't try to compile assembly code with hwN_plt() directives if the
-# toolchain doesn't support -mcmodel=large.
-ifeq ($(subdir),csu)
-CPPFLAGS-start.S += -DNO_PLT_PCREL
-CPPFLAGS-crti.S += -DNO_PLT_PCREL
-endif
-ifeq ($(subdir),nptl)
-CPPFLAGS-pt-crti.S += -DNO_PLT_PCREL
-endif
-
-endif
deleted file mode 100644
@@ -1,61 +0,0 @@
-/* Copyright (C) 2011-2017 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library. If not, see
- <http://www.gnu.org/licenses/>. */
-
-#ifndef _ATOMIC_MACHINE_H
-#define _ATOMIC_MACHINE_H 1
-
-#include <arch/spr_def.h>
-
-#ifdef _LP64
-# define __HAVE_64B_ATOMICS 1
-#else
-/* tilegx32 does have 64-bit atomics, but assumptions in the semaphore
- code mean that unaligned 64-bit atomics will be used if this symbol
- is true, and unaligned atomics are not supported on tile. */
-# define __HAVE_64B_ATOMICS 0
-#endif
-
-#define USE_ATOMIC_COMPILER_BUILTINS 0
-#define ATOMIC_EXCHANGE_USES_CAS 0
-
-/* Pick appropriate 8- or 4-byte instruction. */
-#define __atomic_update(mem, v, op) \
- ((__typeof (*(mem))) (__typeof (*(mem) - *(mem))) \
- ((sizeof (*(mem)) == 8) ? \
- __insn_##op ((void *) (mem), (int64_t) (__typeof((v) - (v))) (v)) : \
- (sizeof (*(mem)) == 4) ? \
- __insn_##op##4 ((void *) (mem), (int32_t) (__typeof ((v) - (v))) (v)) : \
- __atomic_error_bad_argument_size()))
-
-#define atomic_compare_and_exchange_val_acq(mem, n, o) \
- ({ __insn_mtspr (SPR_CMPEXCH_VALUE, (int64_t) (__typeof ((o) - (o))) (o)); \
- __atomic_update (mem, n, cmpexch); })
-#define atomic_exchange_acq(mem, newvalue) \
- __atomic_update (mem, newvalue, exch)
-#define atomic_exchange_and_add(mem, value) \
- __atomic_update (mem, value, fetchadd)
-#define atomic_and_val(mem, mask) \
- __atomic_update (mem, mask, fetchand)
-#define atomic_or_val(mem, mask) \
- __atomic_update (mem, mask, fetchor)
-#define atomic_decrement_if_positive(mem) \
- __atomic_update (mem, -1, fetchaddgez)
-
-#include <sysdeps/tile/atomic-machine.h>
-
-#endif /* atomic-machine.h */
similarity index 58%
rename from sysdeps/tile/tilegx/tilegx32/Implies
rename to sysdeps/tile/tilegx32/Implies
@@ -1,3 +1,2 @@
-tile/tilegx
tile
wordsize-32
similarity index 58%
rename from sysdeps/tile/tilegx/tilegx64/Implies
rename to sysdeps/tile/tilegx64/Implies
@@ -1,3 +1,2 @@
-tile/tilegx
tile
wordsize-64
@@ -1,3 +1,8 @@
+# Provide biarch definitions.
+abi-variants := 64 32
+abi-64-condition := __WORDSIZE == 64
+abi-32-condition := __WORDSIZE == 32
+
ifeq ($(subdir),misc)
# <sys/reg.h> provides something like x86 compatibility.
similarity index 96%
rename from sysdeps/unix/sysv/linux/tile/tilegx/configure
rename to sysdeps/unix/sysv/linux/tile/configure
@@ -4,7 +4,7 @@
ldd_rewrite_script=$dir/ldd-rewrite.sed
case $machine in
-tile/tilegx/tilegx32)
+tile/tilegx32)
test -n "$libc_cv_slibdir" ||
case "$prefix" in
/usr | /usr/)
similarity index 91%
rename from sysdeps/unix/sysv/linux/tile/tilegx/configure.ac
rename to sysdeps/unix/sysv/linux/tile/configure.ac
@@ -4,7 +4,7 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
ldd_rewrite_script=$dir/ldd-rewrite.sed
case $machine in
-tile/tilegx/tilegx32)
+tile/tilegx32)
LIBC_SLIBDIR_RTLDDIR([lib32], [lib32])
;;
esac
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/ioctl.S
rename to sysdeps/unix/sysv/linux/tile/ioctl.S
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/ldconfig.h
rename to sysdeps/unix/sysv/linux/tile/ldconfig.h
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/ldd-rewrite.sed
rename to sysdeps/unix/sysv/linux/tile/ldd-rewrite.sed
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/register-dump.h
rename to sysdeps/unix/sysv/linux/tile/register-dump.h
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/sched_getcpu.c
rename to sysdeps/unix/sysv/linux/tile/sched_getcpu.c
deleted file mode 100644
@@ -1,4 +0,0 @@
-# Provide biarch definitions.
-abi-variants := 64 32
-abi-64-condition := __WORDSIZE == 64
-abi-32-condition := __WORDSIZE == 32
similarity index 74%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Implies
rename to sysdeps/unix/sysv/linux/tile/tilegx32/Implies
@@ -1,4 +1,3 @@
-unix/sysv/linux/tile/tilegx
unix/sysv/linux/tile
unix/sysv/linux/generic/wordsize-32
unix/sysv/linux/generic
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/Makefile
rename to sysdeps/unix/sysv/linux/tile/tilegx32/Makefile
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/c++-types.data
rename to sysdeps/unix/sysv/linux/tile/tilegx32/c++-types.data
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/jmp_buf-macros.h
rename to sysdeps/unix/sysv/linux/tile/tilegx32/jmp_buf-macros.h
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/ld.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx32/ld.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libBrokenLocale.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx32/libBrokenLocale.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libanl.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx32/libanl.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx32/libc.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libcrypt.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx32/libcrypt.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libdl.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx32/libdl.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libm.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx32/libm.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libnsl.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx32/libnsl.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libpthread.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx32/libpthread.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libresolv.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx32/libresolv.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/librt.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx32/librt.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libthread_db.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx32/libthread_db.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libutil.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx32/libutil.abilist
similarity index 72%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Implies
rename to sysdeps/unix/sysv/linux/tile/tilegx64/Implies
@@ -1,4 +1,3 @@
-unix/sysv/linux/tile/tilegx
unix/sysv/linux/tile
unix/sysv/linux/generic
unix/sysv/linux/wordsize-64
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/Makefile
rename to sysdeps/unix/sysv/linux/tile/tilegx64/Makefile
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/c++-types.data
rename to sysdeps/unix/sysv/linux/tile/tilegx64/c++-types.data
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/jmp_buf-macros.h
rename to sysdeps/unix/sysv/linux/tile/tilegx64/jmp_buf-macros.h
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/ld.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx64/ld.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libBrokenLocale.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx64/libBrokenLocale.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libanl.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx64/libanl.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx64/libc.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libcrypt.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx64/libcrypt.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libdl.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx64/libdl.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libm.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx64/libm.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libnsl.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx64/libnsl.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libpthread.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx64/libpthread.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libresolv.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx64/libresolv.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/librt.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx64/librt.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libthread_db.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx64/libthread_db.abilist
similarity index 100%
rename from sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libutil.abilist
rename to sysdeps/unix/sysv/linux/tile/tilegx64/libutil.abilist