https://sourceware.org/bugzilla/show_bug.cgi?id=24685
Jim Wilson <wilson at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2019-06-25 CC| |wilson at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Jim Wilson <wilson at gcc dot gnu.org> --- Looks like the problem is in riscv_elf_finish_dynamic_symbol where we have /* If the symbol is weak, we do need to clear the value. Otherwise, the PLT entry would provide a definition for the symbol even if the symbol wasn't defined anywhere, and so the symbol would never be NULL. */ if (!h->ref_regular_nonweak) sym->st_value = 0; The well maintained targets all have check for !h->pointer_equality_needed in addition to or instead of the !h->ref_regular_nonweak check. It looks like this pointer_equality_needed check is missing from a lot of ports, but maybe not all of them support linux shared libraries. So we need code to set h->pointer_equality_needed correctly based on relocs seen, and then a simple check to clear sym->st_value if pointer_equality_needed is zero. -- You are receiving this mail because: You are on the CC list for the bug. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils