Hi, Lance Fredrickson wrote,
Using uclibc-ng 1.0.18, binaries linked against dynamic libc.so seems to work just fine. Binaries created completely statically are non-responsive, and freeze up on the console. A few binaries I've tried are openvpn, tinc, transmission-daemon. I have to send SIGKILL to terminate the process. A simple hello world did compile and run fine though, so possibly having to do with additional functionality placed into libc.a.
Here's a strace of one binary if that offers any insight.
root@R7000:~/src/tinc-1.1pre14/src# strace ./tinc --version execve("./tinc", ["./tinc", "--version"], [/* 24 vars */]) = 0 brk(NULL) = 0x1ef000 brk(0x1efcb4) = 0x1efcb4 set_tls(0x1ef490, 0x1c4220, 0x1e9418, 0x1e8bd8, 0x4) = 0 set_tid_address(0x1ef068) = 9961 set_robust_list(0x1ef070, 12) = -1 ENOSYS (Function not implemented) rt_sigaction(SIGRTMIN, {0x165014, [], SA_RESTORER|SA_SIGINFO, 0x14f058}, NULL, 8) = 0 rt_sigaction(SIGRT_1, {0x164ea0, [], SA_RESTORER|SA_RESTART|SA_SIGINFO, 0x14f058}, NULL, 8) = 0 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 ugetrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0 open("/dev/urandom", O_RDONLY) = 3 read(3, "\\177t)", 4) = 4 close(3) = 0 ioctl(0, TCGETS, {B38400 opost isig icanon echo ...}) = 0 ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0 rt_sigprocmask(SIG_SETMASK, ~[ILL TRAP BUS FPE SEGV RTMIN RT_1], [], 8) = 0 rt_sigaction(SIGILL, {0x98734, ~[ILL TRAP BUS FPE SEGV RTMIN RT_1], SA_RESTORER, 0x14f04c}, {SIG_DFL, [], 0}, 8) = 0 rt_sigprocmask(SIG_BLOCK, NULL, ~[ILL TRAP BUS FPE KILL SEGV STOP RTMIN RT_1], 8) = 0 --- SIGILL {si_signo=SIGILL, si_code=ILL_ILLOPC, si_addr=0x98800} --- futex(0x1e5df0, FUTEX_WAIT_PRIVATE, 2, NULL
Hmm, illegal instruction. Could you show gcc -v and sent me the binary, please. Which architecture exactly?
best regards Waldemar