Something seems to be wrong with the powerpc copy relocations. Attached is a binary for testing (qemu-ppc works fine). It is compiled from #include extern char **environ; int main(int argc, char **argv) { printf("%p %p\n", environ, &argv[argc + 1]); return 0; } Output before dynamic linker overhaul: 0xf6f4f830 0xf6f4f830 and after: 0 0xf6f4f830 It seems to me that the dynamic linker indeed copies environ, which is 0 at that point, but that __init_libc uses the old location of environ. Felix