mknod() broken with uclibc built with -O0

Denys Vlasenko vda.linux at googlemail.com
Thu Dec 11 01:02:07 UTC 2008


On Wednesday 10 December 2008 18:34, Tino Keitel wrote:
> Hi,
> 
> the mknod() syscall is broken in my ulibc if I compile with -O0. I
> discoverd this with uclibc 0.9.29 (not sure if 0.9.28 was also
> affected) and gcc 4.1, and it still applies to the current git of
> buildroot using uclibc 0.9.30 and gcc 4.3.2. The i386 architecture was
> used.
> 
> For the test, I use the following command. The busybox is the one from
> buildroot, and is therefore statically linked against the uclibc from
> buildroot.
> 
> $ strace ./bin/busybox mknod foobar c 10 63
> 
> With -O0, strace looks like this:
> 
> mknod("foobar", S_IFCHR|037746400666, makedev(2314, 104767)) = -1

Can you try smaller test program? A-la

#include <bare_minimum_for_bug_to_happen.h>
int main() {
	mknod("foobar", 0755, makedev(10,63));
	return 0;
}

If this works, add more stuff until it breaks.
Tell us what broke it. Show gcc -On -S results.
--
vda



More information about the uClibc mailing list