This adds support for Kalray kvx arch to uClibc-ng
To check that it builds fine you can do:
git clone https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git # Apply this patch to uclibc-ng upstream's master branch cd uclibc-ng patch -p1 < path/to/0001-kvx-add-support-for-kvx-arch-to-uClibc-ng.patch cd - git clone https://github.com/kalray/buildroot cd buildroot # The following line forces to use your local copy of patch'ed uClibc-ng # this way you make sure that the patch results in something that builds echo 'UCLIBC_OVERRIDE_SRCDIR = $(TOPDIR)/../uclibc-ng/' > local.mk make kvx_defconfig make
Yann Sionneau (1): kvx: add support for kvx arch to uClibc-ng
MAINTAINERS | 4 + README | 2 +- Rules.mak | 6 +- extra/Configs/Config.in | 8 + extra/Configs/Config.kvx | 18 ++ extra/Configs/defconfigs/kvx/defconfig | 1 + include/elf.h | 87 ++++- ldso/ldso/kvx/dl-startup.h | 104 ++++++ ldso/ldso/kvx/dl-syscalls.h | 1 + ldso/ldso/kvx/dl-sysdep.h | 99 ++++++ ldso/ldso/kvx/dl-tlsdesc.S | 33 ++ ldso/ldso/kvx/elfinterp.c | 302 ++++++++++++++++++ ldso/ldso/kvx/resolve.S | 17 + libc/string/kvx/Makefile | 13 + libc/string/kvx/memcpy.S | 221 +++++++++++++ libc/string/kvx/memset.S | 146 +++++++++ libc/sysdeps/linux/kvx/Makefile | 13 + libc/sysdeps/linux/kvx/Makefile.arch | 10 + libc/sysdeps/linux/kvx/__longjmp.S | 53 +++ libc/sysdeps/linux/kvx/__syscall_error.c | 19 ++ libc/sysdeps/linux/kvx/bits/atomic.h | 141 ++++++++ libc/sysdeps/linux/kvx/bits/endian.h | 13 + libc/sysdeps/linux/kvx/bits/fcntl.h | 226 +++++++++++++ libc/sysdeps/linux/kvx/bits/fenv.h | 106 ++++++ libc/sysdeps/linux/kvx/bits/kernel_types.h | 42 +++ libc/sysdeps/linux/kvx/bits/posix_types.h | 14 + libc/sysdeps/linux/kvx/bits/sem.h | 84 +++++ libc/sysdeps/linux/kvx/bits/setjmp.h | 46 +++ libc/sysdeps/linux/kvx/bits/stackinfo.h | 29 ++ libc/sysdeps/linux/kvx/bits/statfs.h | 64 ++++ libc/sysdeps/linux/kvx/bits/syscalls.h | 80 +++++ .../linux/kvx/bits/uClibc_arch_features.h | 41 +++ libc/sysdeps/linux/kvx/bits/wordsize.h | 9 + libc/sysdeps/linux/kvx/bsd-_setjmp.S | 18 ++ libc/sysdeps/linux/kvx/bsd-setjmp.S | 17 + libc/sysdeps/linux/kvx/cachectl.c | 15 + libc/sysdeps/linux/kvx/clone.S | 100 ++++++ libc/sysdeps/linux/kvx/crt1.S | 83 +++++ libc/sysdeps/linux/kvx/crti.S | 31 ++ libc/sysdeps/linux/kvx/crtn.S | 33 ++ libc/sysdeps/linux/kvx/jmpbuf-offsets.h | 50 +++ libc/sysdeps/linux/kvx/jmpbuf-unwind.h | 30 ++ libc/sysdeps/linux/kvx/setjmp.S | 59 ++++ libc/sysdeps/linux/kvx/sys/cachectl.h | 21 ++ libc/sysdeps/linux/kvx/sys/procfs.h | 101 ++++++ libc/sysdeps/linux/kvx/sys/ucontext.h | 29 ++ libc/sysdeps/linux/kvx/sys/user.h | 27 ++ libc/sysdeps/linux/kvx/sysdep.h | 49 +++ libc/sysdeps/linux/kvx/vfork.S | 47 +++ libm/kvx/Makefile.arch | 22 ++ libm/kvx/feclearexcept.c | 20 ++ libm/kvx/fegetenv.c | 21 ++ libm/kvx/fegetexceptflag.c | 24 ++ libm/kvx/fegetround.c | 16 + libm/kvx/feholdexcept.c | 26 ++ libm/kvx/feraiseexcept.c | 24 ++ libm/kvx/fesetenv.c | 23 ++ libm/kvx/fesetexceptflag.c | 24 ++ libm/kvx/fesetround.c | 21 ++ libm/kvx/fetestexcept.c | 21 ++ libm/kvx/feupdateenv.c | 24 ++ libpthread/nptl/sysdeps/kvx/Makefile.arch | 9 + libpthread/nptl/sysdeps/kvx/dl-tls.h | 47 +++ libpthread/nptl/sysdeps/kvx/libc-tls.c | 26 ++ .../nptl/sysdeps/kvx/pthread_spin_lock.c | 60 ++++ .../nptl/sysdeps/kvx/pthread_spin_trylock.c | 26 ++ libpthread/nptl/sysdeps/kvx/pthreaddef.h | 26 ++ libpthread/nptl/sysdeps/kvx/tcb-offsets.sym | 6 + libpthread/nptl/sysdeps/kvx/tls.h | 160 ++++++++++ .../nptl/sysdeps/kvx/unwind-forcedunwind.c | 165 ++++++++++ libpthread/nptl/sysdeps/pthread/Makefile.in | 2 + .../nptl/sysdeps/unix/sysv/linux/kvx/Makefile | 13 + .../sysdeps/unix/sysv/linux/kvx/Makefile.arch | 14 + .../unix/sysv/linux/kvx/bits/pthreadtypes.h | 166 ++++++++++ .../unix/sysv/linux/kvx/bits/semaphore.h | 30 ++ .../unix/sysv/linux/kvx/createthread.c | 14 + .../nptl/sysdeps/unix/sysv/linux/kvx/fork.c | 11 + .../unix/sysv/linux/kvx/pthread_once.c | 77 +++++ .../unix/sysv/linux/kvx/sysdep-cancel.h | 43 +++ utils/ldd.c | 5 + 80 files changed, 3925 insertions(+), 3 deletions(-) create mode 100644 extra/Configs/Config.kvx create mode 100644 extra/Configs/defconfigs/kvx/defconfig create mode 100644 ldso/ldso/kvx/dl-startup.h create mode 100644 ldso/ldso/kvx/dl-syscalls.h create mode 100644 ldso/ldso/kvx/dl-sysdep.h create mode 100644 ldso/ldso/kvx/dl-tlsdesc.S create mode 100644 ldso/ldso/kvx/elfinterp.c create mode 100644 ldso/ldso/kvx/resolve.S create mode 100644 libc/string/kvx/Makefile create mode 100644 libc/string/kvx/memcpy.S create mode 100644 libc/string/kvx/memset.S create mode 100644 libc/sysdeps/linux/kvx/Makefile create mode 100644 libc/sysdeps/linux/kvx/Makefile.arch create mode 100644 libc/sysdeps/linux/kvx/__longjmp.S create mode 100644 libc/sysdeps/linux/kvx/__syscall_error.c create mode 100644 libc/sysdeps/linux/kvx/bits/atomic.h create mode 100644 libc/sysdeps/linux/kvx/bits/endian.h create mode 100644 libc/sysdeps/linux/kvx/bits/fcntl.h create mode 100644 libc/sysdeps/linux/kvx/bits/fenv.h create mode 100644 libc/sysdeps/linux/kvx/bits/kernel_types.h create mode 100644 libc/sysdeps/linux/kvx/bits/posix_types.h create mode 100644 libc/sysdeps/linux/kvx/bits/sem.h create mode 100644 libc/sysdeps/linux/kvx/bits/setjmp.h create mode 100644 libc/sysdeps/linux/kvx/bits/stackinfo.h create mode 100644 libc/sysdeps/linux/kvx/bits/statfs.h create mode 100644 libc/sysdeps/linux/kvx/bits/syscalls.h create mode 100644 libc/sysdeps/linux/kvx/bits/uClibc_arch_features.h create mode 100644 libc/sysdeps/linux/kvx/bits/wordsize.h create mode 100644 libc/sysdeps/linux/kvx/bsd-_setjmp.S create mode 100644 libc/sysdeps/linux/kvx/bsd-setjmp.S create mode 100644 libc/sysdeps/linux/kvx/cachectl.c create mode 100644 libc/sysdeps/linux/kvx/clone.S create mode 100644 libc/sysdeps/linux/kvx/crt1.S create mode 100644 libc/sysdeps/linux/kvx/crti.S create mode 100644 libc/sysdeps/linux/kvx/crtn.S create mode 100644 libc/sysdeps/linux/kvx/jmpbuf-offsets.h create mode 100644 libc/sysdeps/linux/kvx/jmpbuf-unwind.h create mode 100644 libc/sysdeps/linux/kvx/setjmp.S create mode 100644 libc/sysdeps/linux/kvx/sys/cachectl.h create mode 100644 libc/sysdeps/linux/kvx/sys/procfs.h create mode 100644 libc/sysdeps/linux/kvx/sys/ucontext.h create mode 100644 libc/sysdeps/linux/kvx/sys/user.h create mode 100644 libc/sysdeps/linux/kvx/sysdep.h create mode 100644 libc/sysdeps/linux/kvx/vfork.S create mode 100644 libm/kvx/Makefile.arch create mode 100644 libm/kvx/feclearexcept.c create mode 100644 libm/kvx/fegetenv.c create mode 100644 libm/kvx/fegetexceptflag.c create mode 100644 libm/kvx/fegetround.c create mode 100644 libm/kvx/feholdexcept.c create mode 100644 libm/kvx/feraiseexcept.c create mode 100644 libm/kvx/fesetenv.c create mode 100644 libm/kvx/fesetexceptflag.c create mode 100644 libm/kvx/fesetround.c create mode 100644 libm/kvx/fetestexcept.c create mode 100644 libm/kvx/feupdateenv.c create mode 100644 libpthread/nptl/sysdeps/kvx/Makefile.arch create mode 100644 libpthread/nptl/sysdeps/kvx/dl-tls.h create mode 100644 libpthread/nptl/sysdeps/kvx/libc-tls.c create mode 100644 libpthread/nptl/sysdeps/kvx/pthread_spin_lock.c create mode 100644 libpthread/nptl/sysdeps/kvx/pthread_spin_trylock.c create mode 100644 libpthread/nptl/sysdeps/kvx/pthreaddef.h create mode 100644 libpthread/nptl/sysdeps/kvx/tcb-offsets.sym create mode 100644 libpthread/nptl/sysdeps/kvx/tls.h create mode 100644 libpthread/nptl/sysdeps/kvx/unwind-forcedunwind.c create mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/kvx/Makefile create mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/kvx/Makefile.arch create mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/kvx/bits/pthreadtypes.h create mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/kvx/bits/semaphore.h create mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/kvx/createthread.c create mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/kvx/fork.c create mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/kvx/pthread_once.c create mode 100644 libpthread/nptl/sysdeps/unix/sysv/linux/kvx/sysdep-cancel.h