crazy linker: Fix RELRO sharing with packed relocations.
Packed relative relocations do not currently participate in
relocation of shared RELRO pages into a service process's load
addresses. This undermines RELRO sharing, by reducing the
number of swapped RELRO pages (often to zero).
Fix by processing packed relative relocations a second time when
relocating shared RELRO pages. Also, tidy up and rationalize
some duplicated code through use of templates.
BUG=385553
Review URL: https://codereview.chromium.org/
1099253002
Cr-Commit-Position: refs/heads/master@{#326773}