[Buildroot] uclibc build error for arm7tdmi with BR2_BINFMT_FLAT=y

Axel Lin axel.lin at ingics.com
Thu Sep 5 08:43:12 UTC 2013


Hi,

I have below settings:

BR2_BINFMT_FLAT=y
BR2_BINFMT_FLAT_ONE=y
BR2_ARM_CPU_HAS_THUMB=y
BR2_arm7tdmi=y
# BR2_USE_MMU is not set
BR2_PACKAGE_HOST_ELF2FLT=y

And below settings for uclibc:

# ARCH_USE_MMU is not set
ARCH_HAS_NO_SHARED=y
ARCH_HAS_NO_LDSO=y
# UCLIBC_FORMAT_ELF is not set
# UCLIBC_FORMAT_FDPIC_ELF is not set
# UCLIBC_FORMAT_DSBT_ELF is not set
UCLIBC_FORMAT_FLAT=y
# UCLIBC_FORMAT_FLAT_SEP_DATA is not set
# UCLIBC_FORMAT_SHARED_FLAT is not set

I got below build error while compiling uclibc for arm7tdmi:

>>> uclibc 0.9.33.2 Configuring
/usr/bin/make -j1 -C /opt/test/buildroot/buildroot/output/build/uclibc-0.9.33.2 ARCH="arm" CROSS_COMPILE="/opt/test/buildroot/buildroot/output/host/usr/bin/arm-buildroot-uclinux-uclibcgnueabi-" UCLIBC_EXTRA_CFLAGS=" " HOSTCC="/usr/bin/gcc" PREFIX=/opt/test/buildroot/buildroot/output/host/usr/arm-buildroot-uclinux-uclibcgnueabi/sysroot DEVEL_PREFIX=/usr/ RUNTIME_PREFIX=/opt/test/buildroot/buildroot/output/host/usr/arm-buildroot-uclinux-uclibcgnueabi/sysroot headers startfiles install_headers install_startfiles
make[1]: Entering directory `/opt/test/buildroot/buildroot/output/build/uclibc-0.9.33.2'
  MKDIR include/bits
  GEN include/bits/uClibc_config.h
  LN include/pthread.h
  LN include/semaphore.h
  LN include/bits/pthreadtypes.h
  LN include/fpu_control.h
  LN include/dl-osinfo.h
  LN include/hp-timing.h
  LN include/bits/byteswap-common.h
  LN include/bits/byteswap.h
  LN include/bits/cmathcalls.h
  LN include/bits/confname.h
  LN include/bits/dirent.h
  LN include/bits/dlfcn.h
  LN include/bits/elfclass.h
  LN include/bits/environments.h
  LN include/bits/epoll.h
  LN include/bits/errno.h
  LN include/bits/fenvinline.h
  LN include/bits/getopt.h
  LN include/bits/huge_valf.h
  LN include/bits/huge_vall.h
  LN include/bits/in.h
  LN include/bits/inf.h
  LN include/bits/initspin.h
  LN include/bits/inotify.h
  LN include/bits/ioctl-types.h
  LN include/bits/ioctls.h
  LN include/bits/ipc.h
  LN include/bits/kernel-features.h
  LN include/bits/kernel_sigaction.h
  LN include/bits/local_lim.h
  LN include/bits/locale.h
  LN include/bits/mathcalls.h
  LN include/bits/mathinline.h
  LN include/bits/mman-common.h
  LN include/bits/mman.h
  LN include/bits/mqueue.h
  LN include/bits/msq.h
  LN include/bits/nan.h
  LN include/bits/netdb.h
  LN include/bits/poll.h
  LN include/bits/posix1_lim.h
  LN include/bits/posix2_lim.h
  LN include/bits/posix_opt.h
  LN include/bits/resource.h
  LN include/bits/sched.h
  LN include/bits/select.h
  LN include/bits/sem.h
  LN include/bits/sigaction.h
  LN include/bits/sigcontext.h
  LN include/bits/siginfo.h
  LN include/bits/signalfd.h
  LN include/bits/signum.h
  LN include/bits/sigset.h
  LN include/bits/sigstack.h
  LN include/bits/sigthread.h
  LN include/bits/sockaddr.h
  LN include/bits/socket.h
  LN include/bits/stat.h
  LN include/bits/statfs.h
  LN include/bits/statvfs.h
  LN include/bits/stdio.h
  LN include/bits/stdio_lim.h
  LN include/bits/syscalls-common.h
  LN include/bits/termios.h
  LN include/bits/time.h
  LN include/bits/timerfd.h
  LN include/bits/types.h
  LN include/bits/typesizes.h
  LN include/bits/uClibc_alloc.h
  LN include/bits/uClibc_charclass.h
  LN include/bits/uClibc_clk_tck.h
  LN include/bits/uClibc_ctype.h
  LN include/bits/uClibc_fpmax.h
  LN include/bits/uClibc_local_lim.h
  LN include/bits/uClibc_locale.h
  LN include/bits/uClibc_mutex.h
  LN include/bits/uClibc_page.h
  LN include/bits/uClibc_pthread.h
  LN include/bits/uClibc_stdio.h
  LN include/bits/uClibc_touplow.h
  LN include/bits/uClibc_uintmaxtostr.h
  LN include/bits/uClibc_uwchar.h
  LN include/bits/uClibc_va_copy.h
  LN include/bits/uio.h
  LN include/bits/ustat.h
  LN include/bits/utmp.h
  LN include/bits/utmpx.h
  LN include/bits/utsname.h
  LN include/bits/waitflags.h
  LN include/bits/waitstatus.h
  LN include/bits/wchar.h
  LN include/bits/xopen_lim.h
  LN include/bits/arm_asm.h
  LN include/bits/arm_bx.h
  LN include/bits/armsigctx.h
  LN include/bits/atomic.h
  LN include/bits/endian.h
  LN include/bits/fcntl.h
  LN include/bits/fenv.h
  LN include/bits/huge_val.h
  LN include/bits/kernel_stat.h
  LN include/bits/kernel_types.h
  LN include/bits/mathdef.h
  LN include/bits/setjmp.h
  LN include/bits/shm.h
  LN include/bits/sigcontextinfo.h
  LN include/bits/stackinfo.h
  LN include/bits/syscalls.h
  LN include/bits/uClibc_arch_features.h
  LN include/bits/wordsize.h
  LN include/sys/acct.h
  LN include/sys/epoll.h
  LN include/sys/eventfd.h
  LN include/sys/inotify.h
  LN include/sys/prctl.h
  LN include/sys/ptrace.h
  LN include/sys/signalfd.h
  LN include/sys/timerfd.h
  LN include/sys/elf.h
  LN include/sys/io.h
  LN include/sys/procfs.h
  LN include/sys/ucontext.h
  LN include/sys/user.h
  MKDIR libm/arm
  MKDIR lib
  AS lib/crt1.o -DSTATIC -DNDEBUG -D__ASSEMBLER__ -DL_crt1
  AS lib/crti.o -DSTATIC -DNDEBUG -D__ASSEMBLER__
  AS lib/crtn.o -DSTATIC -DNDEBUG -D__ASSEMBLER__
  HOSTCC extra/scripts/unifdef
  INSTALL include -> /opt/test/buildroot/buildroot/output/host/usr/arm-buildroot-uclinux-uclibcgnueabi/sysroot/usr/include
install -m 644 ./lib/crt1.o ./lib/crti.o ./lib/crtn.o   /opt/test/buildroot/buildroot/output/host/usr/arm-buildroot-uclinux-uclibcgnueabi/sysroot/usr/lib//
make[1]: Leaving directory `/opt/test/buildroot/buildroot/output/build/uclibc-0.9.33.2'
/opt/test/buildroot/buildroot/output/host/usr/bin/arm-buildroot-uclinux-uclibcgnueabi-gcc -nostdlib -nostartfiles -shared -x c /dev/null -o /opt/test/buildroot/buildroot/output/host/usr/arm-buildroot-uclinux-uclibcgnueabi/sysroot/usr/lib/libc.so
ld (ld-elf2flt): -shared used without passing a shared library ID
collect2: ld returned 1 exit status
make: *** [/opt/test/buildroot/buildroot/output/build/uclibc-0.9.33.2/.stamp_configured] Error 1

