When debugging a C++ exception unwinding issue for Blackfin FDPIC format, I found a bug of Blackfin BFD FDPIC support. When linking, duplicate CIE will be removed from output .eh_frame section. But the relocations for them are not. When dynamic linker does these relocations, some contents in .eh_frame will be wrongly modified. This causes the exception unwinding failure. I attached a patch for it. But there are several points I'm not sure: 1. I saw this in elflink.c:elf_link_input_bfd () /* This is a reloc for a deleted entry or somesuch. Turn it into an R_*_NONE reloc, at the same offset as the last reloc. elf_eh_frame.c and elf_bfd_discard_info rely on reloc offsets being ordered. */ In my patch I just set the offset to zero. It seems works. I don't know if we need do the same. Alan: The comment was from you. Can you help me understand it? 2. In bfinfdpic_relocate_section () there are several calls to _bfd_elf_section_offset () before calling _bfinfdpic_add_dyn_reloc (). Only in one place the return value of _bfd_elf_section_offset () is checked in my patch. It seems works. But I'm not sure if we need add such check for all these calls. 3. Is it possible to not emit the reloc instead of set its type to R_*_NONE? Alex: I think FRV has the same issue. In the lasted release of redhat's frv toolchain from redhat's ftp, the bug is hidden since all dupilicated CIEs are not optimized away because there is CIE format incompatibility between gcc (3.4) and binutils (2.14). Thanks, Jie