ehdr_start twiddles
authorAlan Modra <amodra@gmail.com>
Fri, 24 Aug 2018 08:07:53 +0000 (17:37 +0930)
committerAlan Modra <amodra@gmail.com>
Fri, 24 Aug 2018 08:55:22 +0000 (18:25 +0930)
commit772758ac42a5717d2c2043cc36aa6600c2bfc120
treef44b1604e7272869d5d73fc8cb53cf1ee0c29f94
parent4575aaa96412f01f6158057aa602312360c5b6e4
ehdr_start twiddles

We force __ehdr_start to defined in before_allocation, then restore
the type and a union after dynamic symbols have been allocated.
The union contains a number of structs, all starting with a "next"
pointer, and various fields depending on the symbol type.  The old
code restored the entire union, but it isn't necessary to restore the
"next" pointer, and in fact it could be wrong if __ehdr_start happened
to be last on the list and some symbols were added before restoring.

* emultempl/elf32.em (before_allocation): Don't restore
__ehdr_start u.*.next pointer.
ld/ChangeLog
ld/emultempl/elf32.em