https://sourceware.org/bugzilla/show_bug.cgi?id=17467

Alan Modra <amodra at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
                 CC|amodra at gmail dot com            |
           Assignee|unassigned at sourceware dot org   |amodra at gmail dot com

--- Comment #2 from Alan Modra <amodra at gmail dot com> ---
We don't do eh_frame editing for ld -r, ever since
https://sourceware.org/ml/binutils/2003-02/msg00471.html was applied.

What's happening here is that we have multiple copies of c++ code emitted in
comdat groups, the first one I looked at being
_ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_, but g++ does not emit
the .eh_frame info to the group.  If g++ did do this, as it should, then
duplicate .eh_frame info would be discarded along with the duplicate code
sections.  Instead we get one copy of the group after ld -r and multiple copies
of the .eh_frame info for the group.  That's bad because the "duplicate"
.eh_frame info may not exactly match the kept group code (it doesn't with the
example object files), and the .eh_frame_hdr lookup table will conspire to
choose the last set of .eh_frame info rather than the first (which corresponds
to the actual code, assuming a stable qsort).  So there is a nasty exception
handling bug lurking to bite someone.

-- 
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

Reply via email to