|
View:
New views
3 Messages
—
Rating Filter:
Alert me
|
|
|
Status of sparc in current git?Somebody on IRC (skalpren?) told me that sparc works for them in current git-
master, and even sent me the .config they were using, so I tried it. Built my standard FWL setup for sparc using uClibc-git, fired it up under qemu, and trying to boot a dynamically linked root filesystem under qemu-system-sparc did this: [ 3.692000] Freeing unused kernel memory: 124k freed /bin/sh: symbol '_dl_loaded_modules': can't resolve symbol /bin/sh: symbol '_dl_app_init_array': can't resolve symbol [ 4.040000] Kernel panic - not syncing: Attempted to kill init! But then I never could get dynamic linking to work on sparc, so that's not much change there. So I went back to static linking everything, and if I say init=/bin/ash I can get a shell prompt, and even do ls -l without a bus error (which is an improvement over the last release), although the dates are strange: / # ls -l lrwxrwxrwx 1 root root 7 Nov ?? 2009 bin -> usr/bin drwxr-xr-x 2 root root 30 Nov ?? 2009 dev lrwxrwxrwx 1 root root 7 Nov ?? 2009 etc -> usr/etc drwxr-xr-x 2 root root 3 Nov ?? 2009 home lrwxrwxrwx 1 root root 7 Nov ?? 2009 lib -> usr/lib drwxr-xr-x 2 root root 3 Nov ?? 2009 mnt drwxr-xr-x 2 root root 3 Nov ?? 2009 proc lrwxrwxrwx 1 root root 8 Nov ?? 2009 sbin -> usr/sbin drwxr-xr-x 2 root root 3 Nov ?? 2009 sys drwxr-xr-x 2 root root 3 Nov ?? 2009 tmp drwxr-xr-x 14 root root 214 Nov ?? 2009 usr And lots of little weird malfunctions: # mount -t tmpfs /tmp /tmp # ls /tmp ls: can't open '/tmp': Cannot allocate memory And from playing around with distcc: distcc[28] (dcc_ignore_sigpipe) Warning: signal(SIGPIPE, ignore) failed: Invalid argument distcc[29] (dcc_ignore_sigpipe) Warning: signal(SIGPIPE, default) failed: Invalid argument (I note that gcc native doesn't work either, it says hello world has an undefined reference to "main", which is not the case. It seems to think the source file I'm feeding it is zero bytes long?) Trying to run my standard init script (wich works on arm, mips, powerpc, sh4, and so on) goes nuts and hangs: [ 3.656000] Freeing unused kernel memory: 124k freed mdev: /sys/class: Cannot allocate memory [ 4.456000] ifconfig[24]: Unimplemented SPARC system call 97 ifconfig: socket(AF_INET): Function not implemented [ 4.520000] route[25]: Unimplemented SPARC system call 97 route: socket(AF_INET): Function not implemented /usr/sbin/init.sh: command_substitute: cannot duplicate pipe as fd 1: Bad file descriptor This is with current uclibc git-master, and the attached config. My question is: who here has gotten sparc to work, and if so what did you do? (It's possible that qemu is just nuts, but it _does_ boot to a shell prompt and I'm told it runs Slowaris, so that seems unlikely to give this set of symptoms...) Rob -- Latency is more important than throughput. It's that simple. - Linus Torvalds # # Automatically generated make config: don't edit # Version: 0.9.30.1 # Sun Nov 1 15:55:32 2009 # # 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 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_HAS_MMU=y ARCH_USE_MMU=y UCLIBC_HAS_FLOATS=y UCLIBC_HAS_FPU=y DO_C99_MATH=y 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 is not set # 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_FILE_SUPPORT is not set LDSO_BASE_FILENAME="ld-uClibc.so" UCLIBC_STATIC_LDCONFIG=y LDSO_RUNPATH=y UCLIBC_CTOR_DTOR=y # LDSO_GNU_HASH_SUPPORT is not set # HAS_NO_THREADS is not set UCLIBC_HAS_THREADS=y # PTHREADS_DEBUG_SUPPORT is not set LINUXTHREADS_OLD=y 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_HAS_STUBS is not set UCLIBC_HAS_SHADOW=y # UCLIBC_HAS_PROGRAM_INVOCATION_NAME is not set UCLIBC_HAS_PTY=y ASSUME_DEVPTS=y UNIX98PTY_ONLY=y # UCLIBC_HAS_GETPT is not set 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" # # 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 # # 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_FTW is not set UCLIBC_HAS_GLOB=y UCLIBC_HAS_GNU_GLOB=y # # Library Installation Options # SHARED_LIB_LOADER_PREFIX="$(RUNTIME_PREFIX)lib" RUNTIME_PREFIX="/usr/$(TARGET_ARCH)-linux-uclibc/" DEVEL_PREFIX="/usr/$(TARGET_ARCH)-linux-uclibc/usr/" HARDWIRED_ABSPATH="y" # # 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 WARNINGS="-Wall" # EXTRA_WARNINGS is not set # DOMULTI is not set # UCLIBC_MJN3_ONLY is not set _______________________________________________ uClibc mailing list uClibc@... http://lists.busybox.net/mailman/listinfo/uclibc |
|
|
Re: Status of sparc in current git?On 11/01/2009 02:37 PM, Rob Landley wrote:
> Somebody on IRC (skalpren?) told me that sparc works for them in current git- > master, and even sent me the .config they were using, so I tried it. It was me. > distcc[28] (dcc_ignore_sigpipe) Warning: signal(SIGPIPE, ignore) failed: > Invalid argument > distcc[29] (dcc_ignore_sigpipe) Warning: signal(SIGPIPE, default) failed: > Invalid argument The pipe syscall was broken on 0.9.30.1 but I definitely fixed it in git, so this looks suspiciously like you were somehow running the old release? Otherwise I don't really have an explanation. It was fixed in commit c033aa2af > [ 4.456000] ifconfig[24]: Unimplemented SPARC system call 97 > ifconfig: socket(AF_INET): Function not implemented > [ 4.520000] route[25]: Unimplemented SPARC system call 97 > route: socket(AF_INET): Function not implemented > /usr/sbin/init.sh: command_substitute: cannot duplicate pipe as fd 1: Bad > file descriptor Most socket syscalls on sparc were also broken in 0.9.30.1. (because the kernel expects all of them to come through socketcall, but defines the _NR_* for the regular ones anyways). This was fixed in commit 640f4d29e Can you look at your source and verify that you indeed have these fixes? -Austin _______________________________________________ uClibc mailing list uClibc@... http://lists.busybox.net/mailman/listinfo/uclibc |
|
|
Re: Status of sparc in current git?On Monday 02 November 2009 10:12:29 Austin Foxley wrote:
> On 11/01/2009 02:37 PM, Rob Landley wrote: > > Somebody on IRC (skalpren?) told me that sparc works for them in current > > git- master, and even sent me the .config they were using, so I tried it. > > It was me. Sorry for the delay, I had to get an FWL release out and then track down and revert commit e0ac4efbdb4 (which makes _nothing_ work with my config, and has been in the repository since October 22). That actually seems to make most of it behave. It looks like most of what's left is either the kernel, qemu, or some really subtle toolchain mismatch: / # cat /proc/mounts rootfs / rootfs rw 0 0 /dev/root / squashfs ro,relatime 0 0 sys /sys sysfs rw,relatime 0 0 dev /dev tmpfs rw,noatime 0 0 proc /proc proc rw,relatime 0 0 / # ls -l /dev ls: can't open '/dev': Cannot allocate memory / # ls -ld /dev drwxrwxrwt 2 root root 40 Jan ?? ??:?? /dev / # ls -l /sys Illegal instruction It's not a happy system, but it is _sort_ of running... Well, statically linked, anyway: [ 3.700000] Freeing unused kernel memory: 124k freed /bin/sh: symbol '_dl_loaded_modules': can't resolve symbol /bin/sh: symbol '_dl_app_init_array': can't resolve symbol [ 4.052000] Kernel panic - not syncing: Attempted to kill init! Dynamic linking still seems unhappy, need to work out why... > > distcc[28] (dcc_ignore_sigpipe) Warning: signal(SIGPIPE, ignore) failed: > > Invalid argument > > distcc[29] (dcc_ignore_sigpipe) Warning: signal(SIGPIPE, default) failed: > > Invalid argument > > The pipe syscall was broken on 0.9.30.1 but I definitely fixed it in > git, so this looks suspiciously like you were somehow running the old > release? Otherwise I don't really have an explanation. It was fixed in > commit c033aa2af With this morning's -git (and e0ac4efbdb4 reverted) I'm not getting that. > Can you look at your source and verify that you indeed have these fixes? It seems to have improved since last time I checked. > -Austin Thanks, Rob -- Latency is more important than throughput. It's that simple. - Linus Torvalds _______________________________________________ uClibc mailing list uClibc@... http://lists.busybox.net/mailman/listinfo/uclibc |
| Free embeddable forum powered by Nabble | Forum Help |