Don't create .eh_frame_hdr on shared lib bfd
authorAlan Modra <amodra@gmail.com>
Wed, 24 Dec 2014 11:37:42 +0000 (22:07 +1030)
committerAlan Modra <amodra@gmail.com>
Wed, 24 Dec 2014 13:17:56 +0000 (23:47 +1030)
commitca0694adf6d128c2feba16f6374954c191fb5edb
tree6c359b77f5abe8c9ad9117c824607ed4f6f04a82
parent854399ea9d0d5d5c14b4035bbc0adfe891f26a3d
Don't create .eh_frame_hdr on shared lib bfd

If no object files have .eh_frame, but some shared library does, then
ld creates a .eh_frame_hdr section using the shared library bfd.  This
is silly since shared library .eh_frame sections don't contribute to
the output .eh_frame and thus no .eh_frame_hdr is needed.

Also, the bfd section list and count is cleared for shared libraries,
and a zero section count used as a flag in lang_check to omit a call
to bfd_merge_private_bfd_data for shared libraries.  If we create a
section on a shared lib bfd then ld will wrongly attempt to merge the
shared library private bfd data.

PR 17742
* ld/emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Exclude
shared libraries in loop looking for .eh_frame sections.
Similarly for build-id loop.
ld/ChangeLog
ld/emultempl/elf32.em