SORT_BY_INIT_PRIORITY
authorAlan Modra <amodra@gmail.com>
Wed, 25 Sep 2019 06:00:53 +0000 (15:30 +0930)
committerAlan Modra <amodra@gmail.com>
Wed, 25 Sep 2019 14:44:44 +0000 (00:14 +0930)
commit9a24a2763daa773328a788988048a7b3f344a548
tree7986f994def57ac9cd6296cbef133128c71aed05
parent6ba2ed48c8cb591c1ccac172be7f895f59080cfa
SORT_BY_INIT_PRIORITY

I was looking at the implementation of this script keyword today and
couldn't remember why we do what we do in get_init_priority, because
the comments explain how the init_priority is encoded but don't say
why it is necessary to extract the priority and sort on that.  So
after figuring out why (again), I wrote some more comments.

Then I simplified get_init_priority a little, adding some sanity
checking on the strtoul result.  This actually makes get_init_priority
support sorting by numerical suffix more generally, but I figure this
feature would be better as a new keyword (without the .ctors/.dtors
special case), so haven't documented the extension.

* ld.texi (SORT_BY_ALIGNMENT): Reword slightly.
(SORT_BY_INIT_PRIORITY): Elucidate.
* ldlang.c: Include limits.h.
(get_init_priority): Comment.  Change param to a section,
return an int.  Sanity check priority digits.  Support sorting
more sections with trailing digits.  Return -1 on error.
(compare_section): Adjust.
ld/ChangeLog
ld/ld.texi
ld/ldlang.c