Split the creation of program headers in a few steps.
authorRafael Espindola <rafael.espindola@gmail.com>
Wed, 10 Feb 2016 22:43:13 +0000 (22:43 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Wed, 10 Feb 2016 22:43:13 +0000 (22:43 +0000)
commit4fc6044a5ed9fd339f46d18980360a40c98b11d5
treeeaae0768e28509c193f5c8f1155f41d95ccce7fe
parentb4a5aa239c0484782899485d346c892fa05645ef
Split the creation of program headers in a few steps.

IMHO this makes the code easier to read and should help with linker
scripts.

This is strongly based on D16575. The main differences are:

We record a range of sections, not every section in a program header.

scanHeaders takes case of deciding what goes in every program header,
including PT_GNU_RELRO

We create dummy sections for the start of the file

With this, program header creation has 3 isolated stages:

Map sections to program headers.
Assign addresses to *sections*
Looking at sections find the address and size of each program header.

Thanks to George Rimar for the initial version.

llvm-svn: 260453
lld/ELF/OutputSections.h
lld/ELF/Writer.cpp