>> bfd/elf32-hppa.c: >> 3568 /* Make sure we can reach the stub. */ >> 3569 if (max_branch_offset !=3D 0 >> 3570 && value + addend + max_branch_offset >=3D 2*max_branch_offset) >> 3571 { >> 3572 (*_bfd_error_handler) >> 3573 (_("%B(%A+0x%lx): cannot reach %s, recompile with >> -ffunction-sections"), >> 3574 input_bfd, >> 3575 input_section, >> 3576 offset, >> 3577 hsh->bh_root.string); >> 3578 bfd_set_error (bfd_error_bad_value); >> 3579 return bfd_reloc_notsupported; >> 3580 } >> > As soon as you step into the error handler, you change the function > context. So, there is no local symbol hsh there. It's also possible > the symbol hsh is optimized away, particularly because of the way it's > derived fro the argument bh. Ok, I have recompiled binutils with -O0: Breakpoint 1, final_link_relocate (input_section=0x105770, contents=0x43661008 "cows can fly", rela=0x13fae8, value=18446744073709532028, htab=0x8df70, sym_sec=0x105770, hh=0x0, info=0x7b890) at /var/tmp/portage/sys-devel/binutils-2.19.51.0.2/work/binutils-2.19.51.0.2/bfd/elf32-hppa.c:3572 3572 (*_bfd_error_handler) (gdb) info locals insn = -2021646334 r_type = 8 orig_r_type = 8 howto = (const struct reloc_howto_struct *) 0x403fb128 r_format = 12 r_field = e_fsel -> input_bfd = (bfd *) 0xc3460 -> offset = 3204 max_branch_offset = 8192 hit_data = (bfd_byte *) 0x43661c8c "\207\200 \002\b\017\002B\b\020\002^è@À" addend = -8 location = 269536388 -> hsh = (struct elf32_hppa_stub_hash_entry *) 0x933b8 val = 0 (gdb) print hsh->bh_root.string $1 = 0x13919a8 "000000b2_b2:46+4068" (gdb) print input_section $2 = (asection *) 0x105770 Hm, they are not NULL. ld segfaults on the next line again. -- To unsubscribe from this list: send the line "unsubscribe linux-parisc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html