On Thu, Jun 21, 2012 at 08:18:39PM +0930, Alan Modra wrote: > Linker bug. That's not a sibling call, but a normal function return > via an out-of-line register restore function. I couldn't see how this might be occurring, then I remembered the kernel has this horrible practise of using ld -r to package object files. So linker generated functions might be munged together with other functions. Does this help? (It won't if the kernel is providing its own save/restore functions.) Index: bfd/elf64-ppc.c =================================================================== RCS file: /cvs/src/src/bfd/elf64-ppc.c,v retrieving revision 1.387 diff -u -p -r1.387 elf64-ppc.c @@ -6494,9 +6494,10 @@ ppc64_elf_func_desc_adjust (bfd *obfd AT /* Provide any missing _save* and _rest* functions. */ htab->sfpr->size = 0; - for (i = 0; i < sizeof (funcs) / sizeof (funcs[0]); i++) - if (!sfpr_define (info, &funcs[i])) - return FALSE; + if (!info->relocatable) + for (i = 0; i < sizeof (funcs) / sizeof (funcs[0]); i++) + if (!sfpr_define (info, &funcs[i])) + return FALSE; elf_link_hash_traverse (&htab->elf, func_desc_adjust, info); -- Alan Modra Australia Development Lab, IBM -- To unsubscribe from this list: send the line "unsubscribe linux-next" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html