Date: Fri, 8 Jun 2012 13:27:31 +0800 From: orc <orc@...server.ru> To: musl@...ts.openwall.com Subject: Re: bug? sysinfo() and getopt_long() misbehavior On Thu, 7 Jun 2012 23:12:43 -0400 Rich Felker <dalias@...ifal.cx> wrote: > On Fri, Jun 08, 2012 at 12:51:48AM +0800, orc wrote: > > I have built a musl-enabled system and encountered some bugs: > > > > - sysinfo() incorrectly works. The result is busybox' free > > misbehaving: > > Thanks for the catch. Apparently the structure definition was bogus > and was not intended for direct use with the linux sysinfo syscall. > It's fixed in git. Thanks! > > > - (did not investigated properly) possible getopt_long() > > misbehavior, or just miscompile. The result is that iptables and > > gnu sed misbehaving at command line arguments: > > % sed -i '/test/d' ttnosuchfile > > sed: can't find label for jump to `tnosuchfile' > > My GNU sed build does not exhibit this behavior. It's linked with an > older musl, but the getopt code has not changed. Is it possible you > did anything odd building musl (editing the makefile/cflags)? Does the > same happen if you static link sed? If your answers to these questions > suggest a problem in musl, I'll rebuild sed and see if I can reproduce > it. > > > % sed '/test/d' -i ttnosuchfile > > sed: can't read -i: No such file or directory > > sed: can't read ttnosuchfile: No such file or directory > > This is to be expected. Options must come before non-option arguments. > The glibc behavior to the contrary is broken and non-conformant. Yes, I expected that glibc encourages wrong behavior. Sorry, that was my fault: I actually *cross-compiled* sed and it's autohell misdetected something during it (as it usually happens). When native-compiling, problem gone away. (I think the same will be with e2fsprogs, their cross-compiled versions die with GPF on target) > > > # iptables -vnL > > iptables v18.104.22.168: unknown arguments found on commandline > > Try `iptables -h' or 'iptables --help' for more information. > > # iptables --version > > iptables v22.214.171.124: unknown arguments found on commandline > > Try `iptables -h' or 'iptables --help' for more information. > > > > Both sed and iptables were compiled with -D_GNU_SOURCE defined. > > > > Unfortunately I don't actually know how to fix these two. > > I'm suspecting something is broken with respect to dynamic linking... > Are you using an old version of binutils? Did you remove or replace > -Bsymbolic-functions with something else? Binutils 2.20, musl compiled with -Bsymbolic-functions. But statically or dynamically linked iptables still rejects to accept arguments. It required ugly fix to work, mostly same as iproute2, removing some non-conformant extensions, correct headers, maybe there is a fault. It also expects somewhere that we have glibc (#ifdef __GLIBC__) headers. Maybe it's code is non-conformant in whole. I will try to see where it fails on host. > > Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.