http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55431
--- Comment #2 from Rich Felker <bugdal at aerifal dot cx> 2012-12-09 02:37:19 UTC --- The ABI issue is a dependency on an undocumented part of glibc's ABI behavior -- I don't see anywhere it's documented that __libc_stack_end points at "argc" (i.e. the original place the stack pointer points to on program entry), just some point past the end of the stack, and thus it's conceivable that even in glibc it could change to point somewhere else. In any case, it's a gratuitous dependency on glibc internals. The logic error issue (assuming the initial environ array is still intact) is of course an outright observable bug even without any incompatible changes at the libc level. Do you have any idea why this code was added to begin with? It seems completely unnecessary.