Status of sparc in current git?

Rob Landley rob at landley.net
Sun Nov 1 22:37:36 UTC 2009


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
-------------- next part --------------
#
# 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


More information about the uClibc mailing list