Compare the build log with blackfin build (as below):

  MKDIR libm/bfin
  MKDIR libubacktrace/bfin
  MKDIR lib
  AS lib/crt1.o -DSTATIC -DNDEBUG -D__UCLIBC_UNDERSCORES__ -D__ASSEMBLER__ -DL_crt1
  AS lib/crti.o -DSTATIC -DNDEBUG -D__UCLIBC_UNDERSCORES__ -D__ASSEMBLER__
  AS lib/crtn.o -DSTATIC -DNDEBUG -D__UCLIBC_UNDERSCORES__ -D__ASSEMBLER__
  HOSTCC extra/scripts/unifdef
  INSTALL include -> /opt/test/buildroot/buildroot/output/host/usr/bfin-buildroot-uclinux-uclibc/sysroot/usr/include
install -m 644 ./lib/crt1.o ./lib/crti.o ./lib/crtn.o   /opt/test/buildroot/buildroot/output/host/usr/bfin-buildroot-uclinux-uclibc/sysroot/usr/lib//
make[1]: Leaving directory `/opt/test/buildroot/buildroot/output/build/uclibc-0.9.33.2'
/opt/test/buildroot/buildroot/output/host/usr/bin/bfin-buildroot-uclinux-uclibc-gcc -nostdlib -nostartfiles -shared -x c /dev/null -o /opt/test/buildroot/buildroot/output/host/usr/bfin-buildroot-uclinux-uclibc/sysroot/usr/lib/libc.so
/opt/test/buildroot/buildroot/output/host/usr/bin/bfin-buildroot-uclinux-uclibc-gcc -nostdlib -nostartfiles -shared -x c /dev/null -o /opt/test/buildroot/buildroot/output/host/usr/bfin-buildroot-uclinux-uclibc/sysroot/usr/lib/libm.so
touch /opt/test/buildroot/buildroot/output/build/uclibc-0.9.33.2/.stamp_configured

I have no idea why blackfin build can pass the compilation but arm build fails.
I'm still trying to figure out this problem.
I'd appreciate if someone can give me some advice/comments on this issue.

Thanks,
Axel




More information about the buildroot mailing list