Alternative way to detemplate GotSection.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 18 May 2017 16:45:36 +0000 (16:45 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 18 May 2017 16:45:36 +0000 (16:45 +0000)
commita6465bbb726badf86e520d15d29b6a65a2d1007d
treeda6e6a0d2e88de46f878ca93d433ad7def4d8c1f
parent246c1c47ea6137b5b36352e84eadb3329d7fcba2
Alternative way to detemplate GotSection.

GetSection is a template because write calls relocate.

relocate has two parts. The non alloc code really has to be a
template, as it is looking a raw input file data.

The alloc part is only a template because of getSize.

This patch folds the value of getSize early, detemplates
getRelocTargetVA and splits relocate into a templated non alloc case
and a regular function for the alloc case. This has the nice advantage
of making sure we collect all the information we need for relocations
before getting to InputSection::relocateNonAlloc.

Since we know got is alloc, it can just call the function directly and
avoid the template.

llvm-svn: 303355
lld/ELF/InputSection.cpp
lld/ELF/InputSection.h
lld/ELF/Relocations.cpp
lld/ELF/SyntheticSections.cpp
lld/ELF/SyntheticSections.h
lld/ELF/Writer.cpp