Created attachment 25250 [details] Verbose linker output. When I try to build udev with gcc-4.6.1, the accelerometer module fails to link because of undefined references to sqrt, atan, etc. Unfortunately -lm is explicitly specified. If I remove -flto or -Wl,--as-needed, the module links successfully. Verbose linker output is attached.
$ cat test-flto.c #include <math.h> #include <stdio.h> int main() { printf("%le\n", gamma(42)); return 0; } $ gcc -Wl,--as-needed -flto test-flto.c -lm /tmp/ccXjDUDX.ltrans0.ltrans.o: In function `main': ccXjDUDX.ltrans0.o:(.text+0xd): undefined reference to `gamma' collect2: ld returned 1 exit status $ gcc -B/usr/lib/gold-ld/ -Wl,--as-needed -flto -o test-flto test-flto.c -lm does work
http://sourceware.org/bugzilla/show_bug.cgi?id=13201
Not a gcc bug.