On 07/29/2011 02:34 PM, Bernhard Reutner-Fischer wrote: > > On Jul 21, 2011 11:05 PM, "Rob Landley" <[email protected] > <mailto:[email protected]>> wrote: >> >> I needed the following patch to make sh4 and sparc build with >> pthreads.old in current git: >> >> diff --git a/libc/sysdeps/linux/sh/Makefile.arch > b/libc/sysdeps/linux/sh/Makefile.arch >> index 92e262b..6cbc681 100644 >> --- a/libc/sysdeps/linux/sh/Makefile.arch >> +++ b/libc/sysdeps/linux/sh/Makefile.arch >> @@ -9,4 +9,4 @@ >> CSRC := \ >> mmap.c pipe.c __init_brk.c brk.c sbrk.c pread_write.c cacheflush.c >> >> -SSRC := setjmp.S __longjmp.S ___fpscr_values.S vfork.S >> +SSRC := setjmp.S __longjmp.S ___fpscr_values.S vfork.S clone.S >> diff --git a/libc/sysdeps/linux/sparc/Makefile.arch > b/libc/sysdeps/linux/sparc/Makefile.arch >> index d0cae9f..820b2fa 100644 >> --- a/libc/sysdeps/linux/sparc/Makefile.arch >> +++ b/libc/sysdeps/linux/sparc/Makefile.arch >> @@ -13,7 +13,7 @@ SSRC := \ >> >> ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y) >> CSRC += sigaction.c >> -SSRC += fork.S vfork.S >> +SSRC += fork.S vfork.S clone.S >> endif >> >> # check weather __LONG_DOUBLE_128__ is defined (long double support) >> >> I also had to symlink: >> >> ln -s ../../../linuxthreads/sysdeps/pthread/tcb-offsets.h > libpthread/linuxthreads.old/sysdeps/pthread/tcb-offsets.h >> >> Because you only have that link in the new pthreads and the sparc > build breaks looking for it on the old one. > > Sounds odd, it should long be used by NPTL, IIRC.
If I don't symlink (or in my patch, drop a file there that #includes <../../../blahblahblah>) then it does this: libc/sysdeps/linux/sparc/clone.S:26:25: error: tcb-offsets.h: No such file or directory make: *** [libc/sysdeps/linux/sparc/clone.os] Error 1 make: *** Waiting for unfinished jobs.... Because sparc's clone.S (which, without the makefile change never got built), does in fact include that file. which is only there in the new pthread and nptl, but not pthread.old. Here's the config I used, and the patch I used. Rob
The sh4 and sparc targets have assembly implementations of clone.S that don't get used, and thus the build breaks. Also, sparc is missing a header file in pthreads.old that exists in pthreads.new. diff --git a/libc/sysdeps/linux/sh/Makefile.arch b/libc/sysdeps/linux/sh/Makefile.arch index 92e262b..6cbc681 100644 --- a/libc/sysdeps/linux/sh/Makefile.arch +++ b/libc/sysdeps/linux/sh/Makefile.arch @@ -9,4 +9,4 @@ CSRC := \ mmap.c pipe.c __init_brk.c brk.c sbrk.c pread_write.c cacheflush.c -SSRC := setjmp.S __longjmp.S ___fpscr_values.S vfork.S +SSRC := setjmp.S __longjmp.S ___fpscr_values.S vfork.S clone.S diff --git a/libc/sysdeps/linux/sparc/Makefile.arch b/libc/sysdeps/linux/sparc/Makefile.arch index d0cae9f..820b2fa 100644 --- a/libc/sysdeps/linux/sparc/Makefile.arch +++ b/libc/sysdeps/linux/sparc/Makefile.arch @@ -13,7 +13,7 @@ SSRC := \ ifneq ($(UCLIBC_HAS_THREADS_NATIVE),y) CSRC += sigaction.c -SSRC += fork.S vfork.S +SSRC += fork.S vfork.S clone.S endif # check weather __LONG_DOUBLE_128__ is defined (long double support) --- /dev/null 2011-07-15 06:34:19.820919508 -0500 +++ uClibc/libpthread/linuxthreads.old/sysdeps/sparc/tcb-offsets.h 2011-07-23 19:53:02.079880519 -0500 @@ -0,0 +1 @@ +#include "../../../linuxthreads/sysdeps/pthread/tcb-offsets.h"
# # Automatically generated make config: don't edit # Version: 0.9.32 # Fri Jul 29 21:57:45 2011 # # TARGET_alpha is not set # TARGET_arm is not set # TARGET_avr32 is not set # TARGET_bfin is not set # TARGET_cris is not set # TARGET_e1 is not set # TARGET_frv is not set # TARGET_h8300 is not set # TARGET_hppa is not set # TARGET_i386 is not set # TARGET_i960 is not set # TARGET_ia64 is not set # TARGET_m68k is not set # TARGET_microblaze is not set # TARGET_mips is not set # TARGET_nios is not set # TARGET_nios2 is not set # TARGET_powerpc is not set # TARGET_sh is not set # TARGET_sh64 is not set TARGET_sparc=y # TARGET_v850 is not set # TARGET_vax is not set # TARGET_x86_64 is not set # TARGET_xtensa is not set # TARGET_c6x is not set # # Target Architecture Features and Options # TARGET_ARCH="sparc" FORCE_OPTIONS_FOR_ARCH=y # CONFIG_SPARC_V7 is not set CONFIG_SPARC_V8=y # CONFIG_SPARC_V9 is not set # CONFIG_SPARC_V9B is not set TARGET_SUBARCH="" # # Using ELF file format # ARCH_BIG_ENDIAN=y # # Using Big Endian # ARCH_USE_MMU=y UCLIBC_HAS_FLOATS=y UCLIBC_HAS_FPU=y DO_C99_MATH=y # DO_XSI_MATH is not set UCLIBC_HAS_FENV=y # UCLIBC_HAS_LONG_DOUBLE_MATH is not set KERNEL_HEADERS="/usr/include" HAVE_DOT_CONFIG=y # # General Library Settings # # HAVE_NO_PIC is not set DOPIC=y # ARCH_HAS_NO_SHARED is not set # ARCH_HAS_NO_LDSO is not set HAVE_SHARED=y FORCE_SHAREABLE_TEXT_SEGMENTS=y # LDSO_LDD_SUPPORT is not set LDSO_CACHE_SUPPORT=y # LDSO_PRELOAD_ENV_SUPPORT is not set # LDSO_PRELOAD_FILE_SUPPORT is not set LDSO_BASE_FILENAME="ld-uClibc.so" UCLIBC_STATIC_LDCONFIG=y LDSO_RUNPATH=y LDSO_SEARCH_INTERP_PATH=y UCLIBC_CTOR_DTOR=y # LDSO_GNU_HASH_SUPPORT is not set # HAS_NO_THREADS is not set LINUXTHREADS_OLD=y # LINUXTHREADS_NEW is not set # UCLIBC_HAS_THREADS_NATIVE is not set UCLIBC_HAS_THREADS=y # PTHREADS_DEBUG_SUPPORT is not set UCLIBC_HAS_SYSLOG=y UCLIBC_HAS_LFS=y # MALLOC is not set # MALLOC_SIMPLE is not set MALLOC_STANDARD=y MALLOC_GLIBC_COMPAT=y UCLIBC_DYNAMIC_ATEXIT=y # COMPAT_ATEXIT is not set UCLIBC_SUSV3_LEGACY=y UCLIBC_SUSV3_LEGACY_MACROS=y UCLIBC_SUSV4_LEGACY=y # UCLIBC_STRICT_HEADERS is not set # UCLIBC_HAS_STUBS is not set UCLIBC_HAS_SHADOW=y UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y UCLIBC_HAS___PROGNAME=y UCLIBC_HAS_PTY=y ASSUME_DEVPTS=y UNIX98PTY_ONLY=y # UCLIBC_HAS_GETPT is not set UCLIBC_HAS_LIBUTIL=y UCLIBC_HAS_TM_EXTENSIONS=y UCLIBC_HAS_TZ_CACHING=y UCLIBC_HAS_TZ_FILE=y UCLIBC_HAS_TZ_FILE_READ_MANY=y UCLIBC_TZ_FILE_PATH="/etc/TZ" # UCLIBC_FALLBACK_TO_ETC_LOCALTIME is not set # # Advanced Library Settings # UCLIBC_PWD_BUFFER_SIZE=256 UCLIBC_GRP_BUFFER_SIZE=256 # # Support various families of functions # # UCLIBC_LINUX_MODULE_24 is not set UCLIBC_LINUX_SPECIFIC=y UCLIBC_HAS_GNU_ERROR=y UCLIBC_BSD_SPECIFIC=y UCLIBC_HAS_BSD_ERR=y UCLIBC_HAS_OBSOLETE_BSD_SIGNAL=y UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL=y UCLIBC_NTP_LEGACY=y UCLIBC_SV4_DEPRECATED=y UCLIBC_HAS_REALTIME=y UCLIBC_HAS_ADVANCED_REALTIME=y UCLIBC_HAS_EPOLL=y UCLIBC_HAS_XATTR=y UCLIBC_HAS_PROFILING=y UCLIBC_HAS_CRYPT_IMPL=y UCLIBC_HAS_CRYPT=y UCLIBC_HAS_NETWORK_SUPPORT=y UCLIBC_HAS_SOCKET=y UCLIBC_HAS_IPV4=y UCLIBC_HAS_IPV6=y UCLIBC_HAS_RPC=y UCLIBC_HAS_FULL_RPC=y UCLIBC_HAS_REENTRANT_RPC=y # UCLIBC_USE_NETLINK is not set # UCLIBC_HAS_BSD_RES_CLOSE is not set # UCLIBC_HAS_COMPAT_RES_STATE is not set # UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set UCLIBC_HAS_LIBRESOLV_STUB=y UCLIBC_HAS_LIBNSL_STUB=y # # String and Stdio Support # UCLIBC_HAS_STRING_GENERIC_OPT=y UCLIBC_HAS_STRING_ARCH_OPT=y UCLIBC_HAS_CTYPE_TABLES=y UCLIBC_HAS_CTYPE_SIGNED=y UCLIBC_HAS_CTYPE_UNSAFE=y # UCLIBC_HAS_CTYPE_CHECKED is not set # UCLIBC_HAS_CTYPE_ENFORCED is not set UCLIBC_HAS_WCHAR=y # UCLIBC_HAS_LOCALE is not set # UCLIBC_HAS_HEXADECIMAL_FLOATS is not set UCLIBC_HAS_GLIBC_CUSTOM_PRINTF=y UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS=9 # UCLIBC_HAS_SCANF_GLIBC_A_FLAG is not set # UCLIBC_HAS_STDIO_BUFSIZ_NONE is not set # UCLIBC_HAS_STDIO_BUFSIZ_256 is not set # UCLIBC_HAS_STDIO_BUFSIZ_512 is not set # UCLIBC_HAS_STDIO_BUFSIZ_1024 is not set # UCLIBC_HAS_STDIO_BUFSIZ_2048 is not set UCLIBC_HAS_STDIO_BUFSIZ_4096=y # UCLIBC_HAS_STDIO_BUFSIZ_8192 is not set UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE=y # UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4 is not set # UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8 is not set # UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT is not set UCLIBC_HAS_STDIO_GETC_MACRO=y UCLIBC_HAS_STDIO_PUTC_MACRO=y UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION=y # UCLIBC_HAS_FOPEN_LARGEFILE_MODE is not set # UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE is not set # UCLIBC_HAS_GLIBC_CUSTOM_STREAMS is not set UCLIBC_HAS_PRINTF_M_SPEC=y UCLIBC_HAS_ERRNO_MESSAGES=y # UCLIBC_HAS_SYS_ERRLIST is not set UCLIBC_HAS_SIGNUM_MESSAGES=y # UCLIBC_HAS_SYS_SIGLIST is not set UCLIBC_HAS_GNU_GETOPT=y UCLIBC_HAS_GNU_GETSUBOPT=y # # Big and Tall # UCLIBC_HAS_REGEX=y UCLIBC_HAS_REGEX_OLD=y UCLIBC_HAS_FNMATCH=y UCLIBC_HAS_FNMATCH_OLD=y # UCLIBC_HAS_WORDEXP is not set # UCLIBC_HAS_NFTW is not set # UCLIBC_HAS_FTW is not set # UCLIBC_HAS_FTS is not set UCLIBC_HAS_GLOB=y UCLIBC_HAS_GNU_GLOB=y # UCLIBC_HAS_UTMPX is not set # # Library Installation Options # RUNTIME_PREFIX="/usr/$(TARGET_ARCH)-linux-uclibc/" DEVEL_PREFIX="/usr/$(TARGET_ARCH)-linux-uclibc/usr/" MULTILIB_DIR="lib" # HARDWIRED_ABSPATH is not set # # Security options # # UCLIBC_HAS_ARC4RANDOM is not set # HAVE_NO_SSP is not set # UCLIBC_HAS_SSP is not set UCLIBC_BUILD_RELRO=y # UCLIBC_BUILD_NOW is not set UCLIBC_BUILD_NOEXECSTACK=y # # uClibc development/debugging options # CROSS_COMPILER_PREFIX="" UCLIBC_EXTRA_CFLAGS="" # DODEBUG is not set # DODEBUG_PT is not set # DOSTRIP is not set # DOASSERTS is not set # SUPPORT_LD_DEBUG is not set # SUPPORT_LD_DEBUG_EARLY is not set # UCLIBC_MALLOC_DEBUGGING is not set # UCLIBC_HAS_BACKTRACE is not set WARNINGS="-Wall" # EXTRA_WARNINGS is not set # DOMULTI is not set # UCLIBC_MJN3_ONLY is not set
_______________________________________________ uClibc mailing list [email protected] http://lists.busybox.net/mailman/listinfo/uclibc
