There's some strange bug in glibc that triggers if you combine the
authorRob Landley <rob@landley.net>
Tue, 29 Aug 2006 21:46:10 +0000 (21:46 -0000)
committerRob Landley <rob@landley.net>
Tue, 29 Aug 2006 21:46:10 +0000 (21:46 -0000)
commit1fdd83f8979cff7875de53dfa3f99bd7d9ac838d
treed9fbbaa0b81a5f3610a434caf96a51c58a02d031
parent31e2c00ec3eb10dc09585cb6d693920432069da5
There's some strange bug in glibc that triggers if you combine the
--gc-sections linker flag with static linking.  If this happens, then
the "stdout" variable (used by printf() and such) will only work if stdout
is _not_ redirected.  I.E "./busybox" prints stuff, but "./busybox | cat"
does not produce any output.  (But even when redirected, "write(1,"blah",4);"
continues to work just fine.)

This is clearly a glibc bug, but to avoid triggering it I've moved the
--gc-sections flag so it only gets added when we're not statically linking.
If somebody would like to go poke Ulrich Drepper, you can trivially reproduce
this with a "hello world" program, ala:

  gcc -static -Wl,--gc-sections hello.c &&  (./a.out | cat)
Rules.mak